summaryrefslogtreecommitdiff
path: root/gcc/jump.c
diff options
context:
space:
mode:
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-15 10:32:33 +0000
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-15 10:32:33 +0000
commit31a533634f33c54cc5cdde9bac457e2faab94a4e (patch)
treecb30b59e8583f834cc2b7bda3848e3270cd9bcf1 /gcc/jump.c
parentd72e4ba7ae7f668d96e40b6aeb0bddedb2023d48 (diff)
downloadgcc-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.c3
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);