reset the SCEV htab after FRE in loop pipeline
authorRichard Biener <rguenther@suse.de>
Fri, 8 Jan 2021 13:37:09 +0000 (14:37 +0100)
committerRichard Biener <rguenther@suse.de>
Fri, 8 Jan 2021 14:10:40 +0000 (15:10 +0100)
When running FRE in the loop pipeline (as part of the conditionally
scheduled scalar cleanups) we have to reset the SCEV hashtable as
otherwise we can end up with stale entries and all sorts of problems.

Catched by my out-of-tree verifier for this problem.

2021-01-08  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.c (pass_fre::execute): Reset the SCEV hash table.

gcc/tree-ssa-sccvn.c

index 17016853a34994ed787f64e550bb2a061872e375..0ba846f0be2bca8b4bc27b5db3268ca3dcb071d6 100644 (file)
@@ -7883,6 +7883,9 @@ pass_fre::execute (function *fun)
   if (iterate_p)
     loop_optimizer_finalize ();
 
+  if (scev_initialized_p ())
+    scev_reset_htab ();
+
   /* For late FRE after IVOPTs and unrolling, see if we can
      remove some TREE_ADDRESSABLE and rewrite stuff into SSA.  */
   if (!may_iterate)