diff options
author | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-10-15 10:32:33 +0000 |
---|---|---|
committer | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-10-15 10:32:33 +0000 |
commit | 31a533634f33c54cc5cdde9bac457e2faab94a4e (patch) | |
tree | cb30b59e8583f834cc2b7bda3848e3270cd9bcf1 /gcc/jump.c | |
parent | d72e4ba7ae7f668d96e40b6aeb0bddedb2023d48 (diff) | |
download | gcc-31a533634f33c54cc5cdde9bac457e2faab94a4e.tar.gz |
PR rtl-optimization/49941
* jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.
* rtl.h (set_return_jump_label): Declare.
* function.c (set_return_jump_label): New function, extracted..
(thread_prologue_and_epilogue_insns): ..from here. Use it in
another instance to set return jump_label.
* cfgrtl.c (force_nonfallthru_and_redirect): Use set_return_jump_label.
* reorg.c (find_end_label): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180027 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/jump.c')
-rw-r--r-- | gcc/jump.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/jump.c b/gcc/jump.c index 0273adf4af6..f852f827729 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -1086,6 +1086,7 @@ mark_jump_label_1 (rtx x, rtx insn, bool in_mem, bool is_target) return; case RETURN: + case SIMPLE_RETURN: if (is_target) { gcc_assert (JUMP_LABEL (insn) == NULL || JUMP_LABEL (insn) == x); @@ -1408,7 +1409,7 @@ redirect_exp_1 (rtx *loc, rtx olabel, rtx nlabel, rtx insn) int i; const char *fmt; - if ((code == LABEL_REF && XEXP (x, 0) == olabel) + if ((code == LABEL_REF && XEXP (x, 0) == olabel) || x == olabel) { x = redirect_target (nlabel); |