re PR target/30039 (HPPA: Incorrect code generated on 64bit host)

PR target/30039
	* pa.md (high:DI and lo_sum:DI): Handle 64-bit CONST_INTs in 32-bit
	patterns.  Correct length of high:DI instruction sequence.

From-SVN: r119669
This commit is contained in:
John David Anglin 2006-12-08 23:41:03 +00:00 committed by John David Anglin
parent 44f31fec96
commit 920aeaf3da
2 changed files with 20 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2006-12-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR target/30039
* pa.md (high:DI and lo_sum:DI): Handle 64-bit CONST_INTs in 32-bit
patterns. Correct length of high:DI instruction sequence.
2006-12-08 Mike Stump <mrs@apple.com>
* config/rs6000/t-darwin (TARGET_LIBGCC2_CFLAGS): Build

View File

@ -4427,6 +4427,7 @@
switch (GET_CODE (op1))
{
case CONST_INT:
#if HOST_BITS_PER_WIDE_INT <= 32
operands[0] = operand_subword (op0, 1, 0, DImode);
output_asm_insn (\"ldil L'%1,%0\", operands);
@ -4435,6 +4436,15 @@
output_asm_insn (\"ldi -1,%0\", operands);
else
output_asm_insn (\"ldi 0,%0\", operands);
#else
operands[0] = operand_subword (op0, 1, 0, DImode);
operands[1] = GEN_INT (INTVAL (op1) & 0xffffffff);
output_asm_insn (\"ldil L'%1,%0\", operands);
operands[0] = operand_subword (op0, 0, 0, DImode);
operands[1] = GEN_INT (INTVAL (op1) >> 32);
output_asm_insn (singlemove_string (operands), operands);
#endif
break;
case CONST_DOUBLE:
@ -4453,7 +4463,7 @@
return \"\";
}"
[(set_attr "type" "move")
(set_attr "length" "8")])
(set_attr "length" "12")])
(define_insn ""
[(set (match_operand:DI 0 "move_dest_operand"
@ -4613,6 +4623,9 @@
handle it correctly. */
if (GET_CODE (operands[2]) == CONST_DOUBLE)
operands[2] = GEN_INT (CONST_DOUBLE_LOW (operands[2]));
else if (HOST_BITS_PER_WIDE_INT > 32
&& GET_CODE (operands[2]) == CONST_INT)
operands[2] = GEN_INT (INTVAL (operands[2]) & 0xffffffff);
if (which_alternative == 1)
output_asm_insn (\"copy %1,%0\", operands);
return \"ldo R'%G2(%R1),%R0\";