backport: re PR target/41702 (FAIL: abi/demangle/abi_text/09.cc execution test)

Backport from mainline:
	2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/41702
	* pa.md (casesi): Use sign extended index in call to
	gen_casesi64p.
	(casesi64p): Update pattern to reflect above.

From-SVN: r153042
This commit is contained in:
John David Anglin 2009-10-20 22:44:08 +00:00 committed by John David Anglin
parent 0d96f9b849
commit ccabc2287e
2 changed files with 22 additions and 13 deletions

View File

@ -1,3 +1,13 @@
2009-10-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Backport from mainline:
2009-10-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR target/41702
* pa.md (casesi): Use sign extended index in call to
gen_casesi64p.
(casesi64p): Update pattern to reflect above.
2009-10-20 Joseph Myers <joseph@codesourcery.com>
* config/arm/arm.c (output_move_neon): Use DImode in call to

View File

@ -7503,17 +7503,6 @@
operands[0] = index;
}
/* In 64bit mode we must make sure to wipe the upper bits of the register
just in case the addition overflowed or we had random bits in the
high part of the register. */
if (TARGET_64BIT)
{
rtx index = gen_reg_rtx (DImode);
emit_insn (gen_extendsidi2 (index, operands[0]));
operands[0] = gen_rtx_SUBREG (SImode, index, 4);
}
if (!INT_5_BITS (operands[2]))
operands[2] = force_reg (SImode, operands[2]);
@ -7530,6 +7519,17 @@
emit_insn (gen_cmpsi (operands[0], operands[2]));
emit_jump_insn (gen_bgtu (operands[4]));
/* In 64bit mode we must make sure to wipe the upper bits of the register
just in case the addition overflowed or we had random bits in the
high part of the register. */
if (TARGET_64BIT)
{
rtx index = gen_reg_rtx (DImode);
emit_insn (gen_extendsidi2 (index, operands[0]));
operands[0] = index;
}
if (TARGET_BIG_SWITCH)
{
if (TARGET_64BIT)
@ -7590,8 +7590,7 @@
;;; 64-bit code, 32-bit relative branch table.
(define_insn "casesi64p"
[(set (pc) (mem:DI (plus:DI
(mult:DI (sign_extend:DI
(match_operand:SI 0 "register_operand" "r"))
(mult:DI (match_operand:DI 0 "register_operand" "r")
(const_int 8))
(label_ref (match_operand 1 "" "")))))
(clobber (match_scratch:DI 2 "=&r"))