]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
arm.c (arm_hard_regno_mode_ok): Permit values of four words or less (including TImode...
authorJulian Brown <julian@codesourcery.com>
Wed, 3 Jun 2009 16:01:38 +0000 (16:01 +0000)
committerJulian Brown <jules@gcc.gnu.org>
Wed, 3 Jun 2009 16:01:38 +0000 (16:01 +0000)
* config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
words or less (including TImode) in core registers.

From-SVN: r148135

gcc/ChangeLog
gcc/config/arm/arm.c

index d4261298f7f4ab04f2684764ca88e818ef7517de..c1e05ca606cd5cb7c3191a624ae45c1bf30c4849 100644 (file)
@@ -1,3 +1,8 @@
+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>
 
        PR middle-end/40328
index 24a94a6ebfbd8a1046047f3962f322ed57f2f9f4..cf3ef2323c0fa2c7a14e54cbd3b60a8a29d750ff 100644 (file)
@@ -14741,13 +14741,13 @@ arm_hard_regno_mode_ok (unsigned int regno, enum machine_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
-     use ldrd.  Do not allow Neon structure opaque modes in general registers;
-     they would use too many.  */
+     use ldrd.  Do not allow very large Neon structure opaque modes in
+     general registers; they would use too many.  */
   if (regno <= LAST_ARM_REGNUM)
     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
       || regno == ARG_POINTER_REGNUM)