This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[PATCH] Fix recent i386 breakage caused by Jun, 27th changes


Hi!

Tue Jun 27 12:14:12 MET DST 2000  Jan Hubicka  <jh@suse.cz>
will cause the i386 backend to sometimes happily emit
xorb %si, %si
and in some other cases just ICE.
We cannot optimize and x, -256 with xorb x, x if we are not sure x is
Q_REGS. This patch tries to enforce it. Ok to commit?

2000-07-03  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (movstrictqi_xor): Use 'q' constraint instead
	of 'r'. Use q_regs_operand.
	(andsi_1+2): Use q_regs_operand.

--- gcc/config/i386/i386.md.jj	Sun Jul  2 10:37:13 2000
+++ gcc/config/i386/i386.md	Mon Jul  3 15:13:58 2000
@@ -1853,7 +1853,7 @@
    (set_attr "mode" "QI")])
 
 (define_insn "*movstrictqi_xor"
-  [(set (strict_low_part (match_operand:QI 0 "register_operand" "=r"))
+  [(set (strict_low_part (match_operand:QI 0 "q_regs_operand" "=q"))
 	(match_operand:QI 1 "const0_operand" "i"))
    (clobber (reg:CC 17))]
   "reload_completed && (!TARGET_USE_MOV0 || optimize_size)"
@@ -5000,7 +5000,7 @@
   "operands[1] = gen_lowpart (HImode, operands[0]);")
 
 (define_split
-  [(set (match_operand:SI 0 "register_operand" "")
+  [(set (match_operand:SI 0 "q_regs_operand" "")
 	(and:SI (match_dup 0)
 		(const_int -256)))
    (clobber (reg:CC 17))]

	Jakub

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]