Clear LOOP_CLOSED_SSA after pass_ccp
authorTom de Vries <tom@codesourcery.com>
Tue, 17 Nov 2015 21:42:18 +0000 (21:42 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Tue, 17 Nov 2015 21:42:18 +0000 (21:42 +0000)
2015-11-17  Tom de Vries  <tom@codesourcery.com>

* tree-ssa-ccp.c (do_ssa_ccp): Clear LOOP_CLOSED_SSA in loops state if
something changed.

From-SVN: r230503

gcc/ChangeLog
gcc/tree-ssa-ccp.c

index b208b470c0b62fd2e629bd00928a38113e1903b3..a21f18bbb8200efdea351966e4206672ac5c2cf1 100644 (file)
@@ -1,3 +1,8 @@
+2015-11-17  Tom de Vries  <tom@codesourcery.com>
+
+       * tree-ssa-ccp.c (do_ssa_ccp): Clear LOOP_CLOSED_SSA in loops state if
+       something changed.
+
 2015-11-17  Tom de Vries  <tom@codesourcery.com>
 
        * cfgloop.h (struct loop): Add in_oacc_kernels_region field.
index 7b6b4518b088d448552f3a179b513429c07710fd..7e8bc5276e997d80a6a3c0ec8cd4f01e0e5a2fef 100644 (file)
@@ -139,6 +139,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "params.h"
 #include "builtins.h"
 #include "tree-chkp.h"
+#include "cfgloop.h"
 
 
 /* Possible lattice values.  */
@@ -2402,10 +2403,17 @@ do_ssa_ccp (bool nonzero_p)
 {
   unsigned int todo = 0;
   calculate_dominance_info (CDI_DOMINATORS);
+
   ccp_initialize ();
   ssa_propagate (ccp_visit_stmt, ccp_visit_phi_node);
   if (ccp_finalize (nonzero_p))
-    todo = (TODO_cleanup_cfg | TODO_update_ssa);
+    {
+      todo = (TODO_cleanup_cfg | TODO_update_ssa);
+
+      /* ccp_finalize does not preserve loop-closed ssa.  */
+      loops_state_clear (LOOP_CLOSED_SSA);
+    }
+
   free_dominance_info (CDI_DOMINATORS);
   return todo;
 }