OSDN Git Service
(root)
/
pf3gnuchains
/
gcc-fork.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
75bebd9
)
(expand_exit_loop_if_false): Emit conditional jump around
author
wilson
<wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 May 1994 16:59:51 +0000
(16:59 +0000)
committer
wilson
<wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 May 1994 16:59:51 +0000
(16:59 +0000)
unconditional loop exit instead of conditional loop exit.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@7346
138bc75d
-0d04-0410-961f-
82ee72b054a4
gcc/stmt.c
patch
|
blob
|
history
diff --git
a/gcc/stmt.c
b/gcc/stmt.c
index
4af0f31
..
9d2c977
100644
(file)
--- 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;
}