Commit dabbc722 by Jan Hubicka Committed by Jan Hubicka

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
parent b9d861bc
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> 2004-05-26 Jan Hubicka <jh@suse.cz>
* cfgcleanup.c (try_forward_edges): Do not check loop structure when * cfgcleanup.c (try_forward_edges): Do not check loop structure when
......
...@@ -137,11 +137,12 @@ ...@@ -137,11 +137,12 @@
; REP instruction ; REP instruction
(UNSPEC_REP 75) (UNSPEC_REP 75)
(UNSPEC_EH_RETURN 76)
]) ])
(define_constants (define_constants
[(UNSPECV_BLOCKAGE 0) [(UNSPECV_BLOCKAGE 0)
(UNSPECV_EH_RETURN 13)
(UNSPECV_EMMS 31) (UNSPECV_EMMS 31)
(UNSPECV_LDMXCSR 37) (UNSPECV_LDMXCSR 37)
(UNSPECV_STMXCSR 40) (UNSPECV_STMXCSR 40)
...@@ -13880,6 +13881,7 @@ ...@@ -13880,6 +13881,7 @@
"" ""
{ {
rtx tmp, sa = EH_RETURN_STACKADJ_RTX, ra = operands[0]; 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 /* 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 be returning into someone else's stack frame, one word below the
...@@ -13890,16 +13892,19 @@ ...@@ -13890,16 +13892,19 @@
emit_move_insn (tmp, ra); emit_move_insn (tmp, ra);
if (Pmode == SImode) if (Pmode == SImode)
emit_insn (gen_eh_return_si (sa)); jmp = emit_jump_insn (gen_eh_return_si (sa));
else 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 (); emit_barrier ();
DONE; DONE;
}) })
(define_insn_and_split "eh_return_si" (define_insn_and_split "eh_return_si"
[(unspec_volatile [(match_operand:SI 0 "register_operand" "c")] [(set (pc)
UNSPECV_EH_RETURN)] (unspec [(match_operand:SI 0 "register_operand" "c")]
UNSPEC_EH_RETURN))]
"!TARGET_64BIT" "!TARGET_64BIT"
"#" "#"
"reload_completed" "reload_completed"
...@@ -13907,8 +13912,9 @@ ...@@ -13907,8 +13912,9 @@
"ix86_expand_epilogue (2); DONE;") "ix86_expand_epilogue (2); DONE;")
(define_insn_and_split "eh_return_di" (define_insn_and_split "eh_return_di"
[(unspec_volatile [(match_operand:DI 0 "register_operand" "c")] [(set (pc)
UNSPECV_EH_RETURN)] (unspec [(match_operand:DI 0 "register_operand" "c")]
UNSPEC_EH_RETURN))]
"TARGET_64BIT" "TARGET_64BIT"
"#" "#"
"reload_completed" "reload_completed"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment