From d902c7ead337606903a3744440b7a684854ba2cb Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Fri, 20 May 1994 09:59:51 -0700 Subject: [PATCH] (expand_exit_loop_if_false): Emit conditional jump around unconditional loop exit instead of conditional loop exit. From-SVN: r7346 --- gcc/stmt.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/stmt.c b/gcc/stmt.c index 4af0f315d16..9d2c97741e8 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; } -- 2.30.2