arm.h (CANNOT_CHANGE_MODE_CLASS): Restrict FPA_REGS case to VFPv1.
authorRichard Sandiford <richard.sandiford@linaro.org>
Fri, 25 Mar 2011 18:26:40 +0000 (18:26 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Fri, 25 Mar 2011 18:26:40 +0000 (18:26 +0000)
gcc/
* config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Restrict FPA_REGS
case to VFPv1.

From-SVN: r171520

gcc/ChangeLog
gcc/config/arm/arm.h

index fec8d1baa3197e70788d75ed4f756d32e1576e30..64c4b5a0cbc95a32471d5aa2fbdf90fe4c8cfd79 100644 (file)
@@ -1,3 +1,8 @@
+2011-03-25  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Restrict FPA_REGS
+       case to VFPv1.
+
 2011-03-25  Nathan Froyd  <froydnj@codesourcery.com>
 
        * fold-const.c (expr_location_or): New function.
index 221fbf2d92ee992c6e66f851294f17a179755125..add8eced3ed567429aa098479051bd52556e72e9 100644 (file)
@@ -1167,12 +1167,12 @@ enum reg_class
 }
 
 /* FPA registers can't do subreg as all values are reformatted to internal
-   precision.  VFP registers may only be accessed in the mode they
-   were set.  */
-#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS)      \
-  (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO)          \
-   ? reg_classes_intersect_p (FPA_REGS, (CLASS))       \
-     || reg_classes_intersect_p (VFP_REGS, (CLASS))    \
+   precision.  In VFPv1, VFP registers could only be accessed in the mode
+   they were set, so subregs would be invalid there too.  However, we don't
+   support VFPv1 at the moment, and the restriction was lifted in VFPv2.  */
+#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS)              \
+  (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO)                  \
+   ? reg_classes_intersect_p (FPA_REGS, (CLASS))               \
    : 0)
 
 /* The class value for index registers, and the one for base regs.  */