This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Revision 144098 (d.d. Wed Feb 11 08:56:41 2009 UTC (4 weeks ago)) is not a regression bug fix.
Toon Moene wrote:
> H.J. Lu wrote:
>
>> If you can provide a testcase, I can take a look. If it isn't easy to
>> find
>> a testcase, please disable the second pattern:
>>
>> (define_peephole2
>> [(set (match_operand 0 "register_operand" "")
>> (match_operand 1 "register_operand" ""))
>> (set (match_dup 0)
>> (match_operator 3 "commutative_operator"
>> [(match_dup 0)
>> (match_operand 2 "memory_operand" "")]))]
>> "operands[0] != operands[1]
>> && ((MMX_REG_P (operands[0]) && MMX_REG_P (operands[1]))
>> || (SSE_REG_P (operands[0]) && SSE_REG_P (operands[1])))"
>> [(set (match_dup 0) (match_dup 2))
>> (set (match_dup 0)
>> (match_op_dup 3 [(match_dup 0) (match_dup 1)]))]
>> "")
>>
>> to see if it makes a difference.
>
> Thanks. Test case is hard, but this is easy to try. Expect an answer
> from me tomorrow (e.g. 12 UTC).
In case it does *not* make a difference, please try this patch:
Index: config/i386/i386.md
===================================================================
--- config/i386/i386.md (revision 144464)
+++ config/i386/i386.md (working copy)
@@ -20788,12 +20788,12 @@
;; refers to the destination of the load!
(define_peephole2
- [(set (match_operand:SI 0 "register_operand" "")
- (match_operand:SI 1 "register_operand" ""))
+ [(set (match_operand:P 0 "register_operand" "")
+ (match_operand:P 1 "register_operand" ""))
(parallel [(set (match_dup 0)
- (match_operator:SI 3 "commutative_operator"
+ (match_operator:P 3 "commutative_operator"
[(match_dup 0)
- (match_operand:SI 2 "memory_operand" "")]))
+ (match_operand:P 2 "memory_operand" "")]))
(clobber (reg:CC FLAGS_REG))])]
"operands[0] != operands[1]
&& GENERAL_REGNO_P (REGNO (operands[0]))
Thanks,
Paolo