diff options
-rw-r--r-- | ChangeLog.csl | 6 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/arm-vfp1.c | 1 |
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); |