arm.c (arm_override_options): Error on iWMMXt and hardware floating point.
authorPaul Brook <paul@codesourcery.com>
Fri, 21 Apr 2006 17:05:51 +0000 (17:05 +0000)
committerPaul Brook <pbrook@gcc.gnu.org>
Fri, 21 Apr 2006 17:05:51 +0000 (17:05 +0000)
2006-04-21  Paul Brook  <paul@codesourcery.com>

gcc/
* config/arm/arm.c (arm_override_options): Error on iWMMXt and
hardware floating point.
gcc/testsuite/
* gcc.dg/arm-vfp1.c: Skip on iWMMXt cpus.

From-SVN: r113138

gcc/ChangeLog
gcc/config/arm/arm.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/arm-vfp1.c

index a3372b65542a858792c9ff2f5aa0558547330b04..9f1bdd66a96f55de9f32af4ff181b4e4c85c7e96 100644 (file)
@@ -1,3 +1,8 @@
+2006-04-21  Paul Brook  <paul@codesourcery.com>
+
+       * config/arm/arm.c (arm_override_options): Error on iWMMXt and
+       hardware floating point.
+
 2006-04-21  David Edelsohn  <edelsohn@gnu.org>
 
        * config/rs6000/rs6000.h (REG_CLASS_CONTENTS): Add sfp to
index 0f46b3e8dd9397f4dfd30f9b4bbe9e6daa5bce15..3b221e2977e680038f5c3ca37261a5aeafccb278 100644 (file)
@@ -1230,6 +1230,12 @@ arm_override_options (void)
   if (arm_float_abi == ARM_FLOAT_ABI_HARD && TARGET_VFP)
     sorry ("-mfloat-abi=hard and VFP");
 
+  /* FPA and iWMMXt are incompatible because the insn encodings overlap.
+     VFP and iWMMXt can theoretically coexist, but it's unlikely such silicon
+     will ever exist.  GCC makes no attempt to support this combination.  */
+  if (TARGET_IWMMXT && !TARGET_SOFT_FLOAT)
+    sorry ("iWMMXt and hardware floating point");
+
   /* If soft-float is specified then don't use FPU.  */
   if (TARGET_SOFT_FLOAT)
     arm_fpu_arch = FPUTYPE_NONE;
index bc315da37698d33ca6d0201df64a8275c0be864c..544ec0d47c8686f9f2f04875c0f431c92e6649ac 100644 (file)
@@ -1,3 +1,7 @@
+2006-04-21  Paul Brook  <paul@codesourcery.com>
+
+       * gcc.dg/arm-vfp1.c: Skip on iWMMXt cpus.
+
 2006-04-21 Paul Thomas <pault@gcc.gnu.org>
 
        PR fortran/27122
index 5898e8027e62c935bde4d4806465fe502e663279..3b6a45dc23fa1f3037102122683bfc6e07caf8df 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-skip-if "" { *-*-* } { "-mcpu=iwmmxt" "-march=iwmmxt" } { "" } } */
 
 extern float fabsf (float);
 extern float sqrtf (float);