aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Hayes <m.hayes@elec.canterbury.ac.nz>2003-03-15 02:44:29 +0000
committerMichael Hayes <m.hayes@gcc.gnu.org>2003-03-15 02:44:29 +0000
commitd8eed979a34b1888fe34127d183a053ccc9a6a67 (patch)
tree9969c224172f9573e7cd998f797e895995e04841 /gcc
parentaf75fb675d7e451df34a1114b236e2291ee5f638 (diff)
downloadgcc-d8eed979a34b1888fe34127d183a053ccc9a6a67.zip
gcc-d8eed979a34b1888fe34127d183a053ccc9a6a67.tar.gz
gcc-d8eed979a34b1888fe34127d183a053ccc9a6a67.tar.bz2
re PR rtl-optimization/9387 (jump threading bug)
PR optimization/9387 * function.c (thread_prologue_and_epilogue_insns): Use redirect_jump for conditional returns. From-SVN: r64390
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/function.c13
2 files changed, 7 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 146eb18..206fffc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-03-15 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
+
+ PR optimization/9387
+ * function.c (thread_prologue_and_epilogue_insns): Use redirect_jump
+ for conditional returns.
+
2003-03-14 Jason Merrill <jason@redhat.com>
PR optimization/6871
diff --git a/gcc/function.c b/gcc/function.c
index 73527bc..26fc9ecc 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -7601,19 +7601,8 @@ thread_prologue_and_epilogue_insns (f)
that with a conditional return instruction. */
else if (condjump_p (jump))
{
- rtx ret, *loc;
-
- ret = SET_SRC (PATTERN (jump));
- if (GET_CODE (XEXP (ret, 1)) == LABEL_REF)
- loc = &XEXP (ret, 1);
- else
- loc = &XEXP (ret, 2);
- ret = gen_rtx_RETURN (VOIDmode);
-
- if (! validate_change (jump, loc, ret, 0))
+ if (! redirect_jump (jump, 0, 1))
continue;
- if (JUMP_LABEL (jump))
- LABEL_NUSES (JUMP_LABEL (jump))--;
/* If this block has only one successor, it both jumps
and falls through to the fallthru block, so we can't