re PR tree-optimization/62217 (DOM confuses complete unrolling which in turn causes VRP to warn)
2015-02-18 Richard Biener <rguenther@suse.de> PR tree-optimization/62217 * tree-ssa-dom.c (cprop_operand): Avoid propagating copies into BIVs. * gcc.dg/tree-ssa/cunroll-11.c: New testcase. From-SVN: r220785
This commit is contained in:
parent
c7400e2fec
commit
6f423f4c89
@ -1,3 +1,9 @@
|
||||
2015-02-18 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/62217
|
||||
* tree-ssa-dom.c (cprop_operand): Avoid propagating copies
|
||||
into BIVs.
|
||||
|
||||
2015-02-18 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR sanitizer/65081
|
||||
|
@ -1,3 +1,8 @@
|
||||
2015-02-18 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/62217
|
||||
* gcc.dg/tree-ssa/cunroll-11.c: New testcase.
|
||||
|
||||
2015-02-18 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR sanitizer/65081
|
||||
|
18
gcc/testsuite/gcc.dg/tree-ssa/cunroll-11.c
Normal file
18
gcc/testsuite/gcc.dg/tree-ssa/cunroll-11.c
Normal file
@ -0,0 +1,18 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O3 -Warray-bounds -fdump-tree-cunroll-details" } */
|
||||
|
||||
typedef struct { unsigned data; } s1;
|
||||
s1 g_x[4];
|
||||
|
||||
extern void foo (s1 *x1, s1 *x2, int a, int b)
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < a; i++)
|
||||
if(i == b)
|
||||
g_x[i] = *x1;
|
||||
else
|
||||
g_x[i] = *x2;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump "Loop 1 iterates at most 3 times" "cunroll" } } */
|
||||
/* { dg-final { cleanup-tree-dump "cunroll" } } */
|
@ -2291,11 +2291,16 @@ cprop_operand (gimple stmt, use_operand_p op_p)
|
||||
if (!may_propagate_copy (op, val))
|
||||
return;
|
||||
|
||||
/* Do not propagate copies into simple IV increment statements.
|
||||
See PR23821 for how this can disturb IV analysis. */
|
||||
if (TREE_CODE (val) != INTEGER_CST
|
||||
&& simple_iv_increment_p (stmt))
|
||||
return;
|
||||
/* Do not propagate copies into BIVs.
|
||||
See PR23821 and PR62217 for how this can disturb IV and
|
||||
number of iteration analysis. */
|
||||
if (TREE_CODE (val) != INTEGER_CST)
|
||||
{
|
||||
gimple def = SSA_NAME_DEF_STMT (op);
|
||||
if (gimple_code (def) == GIMPLE_PHI
|
||||
&& gimple_bb (def)->loop_father->header == gimple_bb (def))
|
||||
return;
|
||||
}
|
||||
|
||||
/* Dump details. */
|
||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||
|
Loading…
Reference in New Issue
Block a user