]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
(expand_exit_loop_if_false): Emit conditional jump around
authorJim Wilson <wilson@gcc.gnu.org>
Fri, 20 May 1994 16:59:51 +0000 (09:59 -0700)
committerJim Wilson <wilson@gcc.gnu.org>
Fri, 20 May 1994 16:59:51 +0000 (09:59 -0700)
unconditional loop exit instead of conditional loop exit.

From-SVN: r7346

gcc/stmt.c

index 4af0f315d1624ac2e9845ad6878b7e6678a01629..9d2c97741e8dbc01dd42a68b3e2ea3026dcca08f 100644 (file)
@@ -2267,7 +2267,17 @@ expand_exit_loop_if_false (whichloop, cond)
                               NULL_TREE);
     }
   else
-    do_jump (cond, whichloop->data.loop.end_label, NULL_RTX);
+    {
+      /* In order to handle fixups, we actually create a conditional jump
+        around a unconditional branch to exit the loop.  If fixups are
+        necessary, they go before the unconditional branch.  */
+
+      rtx label = gen_label_rtx ();
+      do_jump (cond, NULL_RTX, label);
+      expand_goto_internal (NULL_TREE, whichloop->data.loop.end_label,
+                           NULL_RTX);
+      emit_label (label);
+    }
 
   return 1;
 }