aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJanis Johnson <janisjo@codesourcery.com>2013-01-17 15:50:51 +0000
committerJanis Johnson <janis@gcc.gnu.org>2013-01-17 15:50:51 +0000
commit1f98b7b2e5fa1e0b3e281b5873bc6119bd4e4583 (patch)
tree05be4ab24e59098b35f7b4dac95a35b1018ce72d /gcc
parent922c57d1ba5cb53ba29bc303ab66e869065d540b (diff)
downloadgcc-1f98b7b2e5fa1e0b3e281b5873bc6119bd4e4583.zip
gcc-1f98b7b2e5fa1e0b3e281b5873bc6119bd4e4583.tar.gz
gcc-1f98b7b2e5fa1e0b3e281b5873bc6119bd4e4583.tar.bz2
ftest-support.h: Replace for compile-only tests.
* gcc.target/arm/ftest-support.h: Replace for compile-only tests. * gcc.target/arm/ftest-support-arm.h: Delete. * gcc.target/arm/ftest-support-thumb.h: Delete. * gcc.target/arm/ftest-armv4-arm.c: Replace with compile-only test. * gcc.target/arm/ftest-armv4t-arm.c: Likewise. * gcc.target/arm/ftest-armv4t-thumb.c: Likewise. * gcc.target/arm/ftest-armv5t-arm.c: Likewise. * gcc.target/arm/ftest-armv5t-thumb.c: Likewise. * gcc.target/arm/ftest-armv5te-arm.c: Likewise. * gcc.target/arm/ftest-armv5te-thumb.c: Likewise. * gcc.target/arm/ftest-armv6-arm.c: Likewise. * gcc.target/arm/ftest-armv6-thumb.c: Likewise. * gcc.target/arm/ftest-armv6k-arm.c: Likewise. * gcc.target/arm/ftest-armv6k-thumb.c: Likewise. * gcc.target/arm/ftest-armv6m-thumb.c: Likewise. * gcc.target/arm/ftest-armv6t2-arm.c: Likewise. * gcc.target/arm/ftest-armv6t2-thumb.c: Likewise. * gcc.target/arm/ftest-armv6z-arm.c: Likewise. * gcc.target/arm/ftest-armv6z-thumb.c: Likewise. * gcc.target/arm/ftest-armv7a-arm.c: Likewise. * gcc.target/arm/ftest-armv7a-thumb.c: Likewise. * gcc.target/arm/ftest-armv7em-thumb.c: Likewise. * gcc.target/arm/ftest-armv7m-thumb.c: Likewise. * gcc.target/arm/ftest-armv7r-arm.c: Likewise. * gcc.target/arm/ftest-armv7r-thumb.c: Likewise. * gcc.target/arm/ftest-armv8a-arm.c: Likewise. * gcc.target/arm/ftest-armv8a-thumb.c: Likewise. From-SVN: r195270
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog30
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c19
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c20
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv4t-thumb.c20
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv5t-arm.c23
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv5t-thumb.c20
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv5te-arm.c29
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv5te-thumb.c20
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv6-arm.c41
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv6-thumb.c23
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv6k-arm.c41
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv6k-thumb.c23
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv6m-thumb.c20
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv6t2-arm.c41
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv6t2-thumb.c38
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv6z-arm.c41
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv6z-thumb.c23
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv7a-arm.c44
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv7a-thumb.c44
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv7em-thumb.c41
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv7m-thumb.c35
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv7r-arm.c44
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv7r-thumb.c44
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv8a-arm.c44
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-armv8a-thumb.c44
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-support-arm.h30
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-support-thumb.h30
-rw-r--r--gcc/testsuite/gcc.target/arm/ftest-support.h214
28 files changed, 739 insertions, 347 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f6bef19..1c1bd7b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,33 @@
+2013-01-17 Janis Johnson <janisjo@codesourcery.com>
+
+ * gcc.target/arm/ftest-support.h: Replace for compile-only tests.
+ * gcc.target/arm/ftest-support-arm.h: Delete.
+ * gcc.target/arm/ftest-support-thumb.h: Delete.
+ * gcc.target/arm/ftest-armv4-arm.c: Replace with compile-only test.
+ * gcc.target/arm/ftest-armv4t-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv4t-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv5t-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv5t-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv5te-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv5te-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv6-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv6-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv6k-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv6k-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv6m-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv6t2-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv6t2-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv6z-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv6z-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv7a-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv7a-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv7em-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv7m-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv7r-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv7r-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv8a-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv8a-thumb.c: Likewise.
+
2013-01-17 Martin Jambor <mjambor@suse.cz>
PR tree-optimizations/55264
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c
index acaf72e..4b48ef8 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c
@@ -1,14 +1,15 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_nothumb } */
-/* { dg-require-effective-target arm_arch_v4_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv4" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
/* { dg-options "-marm" } */
/* { dg-add-options arm_arch_v4 } */
-#include "ftest-support-arm.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 4
+
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+
+#include "ftest-support.h"
-int
-main (void)
-{
- return ftest (ARCH_V4);
-}
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c
index 7af6167..016506f 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c
@@ -1,14 +1,16 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_nothumb } */
-/* { dg-require-effective-target arm_arch_v4t_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv4t" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
/* { dg-options "-marm" } */
/* { dg-add-options arm_arch_v4t } */
-#include "ftest-support-arm.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 4
-int
-main (void)
-{
- return ftest (ARCH_V4T);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv4t-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv4t-thumb.c
index 1e6a2da..9ef944e 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv4t-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv4t-thumb.c
@@ -1,14 +1,16 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v4t_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv4t" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v4t } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 4
-int
-main (void)
-{
- return ftest (ARCH_V4T);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv5t-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv5t-arm.c
index cc7fc71..a9403e9 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv5t-arm.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv5t-arm.c
@@ -1,14 +1,19 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_nothumb } */
-/* { dg-require-effective-target arm_arch_v5t_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv5t" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
/* { dg-options "-marm" } */
/* { dg-add-options arm_arch_v5t } */
-#include "ftest-support-arm.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 5
-int
-main (void)
-{
- return ftest (ARCH_V5T);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv5t-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv5t-thumb.c
index b2b4727..f3ad07e 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv5t-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv5t-thumb.c
@@ -1,14 +1,16 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v5t_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv5t" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v5t } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 5
-int
-main (void)
-{
- return ftest (ARCH_V5T);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv5te-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv5te-arm.c
index 7595e19..f98c01a 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv5te-arm.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv5te-arm.c
@@ -1,14 +1,25 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_nothumb } */
-/* { dg-require-effective-target arm_arch_v5te_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv5te" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
/* { dg-options "-marm" } */
/* { dg-add-options arm_arch_v5te } */
-#include "ftest-support-arm.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 5
-int
-main (void)
-{
- return ftest (ARCH_V5TE);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv5te-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv5te-thumb.c
index a18ea52..5d71787 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv5te-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv5te-thumb.c
@@ -1,14 +1,16 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v5te_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv5te" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v5te } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 5
-int
-main (void)
-{
- return ftest (ARCH_V5TE);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv6-arm.c
index 465d187..88a5089 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv6-arm.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv6-arm.c
@@ -1,14 +1,37 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_nothumb } */
-/* { dg-require-effective-target arm_arch_v6_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
/* { dg-options "-marm" } */
/* { dg-add-options arm_arch_v6 } */
-#include "ftest-support-arm.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 6
-int
-main (void)
-{
- return ftest (ARCH_V6);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_LDREX
+#define VALUE_ARM_FEATURE_LDREX 4
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_SIMD32
+#define VALUE_ARM_FEATURE_SIMD32 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv6-thumb.c
index 0445587..0f42a0c 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv6-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv6-thumb.c
@@ -1,14 +1,19 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v6_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v6 } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 6
-int
-main (void)
-{
- return ftest (ARCH_V6);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6k-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv6k-arm.c
index c059b77..8de021a 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv6k-arm.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv6k-arm.c
@@ -1,14 +1,37 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_nothumb } */
-/* { dg-require-effective-target arm_arch_v6k_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6k" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
/* { dg-options "-marm" } */
/* { dg-add-options arm_arch_v6k } */
-#include "ftest-support-arm.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 6
-int
-main (void)
-{
- return ftest (ARCH_V6K);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_LDREX
+#define VALUE_ARM_FEATURE_LDREX 15
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_SIMD32
+#define VALUE_ARM_FEATURE_SIMD32 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6k-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv6k-thumb.c
index 8f19587..8e4a188 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv6k-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv6k-thumb.c
@@ -1,14 +1,19 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v6k_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6k" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v6k } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 6
-int
-main (void)
-{
- return ftest (ARCH_V6K);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6m-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv6m-thumb.c
index 1042761..ee075e2 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv6m-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv6m-thumb.c
@@ -1,14 +1,16 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v6m_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6-m" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v6m } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 6
-int
-main (void)
-{
- return ftest (ARCH_V6M);
-}
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+#define NEED_ARM_ARCH_PROFILE
+#define VALUE_ARM_ARCH_PROFILE 'M'
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6t2-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv6t2-arm.c
index 5f7f874..83b4bc4 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv6t2-arm.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv6t2-arm.c
@@ -1,14 +1,37 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_nothumb } */
-/* { dg-require-effective-target arm_arch_v6t2_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6t2" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
/* { dg-options "-marm" } */
/* { dg-add-options arm_arch_v6t2 } */
-#include "ftest-support-arm.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 6
-int
-main (void)
-{
- return ftest (ARCH_V6T2);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 2
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_LDREX
+#define VALUE_ARM_FEATURE_LDREX 4
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_SIMD32
+#define VALUE_ARM_FEATURE_SIMD32 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6t2-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv6t2-thumb.c
index e3695c4..1a1cbc5 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv6t2-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv6t2-thumb.c
@@ -1,14 +1,34 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v6t2_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6t2" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v6t2 } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 6
-int
-main (void)
-{
- return ftest (ARCH_V6T2);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 2
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_SIMD32
+#define VALUE_ARM_FEATURE_SIMD32 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6z-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv6z-arm.c
index 0797890..e2df0d4 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv6z-arm.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv6z-arm.c
@@ -1,14 +1,37 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_nothumb } */
-/* { dg-require-effective-target arm_arch_v6z_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6z" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
/* { dg-options "-marm" } */
/* { dg-add-options arm_arch_v6z } */
-#include "ftest-support-arm.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 6
-int
-main (void)
-{
- return ftest (ARCH_V6Z);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_LDREX
+#define VALUE_ARM_FEATURE_LDREX 4
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_SIMD32
+#define VALUE_ARM_FEATURE_SIMD32 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6z-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv6z-thumb.c
index c5a2e49..9761f0a 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv6z-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv6z-thumb.c
@@ -1,14 +1,19 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v6z_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6z" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v6z } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 6
-int
-main (void)
-{
- return ftest (ARCH_V6Z);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 1
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv7a-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv7a-arm.c
index e84559a..c71a7cd 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv7a-arm.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv7a-arm.c
@@ -1,14 +1,40 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_nothumb } */
-/* { dg-require-effective-target arm_arch_v7a_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv7-a" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
/* { dg-options "-marm" } */
/* { dg-add-options arm_arch_v7a } */
-#include "ftest-support-arm.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 7
-int
-main (void)
-{
- return ftest (ARCH_V7A);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 2
+
+#define NEED_ARM_ARCH_PROFILE
+#define VALUE_ARM_ARCH_PROFILE 'A'
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_LDREX
+#define VALUE_ARM_FEATURE_LDREX 15
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_SIMD32
+#define VALUE_ARM_FEATURE_SIMD32 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv7a-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv7a-thumb.c
index ad9b4e3..ac05ffa 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv7a-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv7a-thumb.c
@@ -1,14 +1,40 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v7a_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=aramv7-a" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v7a } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 7
-int
-main (void)
-{
- return ftest (ARCH_V7A);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 2
+
+#define NEED_ARM_ARCH_PROFILE
+#define VALUE_ARM_ARCH_PROFILE 'A'
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_LDREX
+#define VALUE_ARM_FEATURE_LDREX 15
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_SIMD32
+#define VALUE_ARM_FEATURE_SIMD32 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv7em-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv7em-thumb.c
index 7ef9210..688d766 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv7em-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv7em-thumb.c
@@ -1,14 +1,37 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v7em_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv7e-m" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v7em } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 7
-int
-main (void)
-{
- return ftest (ARCH_V7EM);
-}
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 2
+#define NEED_ARM_ARCH_PROFILE
+#define VALUE_ARM_ARCH_PROFILE 'M'
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_LDREX
+#define VALUE_ARM_FEATURE_LDREX 7
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_SIMD32
+#define VALUE_ARM_FEATURE_SIMD32 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv7m-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv7m-thumb.c
index 8bf875e..363b48b 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv7m-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv7m-thumb.c
@@ -1,14 +1,31 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v7m_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=arm7-m" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v7m } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 7
-int
-main (void)
-{
- return ftest (ARCH_V7M);
-}
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 2
+#define NEED_ARM_ARCH_PROFILE
+#define VALUE_ARM_ARCH_PROFILE 'M'
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_LDREX
+#define VALUE_ARM_FEATURE_LDREX 7
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv7r-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv7r-arm.c
index 4422564..08c017f 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv7r-arm.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv7r-arm.c
@@ -1,14 +1,40 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_nothumb } */
-/* { dg-require-effective-target arm_arch_v7r_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv7-r" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
/* { dg-options "-marm" } */
/* { dg-add-options arm_arch_v7r } */
-#include "ftest-support-arm.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 7
-int
-main (void)
-{
- return ftest (ARCH_V7R);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 2
+
+#define NEED_ARM_ARCH_PROFILE
+#define VALUE_ARM_ARCH_PROFILE 'R'
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_LDREX
+#define VALUE_ARM_FEATURE_LDREX 15
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_SIMD32
+#define VALUE_ARM_FEATURE_SIMD32 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv7r-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv7r-thumb.c
index da866e4..1b69dc0 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv7r-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv7r-thumb.c
@@ -1,14 +1,40 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v7r_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv7-r" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v7r } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 7
-int
-main (void)
-{
- return ftest (ARCH_V7R);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 2
+
+#define NEED_ARM_ARCH_PROFILE
+#define VALUE_ARM_ARCH_PROFILE 'R'
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_LDREX
+#define VALUE_ARM_FEATURE_LDREX 15
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_SIMD32
+#define VALUE_ARM_FEATURE_SIMD32 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv8a-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv8a-arm.c
index 1fab3c8..7812c5c 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv8a-arm.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv8a-arm.c
@@ -1,14 +1,40 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_nothumb } */
-/* { dg-require-effective-target arm_arch_v8a_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv8-a" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
/* { dg-options "-marm" } */
/* { dg-add-options arm_arch_v8a } */
-#include "ftest-support-arm.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 8
-int
-main (void)
-{
- return ftest (ARCH_V8A);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 2
+
+#define NEED_ARM_ARCH_PROFILE
+#define VALUE_ARM_ARCH_PROFILE 'A'
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_LDREX
+#define VALUE_ARM_FEATURE_LDREX 15
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_SIMD32
+#define VALUE_ARM_FEATURE_SIMD32 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv8a-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv8a-thumb.c
index c57f4ce..605b173 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-armv8a-thumb.c
+++ b/gcc/testsuite/gcc.target/arm/ftest-armv8a-thumb.c
@@ -1,14 +1,40 @@
-/* { dg-do run } */
-/* { dg-require-effective-target arm_eabi } */
-/* { dg-require-effective-target arm_arch_v8a_multilib } */
+/* { dg-do compile } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv8-a" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
/* { dg-options "-mthumb" } */
/* { dg-add-options arm_arch_v8a } */
-#include "ftest-support-thumb.h"
+#define NEED_ARM_ARCH
+#define VALUE_ARM_ARCH 8
-int
-main (void)
-{
- return ftest (ARCH_V8A);
-}
+#define NEED_ARM_ARCH_ISA_ARM
+#define VALUE_ARM_ARCH_ISA_ARM 1
+#define NEED_ARM_ARCH_ISA_THUMB
+#define VALUE_ARM_ARCH_ISA_THUMB 2
+
+#define NEED_ARM_ARCH_PROFILE
+#define VALUE_ARM_ARCH_PROFILE 'A'
+
+#define NEED_ARM_FEATURE_UNALIGNED
+#define VALUE_ARM_FEATURE_UNALIGNED 1
+
+#define NEED_ARM_FEATURE_LDREX
+#define VALUE_ARM_FEATURE_LDREX 15
+
+#define NEED_ARM_FEATURE_CLZ
+#define VALUE_ARM_FEATURE_CLZ 1
+
+#define NEED_ARM_FEATURE_DSP
+#define VALUE_ARM_FEATURE_DSP 1
+
+#define NEED_ARM_FEATURE_SIMD32
+#define VALUE_ARM_FEATURE_SIMD32 1
+
+#define NEED_ARM_FEATURE_QBIT
+#define VALUE_ARM_FEATURE_QBIT 1
+
+#define NEED_ARM_FEATURE_SAT
+#define VALUE_ARM_FEATURE_SAT 1
+
+#include "ftest-support.h"
diff --git a/gcc/testsuite/gcc.target/arm/ftest-support-arm.h b/gcc/testsuite/gcc.target/arm/ftest-support-arm.h
deleted file mode 100644
index 2592074..0000000
--- a/gcc/testsuite/gcc.target/arm/ftest-support-arm.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "ftest-support.h"
-
- /*Feature matrix layout:
- __ARM_ARCH
- __ARM_ARCH_ISA_ARM
- __ARM_ARCH_ISA_THUMB
- __ARM_ARCH_PROFILE
- __ARM_FEATURE_UNALIGNED
- __ARM_FEATURE_LDREX
- __ARM_FEATURE_CLZ
- __ARM_FEATURE_DSP
- __ARM_FEATURE_SIMD32
- __ARM_FEATURE_QBIT
- __ARM_FEATURE_SAT
- */
-int feature_matrix[ARCH_COUNT][NUM_FEATURES] =
- {{4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V4. */
- {4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V4T. */
- {5, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0}, /* ARCH_V5T. */
- {5, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0}, /* ARCH_V5TE. */
- {6, 1, 1, 0, 1, 4, 1, 1, 1, 1, 1}, /* ARCH_V6. */
- {6, 1, 1, 0, 1, 15, 1, 1, 1, 1, 1}, /* ARCH_V6K. */
- {6, 1, 2, 0, 1, 4, 1, 1, 1, 1, 1}, /* ARCH_V6T2. */
- {6, 1, 1, 0, 1, 4, 1, 1, 1, 1, 1}, /* ARCH_V6Z. */
- {6, 0, 1, 'M', 0, 0, 1, 0, 0, 0, 0}, /* ARCH_V6M. */
- {7, 1, 2, 'A', 1, 15, 1, 1, 1, 1, 1}, /* ARCH_V7A. */
- {7, 1, 2, 'R', 1, 15, 1, 1, 1, 1, 1}, /* ARCH_V7R. */
- {7, 0, 2, 'M', 1, 7, 1, 0, 0, 1, 1}, /* ARCH_V7M. */
- {7, 0, 2, 'M', 1, 7, 1, 1, 0, 1, 1}, /* ARCH_V7EM. */
- {8, 1, 2, 'A', 1, 15, 1, 1, 1, 1, 1}}; /* ARCH_V8A. */
diff --git a/gcc/testsuite/gcc.target/arm/ftest-support-thumb.h b/gcc/testsuite/gcc.target/arm/ftest-support-thumb.h
deleted file mode 100644
index a587999..0000000
--- a/gcc/testsuite/gcc.target/arm/ftest-support-thumb.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "ftest-support.h"
-
- /*Feature matrix layout:
- __ARM_ARCH
- __ARM_ARCH_ISA_ARM
- __ARM_ARCH_ISA_THUMB
- __ARM_ARCH_PROFILE
- __ARM_FEATURE_UNALIGNED
- __ARM_FEATURE_LDREX
- __ARM_FEATURE_CLZ
- __ARM_FEATURE_DSP
- __ARM_FEATURE_SIMD32
- __ARM_FEATURE_QBIT
- __ARM_FEATURE_SAT
- */
-int feature_matrix[ARCH_COUNT][NUM_FEATURES] =
- {{4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V4. */
- {4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V4T. */
- {5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V5T. */
- {5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V5TE. */
- {6, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0}, /* ARCH_V6. */
- {6, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0}, /* ARCH_V6K. */
- {6, 1, 2, 0, 1, 0, 1, 1, 1, 1, 1}, /* ARCH_V6T2. */
- {6, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0}, /* ARCH_V6Z. */
- {6, 0, 1, 'M', 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V6M. */
- {7, 1, 2, 'A', 1, 15, 1, 1, 1, 1, 1}, /* ARCH_V7A. */
- {7, 1, 2, 'R', 1, 15, 1, 1, 1, 1, 1}, /* ARCH_V7R. */
- {7, 0, 2, 'M', 1, 7, 1, 0, 0, 1, 1}, /* ARCH_V7M. */
- {7, 0, 2, 'M', 1, 7, 1, 1, 1, 1, 1}, /* ARCH_V7EM. */
- {8, 1, 2, 'A', 1, 15, 1, 1, 1, 1, 1}}; /* ARCH_V8A. */
diff --git a/gcc/testsuite/gcc.target/arm/ftest-support.h b/gcc/testsuite/gcc.target/arm/ftest-support.h
index 5983760..c56d2d5 100644
--- a/gcc/testsuite/gcc.target/arm/ftest-support.h
+++ b/gcc/testsuite/gcc.target/arm/ftest-support.h
@@ -1,84 +1,156 @@
-#if 0
-#define INTERNAL_DEBUG 1
-#endif
+/* For each of several ARM architecture features, check that relevant
+ macros are defined or not, and that they have the expected values. */
-#ifdef INTERNAL_DEBUG
-#include <stdio.h>
+#ifdef NEED_ARM_ARCH
+# ifdef __ARM_ARCH
+# if __ARM_ARCH != VALUE_ARM_ARCH
+# error __ARM_ARCH has unexpected value
+# endif
+# else
+# error __ARM_ARCH is not defined but should be
+# endif
+#else
+# ifdef __ARM_ARCH
+# error __ARM_ARCH is defined but should not be
+# endif
#endif
-extern void abort (void);
-
-enum architecture {
- ARCH_V4 = 0,
- ARCH_V4T,
- ARCH_V5T,
- ARCH_V5TE,
- ARCH_V6,
- ARCH_V6K,
- ARCH_V6T2,
- ARCH_V6Z,
- ARCH_V6M,
- ARCH_V7A,
- ARCH_V7R,
- ARCH_V7M,
- ARCH_V7EM,
- ARCH_V8A,
- ARCH_COUNT
-};
-
-#define NUM_FEATURES 11
-int feature_matrix[ARCH_COUNT][NUM_FEATURES];
-
-int
-ftest (int arch)
-{
- int features[NUM_FEATURES] = {0};
- int y;
-
- for (y = 0; y < NUM_FEATURES; ++y)
- features[y] = 0;
-
-#ifdef __ARM_ARCH
- features[0] = __ARM_ARCH;
-#endif
-#ifdef __ARM_ARCH_ISA_ARM
- features[1] = __ARM_ARCH_ISA_ARM;
-#endif
-#ifdef __ARM_ARCH_ISA_THUMB
- features[2] = __ARM_ARCH_ISA_THUMB;
-#endif
-#ifdef __ARM_ARCH_PROFILE
- features[3] = __ARM_ARCH_PROFILE;
+#ifdef NEED_ARM_ARCH_ISA_ARM
+# ifdef __ARM_ARCH_ISA_ARM
+# if __ARM_ARCH_ISA_ARM != VALUE_ARM_ARCH_ISA_ARM
+# error __ARM_ARCH_ISA_ARM has unexpected value
+# endif
+# else
+# error __ARM_ARCH_ISA_ARM is not defined but should be
+# endif
+#else
+# ifdef __ARM_ARCH_ISA_ARM
+# error __ARM_ARCH_ISA_ARM is defined but should not be
+# endif
#endif
-#ifdef __ARM_FEATURE_UNALIGNED
- features[4] = __ARM_FEATURE_UNALIGNED;
+
+#ifdef NEED_ARM_ARCH_ISA_THUMB
+# ifdef __ARM_ARCH_ISA_THUMB
+# if __ARM_ARCH_ISA_THUMB != VALUE_ARM_ARCH_ISA_THUMB
+# error __ARM_ARCH_ISA_THUMB has unexpected value
+# endif
+# else
+# error __ARM_ARCH_ISA_THUMB is not defined but should be
+# endif
+#else
+# ifdef __ARM_ARCH_ISA_THUMB
+# error __ARM_ARCH_ISA_THUMB is defined but should not be
+# endif
#endif
-#ifdef __ARM_FEATURE_LDREX
- features[5] = __ARM_FEATURE_LDREX;
+
+#ifdef NEED_ARM_ARCH_PROFILE
+# ifdef __ARM_ARCH_PROFILE
+# if __ARM_ARCH_PROFILE != VALUE_ARM_ARCH_PROFILE
+# error __ARM_ARCH_PROFILE has unexpected value
+# endif
+# else
+# error __ARM_ARCH_PROFILE is not defined but should be
+# endif
+#else
+# ifdef __ARM_ARCH_PROFILE
+# error __ARM_ARCH_PROFILE is defined but should not be
+# endif
#endif
-#ifdef __ARM_FEATURE_CLZ
- features[6] = __ARM_FEATURE_CLZ;
+
+#ifdef NEED_ARM_FEATURE_UNALIGNED
+# ifdef __ARM_FEATURE_UNALIGNED
+# if __ARM_FEATURE_UNALIGNED != VALUE_ARM_FEATURE_UNALIGNED
+# error __ARM_FEATURE_UNALIGNED has unexpected value
+# endif
+# else
+# error __ARM_FEATURE_UNALIGNED is not defined but should be
+# endif
+#else
+# ifdef __ARM_FEATURE_UNALIGNED
+# error __ARM_FEATURE_UNALIGNED is defined but should not be
+# endif
#endif
-#ifdef __ARM_FEATURE_DSP
- features[7] = __ARM_FEATURE_DSP;
+
+#ifdef NEED_ARM_FEATURE_LDREX
+# ifdef __ARM_FEATURE_LDREX
+# if __ARM_FEATURE_LDREX != VALUE_ARM_FEATURE_LDREX
+# error __ARM_FEATURE_LDREX has unexpected value
+# endif
+# else
+# error __ARM_FEATURE_LDREX is not defined but should be
+# endif
+#else
+# ifdef __ARM_FEATURE_LDREX
+# error __ARM_FEATURE_LDREX is defined but should not be
+# endif
#endif
-#ifdef __ARM_FEATURE_SIMD32
- features[8] = __ARM_FEATURE_SIMD32;
+
+#ifdef NEED_ARM_FEATURE_CLZ
+# ifdef __ARM_FEATURE_CLZ
+# if __ARM_FEATURE_CLZ != VALUE_ARM_FEATURE_CLZ
+# error __ARM_FEATURE_CLZ has unexpected value
+# endif
+# else
+# error __ARM_FEATURE_CLZ is not defined but should be
+# endif
+#else
+# ifdef __ARM_FEATURE_CLZ
+# error __ARM_FEATURE_CLZ is defined but should not be
+# endif
#endif
-#ifdef __ARM_FEATURE_QBIT
- features[9] = __ARM_FEATURE_QBIT;
+
+#ifdef NEED_ARM_FEATURE_DSP
+# ifdef __ARM_FEATURE_DSP
+# if __ARM_FEATURE_DSP != VALUE_ARM_FEATURE_DSP
+# error __ARM_FEATURE_DSP has unexpected value
+# endif
+# else
+# error __ARM_FEATURE_DSP is not defined but should be
+# endif
+#else
+# ifdef __ARM_FEATURE_DSP
+# error __ARM_FEATURE_DSP is defined but should not be
+# endif
#endif
-#ifdef __ARM_FEATURE_SAT
- features[10] = __ARM_FEATURE_SAT;
+
+#ifdef NEED_ARM_FEATURE_SIMD32
+# ifdef __ARM_FEATURE_SIMD32
+# if __ARM_FEATURE_SIMD32 != VALUE_ARM_FEATURE_SIMD32
+# error __ARM_FEATURE_SIMD32 has unexpected value
+# endif
+# else
+# error __ARM_FEATURE_SIMD32 is not defined but should be
+# endif
+#else
+# ifdef __ARM_FEATURE_SIMD32
+# error __ARM_FEATURE_SIMD32 is defined but should not be
+# endif
#endif
- for (y = 0; y < NUM_FEATURES; ++y)
- if (feature_matrix[arch][y] != features[y])
- {
-#ifdef INTERNAL_DEBUG
- printf ("%d, %d, %d, %d\n", arch, y, feature_matrix[arch][y], features[y]);
+
+#ifdef NEED_ARM_FEATURE_QBIT
+# ifdef __ARM_FEATURE_QBIT
+# if __ARM_FEATURE_QBIT != VALUE_ARM_FEATURE_QBIT
+# error __ARM_FEATURE_QBIT has unexpected value
+# endif
+# else
+# error __ARM_FEATURE_QBIT is not defined but should be
+# endif
+#else
+# ifdef __ARM_FEATURE_QBIT
+# error __ARM_FEATURE_QBIT is defined but should not be
+# endif
#endif
- abort ();
- }
- return 0;
-}
+#ifdef NEED_ARM_FEATURE_SAT
+# ifdef __ARM_FEATURE_SAT
+# if __ARM_FEATURE_SAT != VALUE_ARM_FEATURE_SAT
+# error __ARM_FEATURE_SAT has unexpected value
+# endif
+# else
+# error __ARM_FEATURE_SAT is not defined but should be
+# endif
+#else
+# ifdef __ARM_FEATURE_SAT
+# error __ARM_FEATURE_SAT is defined but should not be
+# endif
+#endif