Commit a8e15f90 by Richard Biener Committed by Richard Biener

tree-ssa-pre.c (get_representative_for): Make sure to return the value number of SSA names.

2016-07-15  Richard Biener  <rguenther@suse.de>

	* tree-ssa-pre.c (get_representative_for): Make sure to return
	the value number of SSA names.
	(phi_translate_1): get_representative_for cannot return NULL.
	(do_pre_regular_insertion): Remove redundant call to
	fully_constant_expression.
	(do_pre_partial_partial_insertion): Likewise.

From-SVN: r238370
parent ddbbcb19
2016-07-15 Richard Biener <rguenther@suse.de>
* tree-ssa-pre.c (get_representative_for): Make sure to return
the value number of SSA names.
(phi_translate_1): get_representative_for cannot return NULL.
(do_pre_regular_insertion): Remove redundant call to
fully_constant_expression.
(do_pre_partial_partial_insertion): Likewise.
2016-07-15 Bin Cheng <bin.cheng@arm.com> 2016-07-15 Bin Cheng <bin.cheng@arm.com>
* tree-scalar-evolution.c (simple_iv_with_niters): New funcion. * tree-scalar-evolution.c (simple_iv_with_niters): New funcion.
......
...@@ -1365,7 +1365,7 @@ get_representative_for (const pre_expr e) ...@@ -1365,7 +1365,7 @@ get_representative_for (const pre_expr e)
switch (e->kind) switch (e->kind)
{ {
case NAME: case NAME:
return PRE_EXPR_NAME (e); return VN_INFO (PRE_EXPR_NAME (e))->valnum;
case CONSTANT: case CONSTANT:
return PRE_EXPR_CONSTANT (e); return PRE_EXPR_CONSTANT (e);
case NARY: case NARY:
...@@ -1380,7 +1380,7 @@ get_representative_for (const pre_expr e) ...@@ -1380,7 +1380,7 @@ get_representative_for (const pre_expr e)
{ {
pre_expr rep = expression_for_id (i); pre_expr rep = expression_for_id (i);
if (rep->kind == NAME) if (rep->kind == NAME)
return PRE_EXPR_NAME (rep); return VN_INFO (PRE_EXPR_NAME (rep))->valnum;
else if (rep->kind == CONSTANT) else if (rep->kind == CONSTANT)
return PRE_EXPR_CONSTANT (rep); return PRE_EXPR_CONSTANT (rep);
} }
...@@ -1448,12 +1448,7 @@ phi_translate_1 (pre_expr expr, bitmap_set_t set1, bitmap_set_t set2, ...@@ -1448,12 +1448,7 @@ phi_translate_1 (pre_expr expr, bitmap_set_t set1, bitmap_set_t set2,
leader = find_leader_in_sets (op_val_id, set1, set2); leader = find_leader_in_sets (op_val_id, set1, set2);
result = phi_translate (leader, set1, set2, pred, phiblock); result = phi_translate (leader, set1, set2, pred, phiblock);
if (result && result != leader) if (result && result != leader)
{ newnary->op[i] = get_representative_for (result);
tree name = get_representative_for (result);
if (!name)
return NULL;
newnary->op[i] = name;
}
else if (!result) else if (!result)
return NULL; return NULL;
...@@ -1543,19 +1538,15 @@ phi_translate_1 (pre_expr expr, bitmap_set_t set1, bitmap_set_t set2, ...@@ -1543,19 +1538,15 @@ phi_translate_1 (pre_expr expr, bitmap_set_t set1, bitmap_set_t set2,
} }
op_val_id = VN_INFO (op[n])->value_id; op_val_id = VN_INFO (op[n])->value_id;
leader = find_leader_in_sets (op_val_id, set1, set2); leader = find_leader_in_sets (op_val_id, set1, set2);
if (!leader)
break;
opresult = phi_translate (leader, set1, set2, pred, phiblock); opresult = phi_translate (leader, set1, set2, pred, phiblock);
if (!opresult) if (opresult && opresult != leader)
break;
if (opresult != leader)
{ {
tree name = get_representative_for (opresult); tree name = get_representative_for (opresult);
if (!name)
break;
changed |= name != op[n]; changed |= name != op[n];
op[n] = name; op[n] = name;
} }
else if (!opresult)
break;
} }
if (n != 3) if (n != 3)
{ {
...@@ -3198,7 +3189,6 @@ do_pre_regular_insertion (basic_block block, basic_block dom) ...@@ -3198,7 +3189,6 @@ do_pre_regular_insertion (basic_block block, basic_block dom)
break; break;
} }
eprime = fully_constant_expression (eprime);
vprime = get_expr_value_id (eprime); vprime = get_expr_value_id (eprime);
edoubleprime = bitmap_find_leader (AVAIL_OUT (bprime), edoubleprime = bitmap_find_leader (AVAIL_OUT (bprime),
vprime); vprime);
...@@ -3357,7 +3347,6 @@ do_pre_partial_partial_insertion (basic_block block, basic_block dom) ...@@ -3357,7 +3347,6 @@ do_pre_partial_partial_insertion (basic_block block, basic_block dom)
break; break;
} }
eprime = fully_constant_expression (eprime);
vprime = get_expr_value_id (eprime); vprime = get_expr_value_id (eprime);
edoubleprime = bitmap_find_leader (AVAIL_OUT (bprime), vprime); edoubleprime = bitmap_find_leader (AVAIL_OUT (bprime), vprime);
avail[pred->dest_idx] = edoubleprime; avail[pred->dest_idx] = edoubleprime;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment