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.
This commit is contained in:
Richard Biener 2020-07-29 12:30:59 +02:00
parent 8e8792a347
commit 883eec6653
2 changed files with 7 additions and 1 deletions

View File

@ -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;
}

View File

@ -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. */