* [PATCH] Some PRE cleanups
@ 2016-07-15 10:53 Richard Biener
0 siblings, 0 replies; only message in thread
From: Richard Biener @ 2016-07-15 10:53 UTC (permalink / raw)
To: gcc-patches
Bootstrapped / tested on x86_64-unknown-linux-gnu, applied.
Richard.
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.
Index: gcc/tree-ssa-pre.c
===================================================================
*** gcc/tree-ssa-pre.c (revision 238369)
--- gcc/tree-ssa-pre.c (working copy)
*************** get_representative_for (const pre_expr e
*** 1365,1371 ****
switch (e->kind)
{
case NAME:
! return PRE_EXPR_NAME (e);
case CONSTANT:
return PRE_EXPR_CONSTANT (e);
case NARY:
--- 1365,1371 ----
switch (e->kind)
{
case NAME:
! return VN_INFO (PRE_EXPR_NAME (e))->valnum;
case CONSTANT:
return PRE_EXPR_CONSTANT (e);
case NARY:
*************** get_representative_for (const pre_expr e
*** 1380,1386 ****
{
pre_expr rep = expression_for_id (i);
if (rep->kind == NAME)
! return PRE_EXPR_NAME (rep);
else if (rep->kind == CONSTANT)
return PRE_EXPR_CONSTANT (rep);
}
--- 1380,1386 ----
{
pre_expr rep = expression_for_id (i);
if (rep->kind == NAME)
! return VN_INFO (PRE_EXPR_NAME (rep))->valnum;
else if (rep->kind == CONSTANT)
return PRE_EXPR_CONSTANT (rep);
}
*************** phi_translate_1 (pre_expr expr, bitmap_s
*** 1448,1459 ****
leader = find_leader_in_sets (op_val_id, set1, set2);
result = phi_translate (leader, set1, set2, pred, phiblock);
if (result && result != leader)
! {
! tree name = get_representative_for (result);
! if (!name)
! return NULL;
! newnary->op[i] = name;
! }
else if (!result)
return NULL;
--- 1448,1454 ----
leader = find_leader_in_sets (op_val_id, set1, set2);
result = phi_translate (leader, set1, set2, pred, phiblock);
if (result && result != leader)
! newnary->op[i] = get_representative_for (result);
else if (!result)
return NULL;
*************** phi_translate_1 (pre_expr expr, bitmap_s
*** 1543,1561 ****
}
op_val_id = VN_INFO (op[n])->value_id;
leader = find_leader_in_sets (op_val_id, set1, set2);
- if (!leader)
- break;
opresult = phi_translate (leader, set1, set2, pred, phiblock);
! if (!opresult)
! break;
! if (opresult != leader)
{
tree name = get_representative_for (opresult);
- if (!name)
- break;
changed |= name != op[n];
op[n] = name;
}
}
if (n != 3)
{
--- 1538,1552 ----
}
op_val_id = VN_INFO (op[n])->value_id;
leader = find_leader_in_sets (op_val_id, set1, set2);
opresult = phi_translate (leader, set1, set2, pred, phiblock);
! if (opresult && opresult != leader)
{
tree name = get_representative_for (opresult);
changed |= name != op[n];
op[n] = name;
}
+ else if (!opresult)
+ break;
}
if (n != 3)
{
*************** do_pre_regular_insertion (basic_block bl
*** 3198,3204 ****
break;
}
- eprime = fully_constant_expression (eprime);
vprime = get_expr_value_id (eprime);
edoubleprime = bitmap_find_leader (AVAIL_OUT (bprime),
vprime);
--- 3189,3194 ----
*************** do_pre_partial_partial_insertion (basic_
*** 3357,3363 ****
break;
}
- eprime = fully_constant_expression (eprime);
vprime = get_expr_value_id (eprime);
edoubleprime = bitmap_find_leader (AVAIL_OUT (bprime), vprime);
avail[pred->dest_idx] = edoubleprime;
--- 3347,3352 ----
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2016-07-15 10:53 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-15 10:53 [PATCH] Some PRE cleanups Richard Biener
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).