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
This commit is contained in:
parent
b9d861bc86
commit
dabbc72269
@ -1,3 +1,9 @@
|
||||
2004-05-27 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* 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 <jh@suse.cz>
|
||||
|
||||
* cfgcleanup.c (try_forward_edges): Do not check loop structure when
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user