From: Götz Lindenmaier Date: Mon, 11 Jul 2005 09:35:27 +0000 (+0000) Subject: bugfix: now also supports Tuple nodes. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=bb5d181d54fe7325f852ad0c99de920937102827;p=libfirm bugfix: now also supports Tuple nodes. [r6217] --- diff --git a/ir/ana/irsimpletype.c b/ir/ana/irsimpletype.c index dc14cea34..0135842db 100644 --- a/ir/ana/irsimpletype.c +++ b/ir/ana/irsimpletype.c @@ -61,6 +61,8 @@ static type* compute_irn_type(ir_node *n); static type *find_type_for_Proj(ir_node *n) { type *tp; + + /* Avoid nested Tuples. */ ir_node *pred = skip_Tuple(get_Proj_pred(n)); ir_mode *m = get_irn_mode(n); @@ -83,6 +85,8 @@ static type *find_type_for_Proj(ir_node *n) { } else if (get_irn_op(pred_pred) == op_Call) { type *mtp = get_Call_type(pred_pred); tp = get_method_res_type(mtp, get_Proj_proj(n)); + } else if (get_irn_op(pred_pred) == op_Tuple) { + assert(0 && "Encountered nested Tuple"); } else { VERBOSE_UNKNOWN_TYPE(("Proj %ld from Proj from ??: unknown type\n", get_irn_node_nr(n))); tp = firm_unknown_type; @@ -112,6 +116,9 @@ static type *find_type_for_Proj(ir_node *n) { tp = firm_unknown_type; } } break; + case iro_Tuple: { + tp = compute_irn_type(get_Tuple_pred(pred, get_Proj_proj(n))); + } break; default: tp = compute_irn_type(pred); } @@ -226,7 +233,7 @@ static type *find_type_for_node(ir_node *n) { if (tp1 == tp2) { tp = tp1; break; } - if (get_firm_verbosity() > 1) { + if (get_firm_verbosity() > 55) { // Do not commit 55! should be 1. VERBOSE_UNKNOWN_TYPE(("Phi %ld with two different types: %s, %s: unknown type.\n", get_irn_node_nr(n), get_type_name(tp1), get_type_name(tp2))); } @@ -313,7 +320,7 @@ static type *find_type_for_node(ir_node *n) { tp = phi_cycle_type; break; } - if (get_firm_verbosity() > 1) { + if (get_firm_verbosity() > 55) { VERBOSE_UNKNOWN_TYPE(("Binop %ld with two different types: %s, %s: unknown type \n", get_irn_node_nr(n), get_type_name(tp1), get_type_name(tp2))); }