re PR target/53961 (internal compiler error: in memory_address_length, at config/i386/i386.c:23341)

PR target/53961

	Backport from mainline
	2012-04-25  Jakub Jelinek  <jakub@redhat.com>

	PR target/53110
	* config/i386/i386.md (and<mode>3): For andq $0xffffffff, reg
	instead expand it as zero extension.

From-SVN: r189491
This commit is contained in:
Uros Bizjak 2012-07-15 10:13:47 +02:00 committed by Uros Bizjak
parent d5c6e86058
commit 486f7806a5
2 changed files with 22 additions and 1 deletions

View File

@ -1,3 +1,14 @@
2012-07-15 Uros Bizjak <ubizjak@gmail.com>
PR target/53961
Backport from mainline
2012-04-25 Jakub Jelinek <jakub@redhat.com>
PR target/53110
* config/i386/i386.md (and<mode>3): For andq $0xffffffff, reg
instead expand it as zero extension.
2012-07-14 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (QImode and HImode cmove splitters): Merge

View File

@ -7692,7 +7692,17 @@
(and:SWIM (match_operand:SWIM 1 "nonimmediate_operand" "")
(match_operand:SWIM 2 "<general_szext_operand>" "")))]
""
"ix86_expand_binary_operator (AND, <MODE>mode, operands); DONE;")
{
if (<MODE>mode == DImode
&& GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) == (HOST_WIDE_INT) 0xffffffff
&& REG_P (operands[1]))
emit_insn (gen_zero_extendsidi2 (operands[0],
gen_lowpart (SImode, operands[1])));
else
ix86_expand_binary_operator (AND, <MODE>mode, operands);
DONE;
})
(define_insn "*anddi_1"
[(set (match_operand:DI 0 "nonimmediate_operand" "=r,rm,r,r")