]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR target/56979
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 8 Aug 2013 13:34:45 +0000 (13:34 +0000)
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 8 Aug 2013 13:34:45 +0000 (13:34 +0000)
* arm.c (aapcs_vfp_allocate): Decompose the argument if the
suggested mode for the assignment isn't compatible with the
registers required.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201598 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 4410a8ca1ef16b7c57332accbf89ec90cc893383..5645867fc74d9393acecd838528d0295f7f4d877 100644 (file)
@@ -1,3 +1,10 @@
+2013-08-08  Richard Earnshaw  <rearnsha@arm.com>
+
+       PR target/56979
+       * arm.c (aapcs_vfp_allocate): Decompose the argument if the
+       suggested mode for the assignment isn't compatible with the
+       registers required.
+
 2013-08-08  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
        PR target/58065
index 8c1dce9478d9f371260d4fd7df71174cfb67836e..f731bb60beb64407a5836fe0e913cc9865b5c43d 100644 (file)
@@ -4544,7 +4544,9 @@ aapcs_vfp_allocate (CUMULATIVE_ARGS *pcum, enum machine_mode mode,
     if (((pcum->aapcs_vfp_regs_free >> regno) & mask) == mask)
       {
        pcum->aapcs_vfp_reg_alloc = mask << regno;
-       if (mode == BLKmode || (mode == TImode && !TARGET_NEON))
+       if (mode == BLKmode
+           || (mode == TImode && ! TARGET_NEON)
+           || ! arm_hard_regno_mode_ok (FIRST_VFP_REGNUM + regno, mode))
          {
            int i;
            int rcount = pcum->aapcs_vfp_rcount;