aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2020-07-29 12:30:59 +0200
committerRichard Biener <rguenther@suse.de>2020-07-29 12:35:56 +0200
commit883eec6653b4dd89f7ed0cdad2b0b1010e045e12 (patch)
tree8bffd221b670054abefd0389470f02bb4c323139 /gcc
parent8e8792a347c87dbb82b4cf75ec3452bc5cd1d3db (diff)
downloadgcc-883eec6653b4dd89f7ed0cdad2b0b1010e045e12.zip
gcc-883eec6653b4dd89f7ed0cdad2b0b1010e045e12.tar.gz
gcc-883eec6653b4dd89f7ed0cdad2b0b1010e045e12.tar.bz2
more SCEV cache clearing
This fixes two more places, in loop interchange and in the vectorizer where the SCEV verifier sees stale entries. 2020-07-29 Richard Biener <rguenther@suse.de> * tree-vectorizer.c (vectorize_loops): Reset the SCEV cache if we removed any SIMD UID SSA defs. * gimple-loop-interchange.cc (pass_linterchange::execute): Reset the scev cache if we interchanged a loop.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/gimple-loop-interchange.cc2
-rw-r--r--gcc/tree-vectorizer.c6
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/gimple-loop-interchange.cc b/gcc/gimple-loop-interchange.cc
index 2379848..1656004 100644
--- a/gcc/gimple-loop-interchange.cc
+++ b/gcc/gimple-loop-interchange.cc
@@ -2084,6 +2084,8 @@ pass_linterchange::execute (function *fun)
loop_nest.release ();
}
+ if (changed_p)
+ scev_reset ();
return changed_p ? (TODO_update_ssa_only_virtuals) : 0;
}
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
index 26a1846..2a60d37 100644
--- a/gcc/tree-vectorizer.c
+++ b/gcc/tree-vectorizer.c
@@ -1283,7 +1283,11 @@ vectorize_loops (void)
/* Fold IFN_GOMP_SIMD_{VF,LANE,LAST_LANE,ORDERED_{START,END}} builtins. */
if (cfun->has_simduid_loops)
- adjust_simduid_builtins (simduid_to_vf_htab);
+ {
+ adjust_simduid_builtins (simduid_to_vf_htab);
+ /* Avoid stale SCEV cache entries for the SIMD_LANE defs. */
+ scev_reset ();
+ }
/* Shrink any "omp array simd" temporary arrays to the
actual vectorization factors. */