Commit 2e94c12d by Julian Brown Committed by Julian Brown

arm.c (arm_hard_regno_mode_ok): Permit values of four words or less (including…

arm.c (arm_hard_regno_mode_ok): Permit values of four words or less (including TImode) in core registers.

	* config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
	words or less (including TImode) in core registers.

From-SVN: r148135
parent 3111cce0
2009-06-03 Julian Brown <julian@codesourcery.com>
* config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
words or less (including TImode) in core registers.
2009-06-03 Richard Guenther <rguenther@suse.de> 2009-06-03 Richard Guenther <rguenther@suse.de>
PR middle-end/40328 PR middle-end/40328
......
...@@ -14741,13 +14741,13 @@ arm_hard_regno_mode_ok (unsigned int regno, enum machine_mode mode) ...@@ -14741,13 +14741,13 @@ arm_hard_regno_mode_ok (unsigned int regno, enum machine_mode mode)
return VALID_IWMMXT_REG_MODE (mode); return VALID_IWMMXT_REG_MODE (mode);
} }
/* We allow any value to be stored in the general registers. /* We allow almost any value to be stored in the general registers.
Restrict doubleword quantities to even register pairs so that we can Restrict doubleword quantities to even register pairs so that we can
use ldrd. Do not allow Neon structure opaque modes in general registers; use ldrd. Do not allow very large Neon structure opaque modes in
they would use too many. */ general registers; they would use too many. */
if (regno <= LAST_ARM_REGNUM) if (regno <= LAST_ARM_REGNUM)
return !(TARGET_LDRD && GET_MODE_SIZE (mode) > 4 && (regno & 1) != 0) return !(TARGET_LDRD && GET_MODE_SIZE (mode) > 4 && (regno & 1) != 0)
&& !VALID_NEON_STRUCT_MODE (mode); && ARM_NUM_REGS (mode) <= 4;
if (regno == FRAME_POINTER_REGNUM if (regno == FRAME_POINTER_REGNUM
|| regno == ARG_POINTER_REGNUM) || regno == ARG_POINTER_REGNUM)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment