From: James Van Artsdalen Date: Sun, 6 Sep 1992 10:36:53 +0000 (+0000) Subject: (cmpstrsi): Rewrite expander to handle operands correctly. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=783cdf659a4dd424fd224fb2aaeb7cad2e5e4bcf;p=gcc.git (cmpstrsi): Rewrite expander to handle operands correctly. From-SVN: r2060 --- diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index e2121260747..3edce9fa178 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -3938,20 +3938,28 @@ (define_expand "cmpstrsi" [(parallel [(set (match_operand:QI 0 "general_operand" "") - (compare:CC - (mem:BLK (match_operand:BLK 1 "address_operand" "")) - (mem:BLK (match_operand:BLK 2 "address_operand" "")))) + (compare:CC (match_operand:BLK 1 "general_operand" "") + (match_operand:BLK 2 "general_operand" ""))) (use (match_operand:SI 3 "general_operand" "")) (use (match_operand:SI 4 "immediate_operand" "")) - (clobber (match_dup 1)) - (clobber (match_dup 2)) + (clobber (match_dup 5)) + (clobber (match_dup 6)) (clobber (match_dup 3))])] "" " { - operands[1] = copy_to_mode_reg (SImode, XEXP (operands[1], 0)); - operands[2] = copy_to_mode_reg (SImode, XEXP (operands[2], 0)); + rtx addr1, addr2; + + addr1 = copy_to_mode_reg (Pmode, XEXP (operands[1], 0)); + addr2 = copy_to_mode_reg (Pmode, XEXP (operands[2], 0)); operands[3] = copy_to_mode_reg (SImode, operands[3]); + + operands[5] = addr1; + operands[6] = addr2; + + operands[1] = gen_rtx (MEM, BLKmode, addr1); + operands[2] = gen_rtx (MEM, BLKmode, addr2); + }") ;; memcmp recognizers. The `cmpsb' opcode does nothing if the count is