diff options
author | Richard Biener <rguenther@suse.de> | 2015-01-13 13:41:46 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2015-01-13 13:41:46 +0000 |
commit | d0ed943ca48801dabdac2a70c974de074181c70b (patch) | |
tree | 7f37c82fd98256628cfc914574e45cf995c80316 /gcc | |
parent | 96bb56b2d7ee386b29596c59d61b73c5d5d3b7cc (diff) | |
download | gcc-d0ed943ca48801dabdac2a70c974de074181c70b.zip gcc-d0ed943ca48801dabdac2a70c974de074181c70b.tar.gz gcc-d0ed943ca48801dabdac2a70c974de074181c70b.tar.bz2 |
re PR tree-optimization/64406 (ICE: SIGSEGV in estimate_numbers_of_iterations_loop (tree-ssa-loop-niter.c:3453) with custom flags)
2015-01-13 Richard Biener <rguenther@suse.de>
PR tree-optimization/64406
* tree-loop-distibution.c (pass_loop_distribution::execute):
Reset the SCEV hashtable if we distributed anything.
* gcc.dg/pr64406.c: New testcase.
From-SVN: r219528
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr64406.c | 26 | ||||
-rw-r--r-- | gcc/tree-loop-distribution.c | 3 |
4 files changed, 40 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d99589b..ba272a1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2015-01-13 Richard Biener <rguenther@suse.de> + PR tree-optimization/64406 + * tree-loop-distibution.c (pass_loop_distribution::execute): + Reset the SCEV hashtable if we distributed anything. + +2015-01-13 Richard Biener <rguenther@suse.de> + PR tree-optimization/64404 * tree-vect-stmts.c (vectorizable_load): Reject conflicting SLP types for CSEd loads. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 854d5f4..819a122 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2015-01-13 Richard Biener <rguenther@suse.de> + PR tree-optimization/64406 + * gcc.dg/pr64406.c: New testcase. + +2015-01-13 Richard Biener <rguenther@suse.de> + PR tree-optimization/64404 * gcc.dg/vect/pr64404.c: New testcase. diff --git a/gcc/testsuite/gcc.dg/pr64406.c b/gcc/testsuite/gcc.dg/pr64406.c new file mode 100644 index 0000000..8af8e55 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr64406.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-O -ftree-loop-distribute-patterns -fno-tree-loop-ivcanon -fno-tree-loop-vectorize -ftree-vectorize" } */ + +unsigned in[72]; + +void bar (unsigned out[], unsigned ia[]); + +void +foo () +{ + int i; + unsigned out[72], ia[8]; + for (i = 0; i < 8; i++) + { + out[i * 8] = in[i * 8] + 5; + out[i * 8 + 1] = in[i * 8 + 1] + 6; + out[i * 8 + 2] = in[i * 8 + 2] + 7; + out[i * 8 + 3] = in[i * 8 + 3] + 8; + out[i * 8 + 4] = in[i * 8 + 4] + 9; + out[i * 8 + 5] = in[i * 8 + 5] + 10; + out[i * 8 + 6] = in[i * 8 + 6] + 11; + out[i * 8 + 7] = in[i * 8 + 7] + 12; + ia[i] = in[i]; + } + bar (out, ia); +} diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index ecd51fb..904f4e8 100644 --- a/gcc/tree-loop-distribution.c +++ b/gcc/tree-loop-distribution.c @@ -1838,6 +1838,9 @@ out: if (changed) { + /* Cached scalar evolutions now may refer to wrong or non-existing + loops. */ + scev_reset_htab (); mark_virtual_operands_for_renaming (fun); rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa); } |