aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2006-04-22 16:16:53 +0000
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2006-04-22 16:16:53 +0000
commit4b324f27b1002d65973626f76a26faf03a436a11 (patch)
treef1ffdd0d842e2f6eebf9d7b2fc6be792a2445fe5
parentc019cb5acf34bc48241a63ae279881d2e0062262 (diff)
2006-04-22 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. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/csl-3_4_3-linux-branch@113176 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog.csl6
-rw-r--r--gcc/config/arm/arm.c6
-rw-r--r--gcc/testsuite/gcc.dg/arm-vfp1.c1
3 files changed, 13 insertions, 0 deletions
diff --git a/ChangeLog.csl b/ChangeLog.csl
index 9a1c5cf676e..87a9b76a796 100644
--- a/ChangeLog.csl
+++ b/ChangeLog.csl
@@ -1,3 +1,9 @@
+2006-04-22 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.
+
2006-04-21 Joseph Myers <joseph@codesourcery.com>
* gcc/config/arm/arm.c (arm_legitimate_index_p): Allow mode ==
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 2a9ef8573bf..7fd1aa148d5 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -1137,6 +1137,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/gcc.dg/arm-vfp1.c b/gcc/testsuite/gcc.dg/arm-vfp1.c
index e1b221e0e4f..56632492444 100644
--- a/gcc/testsuite/gcc.dg/arm-vfp1.c
+++ b/gcc/testsuite/gcc.dg/arm-vfp1.c
@@ -1,5 +1,6 @@
/* { dg-do compile { target arm*-*-* } } */
/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
+/* { dg-skip-if "" { *-*-* } { "-mcpu=iwmmxt" "-march=iwmmxt" } { "" } } */
extern float fabsf (float);
extern float sqrtf (float);