aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryce McKinlay <mckinlay@redhat.com>2004-05-28 01:14:02 +0000
committerBryce McKinlay <bryce@gcc.gnu.org>2004-05-28 02:14:02 +0100
commitaed30657939aab74f62b96386be0e96f9e902a1c (patch)
tree870765fa6ff1692682337311ba29d6583d06ce6e
parent431b736152fcb2f15eaf8e6f2b3010b2aafd5188 (diff)
downloadgcc-aed30657939aab74f62b96386be0e96f9e902a1c.zip
gcc-aed30657939aab74f62b96386be0e96f9e902a1c.tar.gz
gcc-aed30657939aab74f62b96386be0e96f9e902a1c.tar.bz2
except.c: Revert change of 2004-05-26.
* except.c: Revert change of 2004-05-26. * config/i386/i386.md: Revert change of 2004-05-27. From-SVN: r82349
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.md20
-rw-r--r--gcc/except.c5
3 files changed, 12 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 500ce95..3793ff0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2004-05-27 Bryce McKinlay <mckinlay@redhat.com>
+ * except.c: Revert change of 2004-05-26.
+ * config/i386/i386.md: Revert change of 2004-05-27.
+
+2004-05-27 Bryce McKinlay <mckinlay@redhat.com>
+
* configure.ac: Remove --enable-tree-browser option.
Define TREEBROWSER when ac_tree_checking is defined.
* configure: Rebuilt.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 40f33fb..270168f 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -137,12 +137,11 @@
; REP instruction
(UNSPEC_REP 75)
-
- (UNSPEC_EH_RETURN 76)
])
(define_constants
[(UNSPECV_BLOCKAGE 0)
+ (UNSPECV_EH_RETURN 13)
(UNSPECV_EMMS 31)
(UNSPECV_LDMXCSR 37)
(UNSPECV_STMXCSR 40)
@@ -13881,7 +13880,6 @@
""
{
rtx tmp, sa = EH_RETURN_STACKADJ_RTX, ra = operands[0];
- rtx jmp;
/* Tricky bit: we write the address of the handler to which we will
be returning into someone else's stack frame, one word below the
@@ -13892,19 +13890,16 @@
emit_move_insn (tmp, ra);
if (Pmode == SImode)
- jmp = emit_jump_insn (gen_eh_return_si (sa));
+ emit_insn (gen_eh_return_si (sa));
else
- jmp = emit_jump_insn (gen_eh_return_di (sa));
- REG_NOTES (jmp) = alloc_EXPR_LIST (REG_NON_LOCAL_GOTO, const0_rtx,
- REG_NOTES (jmp));
+ emit_insn (gen_eh_return_di (sa));
emit_barrier ();
DONE;
})
(define_insn_and_split "eh_return_si"
- [(set (pc)
- (unspec [(match_operand:SI 0 "register_operand" "c")]
- UNSPEC_EH_RETURN))]
+ [(unspec_volatile [(match_operand:SI 0 "register_operand" "c")]
+ UNSPECV_EH_RETURN)]
"!TARGET_64BIT"
"#"
"reload_completed"
@@ -13912,9 +13907,8 @@
"ix86_expand_epilogue (2); DONE;")
(define_insn_and_split "eh_return_di"
- [(set (pc)
- (unspec [(match_operand:DI 0 "register_operand" "c")]
- UNSPEC_EH_RETURN))]
+ [(unspec_volatile [(match_operand:DI 0 "register_operand" "c")]
+ UNSPECV_EH_RETURN)]
"TARGET_64BIT"
"#"
"reload_completed"
diff --git a/gcc/except.c b/gcc/except.c
index 5e9ce33..2dfd073 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -3145,11 +3145,6 @@ can_throw_internal (rtx insn)
return false;
}
- if (GET_CODE (insn) == JUMP_INSN
- && GET_CODE (PATTERN (insn)) == RESX
- && XINT (PATTERN (insn), 0) > 0)
- return can_throw_internal_1 (XINT (PATTERN (insn), 0));
-
/* Every insn that might throw has an EH_REGION note. */
note = find_reg_note (insn, REG_EH_REGION, NULL_RTX);
if (!note || INTVAL (XEXP (note, 0)) <= 0)