diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr87894.c | 26 | ||||
-rw-r--r-- | gcc/tree-vect-loop-manip.c | 3 |
4 files changed, 39 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f5be58a..95d2245 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-11-06 Richard Biener <rguenther@suse.de> + + PR tree-optimization/87889 + * tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges): + Do nothing if old and new arg are the same + 2018-11-06 Andreas Krebbel <krebbel@linux.ibm.com> PR target/87723 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 17f6968..225850d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-11-06 Richard Biener <rguenther@suse.de> + + PR tree-optimization/87889 + * gcc.dg/pr87894.c: New testcase. + 2018-11-06 Andreas Krebbel <krebbel@linux.ibm.com> PR target/87723 diff --git a/gcc/testsuite/gcc.dg/pr87894.c b/gcc/testsuite/gcc.dg/pr87894.c new file mode 100644 index 0000000..921a9ce --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr87894.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-Ofast" } */ + +int a, b, c, d; +double e; + +void f(double g[][1]) +{ + for (;;) + { + double h; + for (; b < c; b++) + { + if (b >= 0) + ; + else if (d) + h = 2.0; + else + h = 0.0; + if (e) + g[a][b] = 0.0; + g[a][b] = h; + } + } +} + diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c index f1b023b..d4e71b7 100644 --- a/gcc/tree-vect-loop-manip.c +++ b/gcc/tree-vect-loop-manip.c @@ -977,7 +977,8 @@ slpeel_duplicate_current_defs_from_edges (edge from, edge to) } if (TREE_CODE (from_arg) != SSA_NAME) gcc_assert (operand_equal_p (from_arg, to_arg, 0)); - else if (TREE_CODE (to_arg) == SSA_NAME) + else if (TREE_CODE (to_arg) == SSA_NAME + && from_arg != to_arg) { if (get_current_def (to_arg) == NULL_TREE) { |