aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2006-04-21 17:05:51 +0000
committerPaul Brook <pbrook@gcc.gnu.org>2006-04-21 17:05:51 +0000
commit87b24aaf2bc34c0f1b880bb1bcff1ac2752f712a (patch)
tree1134e63fbe6a39377108b9157c654e6bf544ded2 /gcc
parente3604432aabe83c4378277086cf511d19791ff2f (diff)
downloadgcc-87b24aaf2bc34c0f1b880bb1bcff1ac2752f712a.zip
gcc-87b24aaf2bc34c0f1b880bb1bcff1ac2752f712a.tar.gz
gcc-87b24aaf2bc34c0f1b880bb1bcff1ac2752f712a.tar.bz2
arm.c (arm_override_options): Error on iWMMXt and hardware floating point.
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/arm.c6
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/arm-vfp1.c1
4 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a3372b6..9f1bdd6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 0f46b3e..3b221e2 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -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;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index bc315da..544ec0d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/gcc.dg/arm-vfp1.c b/gcc/testsuite/gcc.dg/arm-vfp1.c
index 5898e802..3b6a45d 100644
--- a/gcc/testsuite/gcc.dg/arm-vfp1.c
+++ b/gcc/testsuite/gcc.dg/arm-vfp1.c
@@ -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);