2006-04-21 Paul Brook <paul@codesourcery.com>
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Apr 2006 17:05:51 +0000 (17:05 +0000)
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Apr 2006 17:05:51 +0000 (17:05 +0000)
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.

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

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

index a3372b6..9f1bdd6 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 0f46b3e..3b221e2 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 bc315da..544ec0d 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 5898e80..3b6a45d 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);