passes.c (execute_function_todo): Verify loops if they are said to be up-to-date.
authorRichard Biener <rguenther@suse.de>
Thu, 11 May 2017 07:26:32 +0000 (07:26 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 11 May 2017 07:26:32 +0000 (07:26 +0000)
2017-05-11  Richard Biener  <rguenther@suse.de>

* passes.c (execute_function_todo): Verify loops if they are
said to be up-to-date.
* cfgexpand.c (pass_expand::execute): Discard loops for -dx.
* trans-mem.c (pass_tm_edges::execute): Mark loops for fixup.

From-SVN: r247879

gcc/ChangeLog
gcc/cfgexpand.c
gcc/passes.c
gcc/trans-mem.c

index 4ee565be7b4d1d1d82148f80e5003c682b18220f..5c3f57940fb735d371df2f5cf270a32ee26b49ad 100644 (file)
@@ -1,3 +1,10 @@
+2017-05-11  Richard Biener  <rguenther@suse.de>
+
+       * passes.c (execute_function_todo): Verify loops if they are
+       said to be up-to-date.
+       * cfgexpand.c (pass_expand::execute): Discard loops for -dx.
+       * trans-mem.c (pass_tm_edges::execute): Mark loops for fixup.
+
 2017-05-10  John David Anglin  <danglin@gcc.gnu.org>
 
        PR target/80090
index 66af69973c698088a7d1bc3ca11274386cb446f6..e38c8e4ac49c800e7e98ff720679b62482cc26a6 100644 (file)
@@ -6542,6 +6542,14 @@ pass_expand::execute (function *fun)
   set_block_levels (DECL_INITIAL (fun->decl), 0);
   default_rtl_profile ();
 
+  /* For -dx discard loops now, otherwise IL verify in clean_state will
+     ICE.  */
+  if (rtl_dump_and_exit)
+    {
+      cfun->curr_properties &= ~PROP_loops;
+      loop_optimizer_finalize ();
+    }
+
   timevar_pop (TV_POST_EXPAND);
 
   return 0;
index 185c3cd31752000bef0030997a1d291415747b47..911495ed8656809541f6c74f93bde220799740aa 100644 (file)
@@ -1979,8 +1979,12 @@ execute_function_todo (function *fn, void *data)
              && !from_ipa_pass)
            verify_flow_info ();
          if (current_loops
-             && loops_state_satisfies_p (LOOP_CLOSED_SSA))
-           verify_loop_closed_ssa (false);
+             && ! loops_state_satisfies_p (LOOPS_NEED_FIXUP))
+           {
+             verify_loop_structure ();
+             if (loops_state_satisfies_p (LOOP_CLOSED_SSA))
+               verify_loop_closed_ssa (false);
+           }
          if (cfun->curr_properties & PROP_rtl)
            verify_rtl_sharing ();
        }
index 4409bea94d1388239d36a66b3d385d4923bb6dc4..b564d369dc533a8c85fb873ea9b4a1777fb4ae65 100644 (file)
@@ -3369,6 +3369,8 @@ pass_tm_edges::execute (function *fun)
      must be rebuilt completely.  Otherwise we'll crash trying to update
      the SSA web in the TODO section following this pass.  */
   free_dominance_info (CDI_DOMINATORS);
+  /* We'ge also wrecked loops badly with inserting of abnormal edges.  */
+  loops_state_set (LOOPS_NEED_FIXUP);
   bitmap_obstack_release (&tm_obstack);
   all_tm_regions = NULL;