+2001-07-08 Richard Henderson <rth@redhat.com>
+
+ * config/i386/i386.md: Remove constraints strings from define_split
+ and define_peephole2 patterns.
+ (eh_return_si, eh_return_di): Split eh_return_1 for modes.
+ (eh_return): Use them.
+
2001-07-08 Richard Henderson <rth@redhat.com>
* doc/tm.texi (Exception Handling): New subnode of Stack and Calling.
(define_split
[(set (reg 17)
(compare (zero_extract
- (match_operand 0 "nonimmediate_operand" "rm")
+ (match_operand 0 "nonimmediate_operand" "")
(match_operand 1 "const_int_operand" "")
(match_operand 2 "const_int_operand" ""))
(const_int 0)))]
tmp = gen_rtx_MEM (Pmode, tmp);
emit_move_insn (tmp, ra);
- emit_insn (gen_eh_return_1 (sa));
+ if (Pmode == SImode)
+ emit_insn (gen_eh_return_si (sa));
+ else
+ emit_insn (gen_eh_return_di (sa));
emit_barrier ();
DONE;
})
-(define_insn_and_split "eh_return_1"
- [(unspec_volatile [(match_operand 0 "register_operand" "c")] 13)]
+(define_insn_and_split "eh_return_si"
+ [(unspec_volatile [(match_operand:SI 0 "register_operand" "c")] 13)]
+ ""
+ "#"
+ "reload_completed"
+ [(const_int 1)]
+ "ix86_expand_epilogue (2); DONE;")
+
+(define_insn_and_split "eh_return_di"
+ [(unspec_volatile [(match_operand:DI 0 "register_operand" "c")] 13)]
""
"#"
"reload_completed"
;; lifetime information then.
(define_peephole2
- [(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
- (not:SI (match_operand:SI 1 "nonimmediate_operand" "0")))]
+ [(set (match_operand:SI 0 "nonimmediate_operand" "")
+ (not:SI (match_operand:SI 1 "nonimmediate_operand" "")))]
"!optimize_size
&& peep2_regno_dead_p (0, FLAGS_REG)
&& ((TARGET_PENTIUM
"")
(define_peephole2
- [(set (match_operand:HI 0 "nonimmediate_operand" "=rm")
- (not:HI (match_operand:HI 1 "nonimmediate_operand" "0")))]
+ [(set (match_operand:HI 0 "nonimmediate_operand" "")
+ (not:HI (match_operand:HI 1 "nonimmediate_operand" "")))]
"!optimize_size
&& peep2_regno_dead_p (0, FLAGS_REG)
&& ((TARGET_PENTIUM
"")
(define_peephole2
- [(set (match_operand:QI 0 "nonimmediate_operand" "=rm")
- (not:QI (match_operand:QI 1 "nonimmediate_operand" "0")))]
+ [(set (match_operand:QI 0 "nonimmediate_operand" "")
+ (not:QI (match_operand:QI 1 "nonimmediate_operand" "")))]
"!optimize_size
&& peep2_regno_dead_p (0, FLAGS_REG)
&& ((TARGET_PENTIUM