diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr81799.c | 25 | ||||
-rw-r--r-- | gcc/tree-loop-distribution.c | 2 |
4 files changed, 37 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 19bb575..a380b40 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-08-14 Bin Cheng <bin.cheng@arm.com> + + PR tree-optimization/81799 + * tree-loop-distribution.c (version_loop_by_alias_check): Force + cond_expr to simple gimple operand. + 2017-08-14 Wilco Dijkstra <wdijkstr@arm.com> PR middle-end/46932 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8995806..9309b48 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-08-14 Bin Cheng <bin.cheng@arm.com> + + PR tree-optimization/81799 + * gcc.dg/tree-ssa/pr81799.c: New. + 2017-08-14 Wilco Dijkstra <wdijkstr@arm.com> PR middle-end/46932 diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr81799.c b/gcc/testsuite/gcc.dg/tree-ssa/pr81799.c new file mode 100644 index 0000000..543ae94 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr81799.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-O3" } */ + +int printf (const char *, ...); + +int a, c[1], d, e, **f; + +void fn1 (int h) +{ + int *i = 0; + for (d = 0; d < 1; d++) + { + if (d) + continue; + for (; e; e++) + { + a = c[*i]; + if (h) + printf ("0"); + } + return; + } + f = &i; +} + diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index 8d80ccc..b1b2934 100644 --- a/gcc/tree-loop-distribution.c +++ b/gcc/tree-loop-distribution.c @@ -2263,7 +2263,7 @@ version_loop_by_alias_check (struct loop *loop, vec<ddr_p> *alias_ddrs) compute_alias_check_pairs (loop, alias_ddrs, &comp_alias_pairs); create_runtime_alias_checks (loop, &comp_alias_pairs, &cond_expr); cond_expr = force_gimple_operand_1 (cond_expr, &cond_stmts, - is_gimple_condexpr, NULL_TREE); + is_gimple_val, NULL_TREE); /* Depend on vectorizer to fold IFN_LOOP_DIST_ALIAS. */ if (flag_tree_loop_vectorize) |