[ARM/FDPIC v6 20/24] [ARM][testsuite] FDPIC: Skip tests using architectures unsupport...
authorChristophe Lyon <christophe.lyon@st.com>
Tue, 17 Sep 2019 12:35:21 +0000 (14:35 +0200)
committerChristophe Lyon <clyon@gcc.gnu.org>
Tue, 17 Sep 2019 12:35:21 +0000 (14:35 +0200)
Since FDPIC currently supports arm and thumb-2 modes only, these tests
fail because they enforce an architecture version that doesn't match
these restrictions.

This patch introduces new values for the arm_arch effective-target
(v4t_thumb, v5t_thumb, v5te_thumb, v6_thumb, v6k_thumb, v6z_thumb) as
needed, and adds them to the relevant tests.  In addition, it adds
v4t_arm, v5t_arm, v5te_arm, v6_arm, v6k_arm and v6z_arm to avoid
skipping some tests when GCC is configured to generate Thumb code by
default.

It also adds the corresponding non-thumb effective-target to the tests
that were missing it.

The existing v4t, v5t, v5te, v6 v6k and v6z effective-targets now force
-mfloat-abi=softfp since these thumb-1 targets do not support
hard-float anyway.

Finally, the patch removes the special case to detect the presence of
-marm in the flags, since it makes atomic_loaddi tests unsupported:
since the flags in question also include -march, the combination is
supported, while -marm alone is not if GCC is configured to target an
M-profile CPU.

2019-19-17  Christophe Lyon  <christophe.lyon@st.com>

* lib/target-supports.exp
(check_effective_target_arm_arch_FUNC_ok): Add v4t_arm, v4t_thumb,
v5t_arm, v5t_thumb, v5te_arm, v5te_thumb, v6_arm, v6_thumb,
v6k_arm, v6k_thumb, v6z_arm, v6z_thumb.
Add -mfloat-abi=softfp to v4t, v5t, v5te, v6, v6k, v6z.
Remove early exit for -marm.
* gcc.target/arm/armv6-unaligned-load-ice.c: Add arm_arch
effective-target.
* gcc.target/arm/attr-unaligned-load-ice.c: Likewise.
* gcc.target/arm/ftest-armv4-arm.c: Likewise.
* 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/g2.c: Likewise.
* gcc.target/arm/macro_defs1.c: Likewise.
* gcc.target/arm/pr59858.c: Likewise.
* gcc.target/arm/pr65647-2.c: Likewise.
* gcc.target/arm/pr79058.c: Likewise.
* gcc.target/arm/pr83712.c: Likewise.
* gcc.target/arm/pragma_arch_switch_2.c: Likewise.
* gcc.target/arm/scd42-1.c: Likewise.
* gcc.target/arm/scd42-2.c: Likewise.
* gcc.target/arm/scd42-3.c: Likewise.
* gcc.c-torture/compile/pr82096.c: Fix arm_arch effective-target.
* gcc.target/arm/attr_arm-err.c: Likewise.
* gcc.target/arm/di-longlong64-sync-withldrexd.c: Likewise.

From-SVN: r275803

33 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr82096.c
gcc/testsuite/gcc.target/arm/armv6-unaligned-load-ice.c
gcc/testsuite/gcc.target/arm/attr-unaligned-load-ice.c
gcc/testsuite/gcc.target/arm/attr_arm-err.c
gcc/testsuite/gcc.target/arm/di-longlong64-sync-withldrexd.c
gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c
gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c
gcc/testsuite/gcc.target/arm/ftest-armv4t-thumb.c
gcc/testsuite/gcc.target/arm/ftest-armv5t-arm.c
gcc/testsuite/gcc.target/arm/ftest-armv5t-thumb.c
gcc/testsuite/gcc.target/arm/ftest-armv5te-arm.c
gcc/testsuite/gcc.target/arm/ftest-armv5te-thumb.c
gcc/testsuite/gcc.target/arm/ftest-armv6-arm.c
gcc/testsuite/gcc.target/arm/ftest-armv6-thumb.c
gcc/testsuite/gcc.target/arm/ftest-armv6k-arm.c
gcc/testsuite/gcc.target/arm/ftest-armv6k-thumb.c
gcc/testsuite/gcc.target/arm/ftest-armv6m-thumb.c
gcc/testsuite/gcc.target/arm/ftest-armv6t2-arm.c
gcc/testsuite/gcc.target/arm/ftest-armv6t2-thumb.c
gcc/testsuite/gcc.target/arm/ftest-armv6z-arm.c
gcc/testsuite/gcc.target/arm/ftest-armv6z-thumb.c
gcc/testsuite/gcc.target/arm/g2.c
gcc/testsuite/gcc.target/arm/macro_defs1.c
gcc/testsuite/gcc.target/arm/pr59858.c
gcc/testsuite/gcc.target/arm/pr65647-2.c
gcc/testsuite/gcc.target/arm/pr79058.c
gcc/testsuite/gcc.target/arm/pr83712.c
gcc/testsuite/gcc.target/arm/pragma_arch_switch_2.c
gcc/testsuite/gcc.target/arm/scd42-1.c
gcc/testsuite/gcc.target/arm/scd42-2.c
gcc/testsuite/gcc.target/arm/scd42-3.c
gcc/testsuite/lib/target-supports.exp

index 1afad7897f7a53198c20f8c5ee3ea563c58d6c84..918cd4bb70fdaeaf6ad52715ca74d561784291e0 100644 (file)
@@ -1,3 +1,44 @@
+2019-19-17  Christophe Lyon  <christophe.lyon@st.com>
+
+       * lib/target-supports.exp
+       (check_effective_target_arm_arch_FUNC_ok): Add v4t_arm, v4t_thumb,
+       v5t_arm, v5t_thumb, v5te_arm, v5te_thumb, v6_arm, v6_thumb,
+       v6k_arm, v6k_thumb, v6z_arm, v6z_thumb.
+       Add -mfloat-abi=softfp to v4t, v5t, v5te, v6, v6k, v6z.
+       Remove early exit for -marm.
+       * gcc.target/arm/armv6-unaligned-load-ice.c: Add arm_arch
+       effective-target.
+       * gcc.target/arm/attr-unaligned-load-ice.c: Likewise.
+       * gcc.target/arm/ftest-armv4-arm.c: Likewise.
+       * 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/g2.c: Likewise.
+       * gcc.target/arm/macro_defs1.c: Likewise.
+       * gcc.target/arm/pr59858.c: Likewise.
+       * gcc.target/arm/pr65647-2.c: Likewise.
+       * gcc.target/arm/pr79058.c: Likewise.
+       * gcc.target/arm/pr83712.c: Likewise.
+       * gcc.target/arm/pragma_arch_switch_2.c: Likewise.
+       * gcc.target/arm/scd42-1.c: Likewise.
+       * gcc.target/arm/scd42-2.c: Likewise.
+       * gcc.target/arm/scd42-3.c: Likewise.
+       * gcc.c-torture/compile/pr82096.c: Fix arm_arch effective-target.
+       * gcc.target/arm/attr_arm-err.c: Likewise.
+       * gcc.target/arm/di-longlong64-sync-withldrexd.c: Likewise.
+
 2019-09-17  Feng Xue  <fxue@os.amperecomputing.com>
 
        PR ipa/91089
index d144b70585fb68df71a4a3caa01cdc91ced85e0e..4e695cd7e2e8b9abe7bb6ffb31f6629f1d9db324 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-require-effective-target arm_arch_v5t_ok { target arm*-*-* } } */
+/* { dg-require-effective-target arm_arch_v5t_thumb_ok { target arm*-*-* } } */
 /* { dg-skip-if "Do not combine float-abi values" { arm*-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=soft" } } */
 /* { dg-additional-options "-march=armv5t -mthumb -mfloat-abi=soft" { target arm*-*-* } } */
 
index 88528f11e121d7aa16607e4e4024ce01124e0fd4..886a0129f85dff3fcafe2a7462ac81c0b2ad13df 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6k" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
+/* { dg-require-effective-target arm_arch_v6k_thumb_ok } */
 /* { dg-options "-mthumb -Os -mfloat-abi=softfp" } */
 /* { dg-add-options arm_arch_v6k } */
 
index e1ed1c148e007c152275996568892d86320bb18b..2eeb5220545c2d0b8c19516ab29ffd15e9f0a868 100644 (file)
@@ -2,6 +2,7 @@
    Verify that unaligned_access is correctly with attribute target.  */
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6" } } */
+/* { dg-require-effective-target arm_arch_v6_ok } */
 /* { dg-options "-Os -mfloat-abi=softfp -mtp=soft" } */
 /* { dg-add-options arm_arch_v6 } */
 
index 630c06a03b121b9705e1422556bad8952885fc28..67d572ab2f30f76cb44da9bb281f7c684d23283a 100644 (file)
@@ -1,7 +1,7 @@
 /* Check that attribute target arm is rejected for M profile.  */
 /* { dg-do compile } */
-/* { dg-require-effective-target arm_arm_ok } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6-m" } } */
+/* { dg-require-effective-target arm_arch_v6m_ok } */
 /* { dg-add-options arm_arch_v6m } */
 
 int __attribute__((target("arm")))
index 517c4a89d191c0a6f8d0bb6b6e2723b1e2f3fb5b..befb7ecd90611be9806c587a56186dbad44dc415 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do compile } */
-/* { dg-require-effective-target arm_arm_ok } */
 /* { dg-options "-marm -std=gnu99" } */
-/* { dg-require-effective-target arm_arch_v6k_ok } */
+/* { dg-require-effective-target arm_arch_v6k_arm_ok } */
 /* { dg-add-options arm_arch_v6k } */
 /* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "fetch_and_nand" { target *-*-* } 0 } */
 /* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "nand_and_fetch" { target *-*-* } 0 } */
index 4b48ef803d4f53a67c4f36369cb4f537f584e7c7..447a8ec16ae684a08b3c1370063b3ebeb755deec 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv4" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
+/* { dg-require-effective-target arm_arch_v4_ok } */
 /* { dg-options "-marm" } */
 /* { dg-add-options arm_arch_v4 } */
 
index 016506f46e8f1fb12f3cd9fbce4b0e38f193b6fb..28fd2f79ddb79580c9d97418dfb51c4ef32ffa42 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv4t" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
+/* { dg-require-effective-target arm_arch_v4t_arm_ok } */
 /* { dg-options "-marm" } */
 /* { dg-add-options arm_arch_v4t } */
 
index 9ef944e5fbeaaef39e4eb04c1340ba3b660cedf5..78878f7d6ec2a539885c263717a64eda54b64b4e 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv4t" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
+/* { dg-require-effective-target arm_arch_v4t_thumb_ok } */
 /* { dg-options "-mthumb" } */
 /* { dg-add-options arm_arch_v4t } */
 
index a9403e97c1cbd010b279df03aa846b36d210d2f4..81912992037bd60c564b5f185600e89bec0fd4bc 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv5t" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
+/* { dg-require-effective-target arm_arch_v5t_arm_ok } */
 /* { dg-options "-marm" } */
 /* { dg-add-options arm_arch_v5t } */
 
index f3ad07ec04b1e24c3b109a45cd7dcdb50d86522b..b25d17db159367aa2a1f24280528c0b5be4aa447 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv5t" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
+/* { dg-require-effective-target arm_arch_v5t_thumb_ok } */
 /* { dg-options "-mthumb" } */
 /* { dg-add-options arm_arch_v5t } */
 
index f98c01a0e7cd6f690fd84c70efa1ff0674acba43..e0c0d5cf8d92e1121612e9e322820c6b52ecb048 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv5te" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
+/* { dg-require-effective-target arm_arch_v5te_arm_ok } */
 /* { dg-options "-marm" } */
 /* { dg-add-options arm_arch_v5te } */
 
index 5d71787e8c41bd8fe126233e9fc903c700ffc292..27a64a2227b207679d3c07f09109047716e43af5 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv5te" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
+/* { dg-require-effective-target arm_arch_v5te_thumb_ok } */
 /* { dg-options "-mthumb" } */
 /* { dg-add-options arm_arch_v5te } */
 
index 88a508954853dfccd2c5878e5ebd987655ab0fb1..5d447c3c18f9c7b5a3d0ba5c801e99fd3668b655 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
+/* { dg-require-effective-target arm_arch_v6_arm_ok } */
 /* { dg-options "-marm" } */
 /* { dg-add-options arm_arch_v6 } */
 
index 90ef9d2823aad67fe1b0afbd5cf4b7ef4cfabe29..15a6d75ccd26bdcb25f56ac1a81268954f7ee705 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
+/* { dg-require-effective-target arm_arch_v6_thumb_ok } */
 /* { dg-options "-mthumb" } */
 /* { dg-add-options arm_arch_v6 } */
 
index 8de021a0f69066e8ba68c4b9b310f1073a889470..0656e8f254989837d946b6e3d3179eafb06295bb 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6k" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
+/* { dg-require-effective-target arm_arch_v6k_arm_ok } */
 /* { dg-options "-marm" } */
 /* { dg-add-options arm_arch_v6k } */
 
index c2fc270d33dc85607836aeef9b9425294d60c286..b3b6ecf1b195209df79d45e3f121eee40fa5b5f8 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6k" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
+/* { dg-require-effective-target arm_arch_v6k_thumb_ok } */
 /* { dg-options "-mthumb" } */
 /* { dg-add-options arm_arch_v6k } */
 
index ee075e290b21bdab86816e85e0245a192a8a37c5..27f71be8d8a5f53af746093be8b7a81895d2cc6d 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6-m" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
+/* { dg-require-effective-target arm_arch_v6m_ok } */
 /* { dg-options "-mthumb" } */
 /* { dg-add-options arm_arch_v6m } */
 
index 83b4bc4c95303c8259025e3c6282728ad2b0d734..259d2b50df268770f0b21213733ccd95f686bcdc 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6t2" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
+/* { dg-require-effective-target arm_arch_v6t2_ok } */
 /* { dg-options "-marm" } */
 /* { dg-add-options arm_arch_v6t2 } */
 
index 1a1cbc5abcc18ef3019c3e8ce8155b577986660a..e624ec549c1eaac573a88ecb8f873a413466fb42 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6t2" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
+/* { dg-require-effective-target arm_arch_v6t2_ok } */
 /* { dg-options "-mthumb" } */
 /* { dg-add-options arm_arch_v6t2 } */
 
index e2df0d482bf9404d5064b814035c8598e214038d..6e3a9664be762e1c4030c512d1143a68848b1498 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6z" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
+/* { dg-require-effective-target arm_arch_v6z_arm_ok } */
 /* { dg-options "-marm" } */
 /* { dg-add-options arm_arch_v6z } */
 
index e4b94efc0759c97abd31b013dbdf3d0d6667e7c3..23a4fcd7da2e438ae1118133a54c41f9caf6e916 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6z" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
+/* { dg-require-effective-target arm_arch_v6z_thumb_ok } */
 /* { dg-options "-mthumb" } */
 /* { dg-add-options arm_arch_v6z } */
 
index e3680178df17a349fe06c7fed275b505e377e92d..ca5e3ccff662c643a0fdb3302d2fc268fb88a917 100644 (file)
@@ -4,6 +4,7 @@
 /* { dg-skip-if "Test is specific to the Xscale" { arm*-*-* } { "-march=*" } { "-march=xscale" } } */
 /* { dg-skip-if "Test is specific to the Xscale" { arm*-*-* } { "-mcpu=*" } { "-mcpu=xscale" } } */
 /* { dg-skip-if "Test is specific to ARM mode" { arm*-*-* } { "-mthumb" } { "" } } */
+/* { dg-require-effective-target arm_arch_v5te_arm_ok } */
 /* { dg-require-effective-target arm32 } */
 
 /* Brett Gaines' test case. */
index 4cc9ae604540b76a9e637f447a3979ab7c267cf2..655ba9334f383d646f14bdfee098c1701a40a0a7 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6-m" } } */
 /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" } { "" } } */
+/* { dg-require-effective-target arm_arch_v6m_ok } */
 /* { dg-options "-march=armv6-m -mthumb" } */
 
 #ifdef __ARM_NEON_FP
index a944b9afa8165aa874bdafb4bf2ed8b133dbe135..bcfd5d553e4458c47763948b6319f23a382e7eda 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-march=armv5te -fno-builtin -mfloat-abi=soft -mthumb -fno-stack-protector -Os -fno-tree-loop-optimize -fno-tree-dominator-opts -fPIC -w" } */
 /* { dg-skip-if "Incompatible command line options: -mfloat-abi=soft -mfloat-abi=hard" { *-*-* } { "-mfloat-abi=hard" } { "" } } */
+/* { dg-require-effective-target arm_arch_v5te_thumb_ok } */
 
 typedef enum {
  REG_ENOSYS = -1,
index f2985f8eaedefd242f2a28ca5abe4c2b302af101..e3978e512eaa80257c9ed4fb6b27897d882d4d6d 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target arm_arch_v6_arm_ok } */
 /* { dg-options "-O3 -marm -march=armv6 -std=c99" } */
 
 typedef struct {
index 54a1d8aa0072de8387973285a1a9a9adb91abf9f..7d078ac2ce194131be33d37a54d8c575893b872a 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target arm_arm_ok } */
+/* { dg-require-effective-target arm_arch_v4_ok } */
 /* { dg-skip-if "do not override -mcpu" { *-*-* } { "-mcpu=*" } { "-mcpu=arm7tdmi" } } */
 /* { dg-options "-Os -mbig-endian -marm -mcpu=arm7tdmi" } */
 
index 8ed8cdfb70dc6f92dcfabc6e79ecbfda4f774619..4902ec9d0409100493b82addc60b87839a8258c4 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target arm_arch_v5t_thumb_ok } */
 /* { dg-options "-mfloat-abi=softfp -mthumb -march=armv5t -O2" }  */
 #pragma GCC optimize ("-O2")
 
index b6211f94c377e3b1c0ba6c24203434ca8b550c3b..5080d2c7a91f659bd3876d955f3376531fb97500 100644 (file)
@@ -2,6 +2,7 @@
 /* { dg-skip-if "instruction not valid on thumb" { *-*-* } { "-mthumb" } { "" } } */
 /* { dg-do assemble } */
 /* { dg-require-effective-target arm_arm_ok } */
+/* { dg-require-effective-target arm_arch_v5te_arm_ok } */
 /* { dg-additional-options "-Wall -O2 -march=armv5te -std=gnu99 -marm" } */
 
 #pragma GCC target ("arch=armv6")
index be60e6490152901e362ac1fd2e31a352b53f23b9..2b8fc0b2bd7fe4856a425ed57bd7e60b11448562 100644 (file)
@@ -3,6 +3,7 @@
 /* { dg-skip-if "Test is specific to Xscale" { arm*-*-* } { "-march=*" } { "-march=xscale" } } */
 /* { dg-skip-if "Test is specific to Xscale" { arm*-*-* } { "-mcpu=*" } { "-mcpu=xscale" } } */
 /* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
+/* { dg-require-effective-target arm_arch_v5te_ok } */
 /* { dg-options "-mcpu=xscale -O -mfloat-abi=softfp" } */
 
 unsigned load1(void) __attribute__ ((naked));
index 6d9e5e1fa39994d35f5e55bedbb04e22c975931f..3c9768d22d9c7eb91b9a25d64aac2d344111851a 100644 (file)
@@ -4,6 +4,7 @@
 /* { dg-skip-if "Test is specific to the Xscale" { arm*-*-* } { "-mcpu=*" } { "-mcpu=xscale" } } */
 /* { dg-skip-if "Test is specific to ARM mode" { arm*-*-* } { "-mthumb" } { "" } } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-require-effective-target arm_arch_v5te_arm_ok } */
 /* { dg-options "-mcpu=xscale -O -marm" } */
 
 unsigned load2(void) __attribute__ ((naked));
index e566cb2548c083eb36992962a269137085a35bac..0afd1214bcbd1ee0d7e350ba5e0e2a6349858fd4 100644 (file)
@@ -3,6 +3,7 @@
 /* { dg-skip-if "Test is specific to Xscale" { arm*-*-* } { "-march=*" } { "-march=xscale" } } */
 /* { dg-skip-if "Test is specific to Xscale" { arm*-*-* } { "-mcpu=*" } { "-mcpu=xscale" } } */
 /* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
+/* { dg-require-effective-target arm_arch_v5te_ok } */
 /* { dg-options "-mcpu=xscale -O -mfloat-abi=softfp" } */
 
 unsigned load4(void) __attribute__ ((naked));
index 6760e59594550dbd78d124236390cca50d68cd05..414bf80003b9192806f79afed9393f9ef4750a7d 100644 (file)
@@ -4188,13 +4188,25 @@ proc check_effective_target_arm_fp16_hw { } {
 #       /* { dg-require-effective-target arm_arch_v5t_multilib } */
 foreach { armfunc armflag armdefs } {
        v4 "-march=armv4 -marm" __ARM_ARCH_4__
-       v4t "-march=armv4t" __ARM_ARCH_4T__
-       v5t "-march=armv5t" __ARM_ARCH_5T__
-       v5te "-march=armv5te" __ARM_ARCH_5TE__
-       v6 "-march=armv6" __ARM_ARCH_6__
-       v6k "-march=armv6k" __ARM_ARCH_6K__
+       v4t "-march=armv4t -mfloat-abi=softfp" __ARM_ARCH_4T__
+       v4t_arm "-march=armv4t -marm" __ARM_ARCH_4T__
+       v4t_thumb "-march=armv4t -mthumb -mfloat-abi=softfp" __ARM_ARCH_4T__
+       v5t "-march=armv5t -mfloat-abi=softfp" __ARM_ARCH_5T__
+       v5t_arm "-march=armv5t -marm" __ARM_ARCH_5T__
+       v5t_thumb "-march=armv5t -mthumb -mfloat-abi=softfp" __ARM_ARCH_5T__
+       v5te "-march=armv5te -mfloat-abi=softfp" __ARM_ARCH_5TE__
+       v5te_arm "-march=armv5te -marm" __ARM_ARCH_5TE__
+       v5te_thumb "-march=armv5te -mthumb -mfloat-abi=softfp" __ARM_ARCH_5TE__
+       v6 "-march=armv6 -mfloat-abi=softfp" __ARM_ARCH_6__
+       v6_arm "-march=armv6 -marm" __ARM_ARCH_6__
+       v6_thumb "-march=armv6 -mthumb -mfloat-abi=softfp" __ARM_ARCH_6__
+       v6k "-march=armv6k -mfloat-abi=softfp" __ARM_ARCH_6K__
+       v6k_arm "-march=armv6k -marm" __ARM_ARCH_6K__
+       v6k_thumb "-march=armv6k -mthumb -mfloat-abi=softfp" __ARM_ARCH_6K__
        v6t2 "-march=armv6t2" __ARM_ARCH_6T2__
-       v6z "-march=armv6z" __ARM_ARCH_6Z__
+       v6z "-march=armv6z -mfloat-abi=softfp" __ARM_ARCH_6Z__
+       v6z_arm "-march=armv6z -marm" __ARM_ARCH_6Z__
+       v6z_thumb "-march=armv6z -mthumb -mfloat-abi=softfp" __ARM_ARCH_6Z__
        v6m "-march=armv6-m -mthumb -mfloat-abi=soft" __ARM_ARCH_6M__
        v7a "-march=armv7-a" __ARM_ARCH_7A__
        v7r "-march=armv7-r" __ARM_ARCH_7R__
@@ -4211,10 +4223,6 @@ foreach { armfunc armflag armdefs } {
        v8r "-march=armv8-r" __ARM_ARCH_8R__ } {
     eval [string map [list FUNC $armfunc FLAG $armflag DEFS $armdefs ] {
        proc check_effective_target_arm_arch_FUNC_ok { } {
-           if { [ string match "*-marm*" "FLAG" ] &&
-               ![check_effective_target_arm_arm_ok] } {
-               return 0
-           }
            return [check_no_compiler_messages arm_arch_FUNC_ok assembly {
                #if !(DEFS)
                #error !(DEFS)