From 8d2d0de9f788c71f94b3fb80d1cbcaed9ecea855 Mon Sep 17 00:00:00 2001 From: Bin Cheng Date: Mon, 14 Aug 2017 11:46:03 +0000 Subject: [PATCH] re PR tree-optimization/81799 (ICE on valid code at -O3: verify_gimple failed) PR tree-optimization/81799 * tree-loop-distribution.c (version_loop_by_alias_check): Force cond_expr to simple gimple operand. gcc/testsuite * gcc.dg/tree-ssa/pr81799.c: New. From-SVN: r251088 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/tree-ssa/pr81799.c | 25 +++++++++++++++++++++++++ gcc/tree-loop-distribution.c | 2 +- 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr81799.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 19bb575bf8f..a380b40450b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-08-14 Bin Cheng + + 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 PR middle-end/46932 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8995806e289..9309b483517 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-08-14 Bin Cheng + + PR tree-optimization/81799 + * gcc.dg/tree-ssa/pr81799.c: New. + 2017-08-14 Wilco Dijkstra 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 00000000000..543ae94fbf6 --- /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 8d80cccf38f..b1b293419b0 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 *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) -- 2.30.2