From: Jan Hubicka Date: Wed, 26 May 2004 22:19:40 +0000 (+0200) Subject: i386.md (UNSPECV_EH_RETURN): Kill. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=dabbc72269ece1873a9bc9a841ed7f3577312da3;p=gcc.git i386.md (UNSPECV_EH_RETURN): Kill. * i386.md (UNSPECV_EH_RETURN): Kill. (eh_return): Use jump_insn. (eh_return_si, eh_return_di): Change pattern to jump instruction. From-SVN: r82295 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1bacc993b24..1fad8d51b1f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-05-27 Jan Hubicka + + * i386.md (UNSPECV_EH_RETURN): Kill. + (eh_return): Use jump_insn. + (eh_return_si, eh_return_di): Change pattern to jump instruction. + 2004-05-26 Jan Hubicka * cfgcleanup.c (try_forward_edges): Do not check loop structure when diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 270168ff75b..40f33fba29e 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -137,11 +137,12 @@ ; 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) @@ -13880,6 +13881,7 @@ "" { 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 @@ -13890,16 +13892,19 @@ emit_move_insn (tmp, ra); if (Pmode == SImode) - emit_insn (gen_eh_return_si (sa)); + jmp = emit_jump_insn (gen_eh_return_si (sa)); else - emit_insn (gen_eh_return_di (sa)); + 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_barrier (); DONE; }) (define_insn_and_split "eh_return_si" - [(unspec_volatile [(match_operand:SI 0 "register_operand" "c")] - UNSPECV_EH_RETURN)] + [(set (pc) + (unspec [(match_operand:SI 0 "register_operand" "c")] + UNSPEC_EH_RETURN))] "!TARGET_64BIT" "#" "reload_completed" @@ -13907,8 +13912,9 @@ "ix86_expand_epilogue (2); DONE;") (define_insn_and_split "eh_return_di" - [(unspec_volatile [(match_operand:DI 0 "register_operand" "c")] - UNSPECV_EH_RETURN)] + [(set (pc) + (unspec [(match_operand:DI 0 "register_operand" "c")] + UNSPEC_EH_RETURN))] "TARGET_64BIT" "#" "reload_completed"