From 1bfb3b8bfadf6e4972db74562da5718f014a15a0 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 1 Jan 2018 00:53:17 +0100 Subject: [PATCH] re PR tree-optimization/83581 (ICE in expand_LOOP_VECTORIZED, at internal-fn.c:2397) PR tree-optimization/83581 * tree-loop-distribution.c (pass_loop_distribution::execute): Return TODO_cleanup_cfg if any changes have been made. * gcc.dg/pr83581.c: New test. From-SVN: r256055 --- gcc/ChangeLog | 4 ++++ gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/gcc.dg/pr83581.c | 21 +++++++++++++++++++++ gcc/tree-loop-distribution.c | 2 +- 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/pr83581.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a0c9bf86bb5..97c7a1084d3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2018-01-01 Jakub Jelinek + PR tree-optimization/83581 + * tree-loop-distribution.c (pass_loop_distribution::execute): Return + TODO_cleanup_cfg if any changes have been made. + PR middle-end/83608 * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of convert_modes if target mode has the right side, but different mode diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a9b2008f2d4..416bcd592eb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2018-01-01 Jakub Jelinek + PR tree-optimization/83581 + * gcc.dg/pr83581.c: New test. + PR c/83595 * gcc.dg/pr83595.c: New test. diff --git a/gcc/testsuite/gcc.dg/pr83581.c b/gcc/testsuite/gcc.dg/pr83581.c new file mode 100644 index 00000000000..c145effb88a --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr83581.c @@ -0,0 +1,21 @@ +/* PR tree-optimization/83581 */ +/* { dg-do compile } */ +/* { dg-options "-O3 -fno-tree-copy-prop -fno-tree-loop-im" } */ + +int a, b, c; + +int +foo (int x) +{ + int *d = &x; + while (a < 1) + { + for (b = 0; b < 2; ++b) + { + *d += !!x + 1; + d = &c; + } + ++a; + } + return *d; +} diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index e195a46a36e..bd780fa58e3 100644 --- a/gcc/tree-loop-distribution.c +++ b/gcc/tree-loop-distribution.c @@ -3103,7 +3103,7 @@ pass_loop_distribution::execute (function *fun) checking_verify_loop_structure (); - return 0; + return changed ? TODO_cleanup_cfg : 0; } } // anon namespace -- 2.30.2