tree-ssa-threadbackward.c (pass_data_thread_jumps): Remove unconditional TODO_cleanup...
authorRichard Biener <rguenther@suse.de>
Thu, 11 Aug 2016 08:49:56 +0000 (08:49 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 11 Aug 2016 08:49:56 +0000 (08:49 +0000)
2016-08-11  Richard Biener  <rguenther@suse.de>

* tree-ssa-threadbackward.c (pass_data_thread_jumps): Remove
unconditional TODO_cleanup_cfg.
(pass_thread_jumps::execute): Initialize loops, perform a CFG
cleanup only if we threaded a jump.

* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Adjust.

From-SVN: r239355

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
gcc/tree-ssa-threadbackward.c

index 491f62d17abde03d3cec89883e81f08a509a7a43..d8c65cf3e104c5c7a40ceb7b8712f30e573b912a 100644 (file)
@@ -1,3 +1,10 @@
+2016-08-11  Richard Biener  <rguenther@suse.de>
+
+       * tree-ssa-threadbackward.c (pass_data_thread_jumps): Remove
+       unconditional TODO_cleanup_cfg.
+       (pass_thread_jumps::execute): Initialize loops, perform a CFG
+       cleanup only if we threaded a jump.
+
 2016-08-11  Alan Modra  <amodra@gmail.com>
 
        PR target/71680
index b77940bc34c8decf60c0ebb68434f176d33ea6a0..6798ff8ae481f20961d1a116b44bbe960c79227b 100644 (file)
@@ -1,3 +1,7 @@
+2016-08-11  Richard Biener  <rguenther@suse.de>
+
+       * gcc.dg/tree-ssa/ssa-dom-thread-7.c: Adjust.
+
 2016-08-11  Alan Modra  <amodra@gmail.com>
 
        * gcc.target/powerpc/pr71680.c: New.
index 1a4089fcdfd34e68ff3dfcad270886d174b9a939..9a9d1cb7cf7cec17b6be7adff5dd6bcdba95e72d 100644 (file)
@@ -1,8 +1,9 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-thread1-stats -fdump-tree-thread2-stats -fdump-tree-thread3-stats -fdump-tree-dom3-stats -fdump-tree-vrp2-stats -fno-guess-branch-probability" } */
+/* { dg-options "-O2 -fdump-tree-thread1-stats -fdump-tree-thread2-stats -fdump-tree-dom2-stats -fdump-tree-thread3-stats -fdump-tree-dom3-stats -fdump-tree-vrp2-stats -fno-guess-branch-probability" } */
 /* { dg-final { scan-tree-dump "Jumps threaded: 16"  "thread1" } } */
-/* { dg-final { scan-tree-dump "Jumps threaded: 6" "thread2" } } */
+/* { dg-final { scan-tree-dump "Jumps threaded: 9" "thread2" } } */
 /* { dg-final { scan-tree-dump "Jumps threaded: 3" "thread3" } } */
+/* { dg-final { scan-tree-dump-not "Jumps threaded"  "dom2" } } */
 /* { dg-final { scan-tree-dump-not "Jumps threaded"  "dom3" } } */
 /* { dg-final { scan-tree-dump-not "Jumps threaded"  "vrp2" } } */
 
index e05669f81472e17ad3334adb28bad2a395412679..506078f23581a59eb6c81f4b51f5405ddb299cda 100644 (file)
@@ -674,7 +674,7 @@ const pass_data pass_data_thread_jumps =
   0,
   0,
   0,
-  ( TODO_cleanup_cfg | TODO_update_ssa ),
+  TODO_update_ssa,
 };
 
 class pass_thread_jumps : public gimple_opt_pass
@@ -699,6 +699,8 @@ pass_thread_jumps::gate (function *fun ATTRIBUTE_UNUSED)
 unsigned int
 pass_thread_jumps::execute (function *fun)
 {
+  loop_optimizer_init (LOOPS_HAVE_PREHEADERS | LOOPS_HAVE_SIMPLE_LATCHES);
+
   /* Try to thread each block with more than one successor.  */
   basic_block bb;
   FOR_EACH_BB_FN (bb, fun)
@@ -706,8 +708,10 @@ pass_thread_jumps::execute (function *fun)
       if (EDGE_COUNT (bb->succs) > 1)
        find_jump_threads_backwards (bb);
     }
-  thread_through_all_blocks (true);
-  return 0;
+  bool changed = thread_through_all_blocks (true);
+
+  loop_optimizer_finalize ();
+  return changed ? TODO_cleanup_cfg : 0;
 }
 
 }