From aed30657939aab74f62b96386be0e96f9e902a1c Mon Sep 17 00:00:00 2001 From: Bryce McKinlay Date: Fri, 28 May 2004 01:14:02 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.md | 20 +++++++------------- gcc/except.c | 5 ----- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 500ce95aff8..3793ff05118 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-05-27 Bryce McKinlay + + * except.c: Revert change of 2004-05-26. + * config/i386/i386.md: Revert change of 2004-05-27. + 2004-05-27 Bryce McKinlay * configure.ac: Remove --enable-tree-browser option. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 40f33fba29e..270168ff75b 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 5e9ce337431..2dfd073e70a 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) -- 2.30.2