aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-06-04 18:07:58 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2004-06-04 16:07:58 +0000
commit2e2052b19ad876dade65b7977f17708ffb057010 (patch)
treeb9ca2124f4ddd6213af5b4eb03b0c34f5fc579a1
parent9cf84a3cf034bdc70b501b592c1981221c115a2b (diff)
downloadgcc-2e2052b19ad876dade65b7977f17708ffb057010.zip
gcc-2e2052b19ad876dade65b7977f17708ffb057010.tar.gz
gcc-2e2052b19ad876dade65b7977f17708ffb057010.tar.bz2
Re-apply hopefully fixed patch:
* i386.md (UNSPECV_EH_RETURN): Kill. (eh_return): Use jump_insn. (eh_return_si, eh_return_di): Change pattern to jump instruction. From-SVN: r82624
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.md17
2 files changed, 17 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ecd7e0d..4c04a27 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2004-06-04 Jan Hubicka <jh@suse.cz>
+
+ Re-apply hopefully fixed patch:
+ * i386.md (UNSPECV_EH_RETURN): Kill.
+ (eh_return): Use jump_insn.
+ (eh_return_si, eh_return_di): Change pattern to jump instruction.
+
2004-06-04 Jeff Law <law@redhat.com>
* cfgrtl.c (try_redirect_by_replacing_jump): Fix return value.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 270168f..770a7af 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)
@@ -13890,16 +13891,17 @@
emit_move_insn (tmp, ra);
if (Pmode == SImode)
- emit_insn (gen_eh_return_si (sa));
+ emit_jump_insn (gen_eh_return_si (sa));
else
- emit_insn (gen_eh_return_di (sa));
+ emit_jump_insn (gen_eh_return_di (sa));
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 +13909,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"