From: Jim Wilson Date: Fri, 20 May 1994 16:59:51 +0000 (-0700) Subject: (expand_exit_loop_if_false): Emit conditional jump around X-Git-Tag: misc/cutover-egcs-0~6597 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d902c7ead337606903a3744440b7a684854ba2cb;p=thirdparty%2Fgcc.git (expand_exit_loop_if_false): Emit conditional jump around unconditional loop exit instead of conditional loop exit. From-SVN: r7346 --- diff --git a/gcc/stmt.c b/gcc/stmt.c index 4af0f315d162..9d2c97741e8d 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -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; }