gimple-ssa-backprop.c (optimize_phi): Do not replace an argument corresponding to an abnormal edge.
* gimple-ssa-backprop.c (optimize_phi): Do not replace an argument corresponding to an abnormal edge. From-SVN: r233248
This commit is contained in:
parent
f10208b8e9
commit
a864ad5ba2
2 changed files with 13 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
|||
2016-02-09 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gimple-ssa-backprop.c (optimize_phi): Do not replace an argument
|
||||
corresponding to an abnormal edge.
|
||||
|
||||
2016-02-09 Tom de Vries <tom@codesourcery.com>
|
||||
|
||||
PR tree-optimization/69599
|
||||
|
|
|
@ -831,15 +831,21 @@ backprop::optimize_assign (gassign *assign, tree lhs, const usage_info *info)
|
|||
void
|
||||
backprop::optimize_phi (gphi *phi, tree var, const usage_info *info)
|
||||
{
|
||||
/* If the sign of the result doesn't matter, strip sign operations
|
||||
from all arguments. */
|
||||
/* If the sign of the result doesn't matter, try to strip sign operations
|
||||
from arguments. */
|
||||
if (info->flags.ignore_sign)
|
||||
{
|
||||
basic_block bb = gimple_bb (phi);
|
||||
use_operand_p use;
|
||||
ssa_op_iter oi;
|
||||
bool replaced = false;
|
||||
FOR_EACH_PHI_ARG (use, phi, oi, SSA_OP_USE)
|
||||
{
|
||||
/* Propagating along abnormal edges is delicate, punt for now. */
|
||||
const int index = PHI_ARG_INDEX_FROM_USE (use);
|
||||
if (EDGE_PRED (bb, index)->flags & EDGE_ABNORMAL)
|
||||
continue;
|
||||
|
||||
tree new_arg = strip_sign_op (USE_FROM_PTR (use));
|
||||
if (new_arg)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue