OSDN Git Service

PR target/56979
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Aug 2013 16:21:04 +0000 (16:21 +0000)
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Aug 2013 16:21:04 +0000 (16:21 +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/branches/gcc-4_7-branch@201904 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 702f6bc..5bcf448 100644 (file)
@@ -1,3 +1,10 @@
+2013-08-21  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-17  Uros Bizjak  <ubizjak@gmail.com>
 
        Backport from mainline
index 1fb7d70..6ed3575 100644 (file)
@@ -4355,7 +4355,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;