From 686759849b87433f0ee47d0e3097cc0ae3cf2a5e Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 6 Nov 2018 10:23:30 +0000 Subject: [PATCH] 2018-11-06 Richard Biener 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 * gcc.dg/pr87894.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265833 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr87894.c | 26 ++++++++++++++++++++++++++ gcc/tree-vect-loop-manip.c | 3 ++- 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/pr87894.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f5be58abfef..95d22456e94 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-11-06 Richard Biener + + 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 PR target/87723 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 17f696860fa..225850d2613 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-11-06 Richard Biener + + PR tree-optimization/87889 + * gcc.dg/pr87894.c: New testcase. + 2018-11-06 Andreas Krebbel PR target/87723 diff --git a/gcc/testsuite/gcc.dg/pr87894.c b/gcc/testsuite/gcc.dg/pr87894.c new file mode 100644 index 00000000000..921a9cec468 --- /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 f1b023b4e4e..d4e71b7195b 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) { -- 2.11.4.GIT