From 9bfd2490a75017a78d969ce8812d61379fcd3633 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Thu, 11 Aug 2005 12:47:24 +0000 Subject: [PATCH] skip_Tuple() now skips chains of tuple, which can arise after inlining small functions [r6393] --- ir/ir/irnode.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index 99287ddaf..bb4ac8047 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -2055,6 +2055,7 @@ skip_Tuple (ir_node *node) { if (!get_opt_normalize()) return node; +restart: node = skip_Id(node); if (get_irn_op(node) == op_Proj) { pred = skip_Id(get_Proj_pred(node)); @@ -2062,17 +2063,21 @@ skip_Tuple (ir_node *node) { /* * Looks strange but calls get_irn_op() only once - * most often cases. + * in most often cases. */ if (op == op_Proj) { /* nested Tuple ? */ pred = skip_Id(skip_Tuple(pred)); op = get_irn_op(pred); - if (op == op_Tuple) - return get_Tuple_pred(pred, get_Proj_proj(node)); + if (op == op_Tuple) { + node = get_Tuple_pred(pred, get_Proj_proj(node)); + goto restart; + } + } + else if (op == op_Tuple) { + node = get_Tuple_pred(pred, get_Proj_proj(node)); + goto restart; } - else if (op == op_Tuple) - return get_Tuple_pred(pred, get_Proj_proj(node)); } return node; } -- 2.20.1