cfglayout.c (fixup_reorder_chain): Handle case where the destination of E_TAKEN is...
authorJ"orn Rennecke <joern.rennecke@superh.com>
Tue, 15 Jun 2004 11:58:40 +0000 (11:58 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Tue, 15 Jun 2004 11:58:40 +0000 (12:58 +0100)
* cfglayout.c (fixup_reorder_chain): Handle case where the
destination of E_TAKEN is EXIT_BLOCK_PTR.

From-SVN: r83179

gcc/ChangeLog
gcc/cfglayout.c

index 6c953a16d74649af3da88d06296029bc40cafb6a..24b12e32ec411205793eac11d5e169e7a58105c3 100644 (file)
@@ -1,3 +1,8 @@
+2004-06-15  J"orn Rennecke <joern.rennecke@superh.com>
+
+       * cfglayout.c (fixup_reorder_chain): Handle case where the
+       destination of E_TAKEN is EXIT_BLOCK_PTR.
+
 2004-06-15  Diego Novillo  <dnovillo@redhat.com>
 
        * tree-ssa-copy.c (cprop_into_successor_phis): Fix typo.
index 66742686e1625577a01179955c6fafb7e551fef2..ca3913f5fdf3d5d35b58140224af1e89d1db0667 100644 (file)
@@ -733,13 +733,15 @@ fixup_reorder_chain (void)
              /* Otherwise we can try to invert the jump.  This will
                 basically never fail, however, keep up the pretense.  */
              else if (invert_jump (bb_end_insn,
-                                   label_for_bb (e_fall->dest), 0))
+                                   (e_fall->dest == EXIT_BLOCK_PTR
+                                    ? NULL_RTX
+                                    : label_for_bb (e_fall->dest)), 0))
                {
+                 e_fall->flags &= ~EDGE_FALLTHRU;
 #ifdef ENABLE_CHECKING
                  if (!could_fall_through (e_taken->src, e_taken->dest))
                    abort ();
 #endif
-                 e_fall->flags &= ~EDGE_FALLTHRU;
                  e_taken->flags |= EDGE_FALLTHRU;
                  update_br_prob_note (bb);
                  continue;