https://gcc.gnu.org/g:e1077ad5753148892871fa146f3948b55c46f7e3

commit r16-7929-ge1077ad5753148892871fa146f3948b55c46f7e3
Author: Richard Earnshaw <[email protected]>
Date:   Thu Mar 5 18:07:11 2026 +0000

    arm: testsuite: remove some flaky code-size tests
    
    Code size tests on Arm are notoriously flaky because there are
    numerous ISA variants (Arm, Thumb-1 and Thumb-2) to consider in
    addition to a number of other variants from multiple sub-architecture
    and micro-architectural tuning options.  In combination this means
    that we have continuous testsuite churn if the constraints are tight
    enough to detect real regressions.
    
    So this patch eliminates most of these checks, except where the code
    size test is the only test that is done (other than the compilation
    itself).  Where that is the case I've tightened the compiler options
    to limit the test to one set of architecture flags, thereby
    eliminating most of the sources of variation.
    
    In some cases I've replaced a code-size check with some other test of
    the output, based on the intent of the original patch that motivated
    the test.  For example, the max-insns-skipped test now checks that an
    IT instruction is not generated rather than checking the size of the
    binary (which was a side-effect of not generating IT).
    
    gcc/testsuite/ChangeLog:
    
            * lib/target-supports.exp: Add arm_arch_v7a_thumb.
            * gcc.target/arm/ifcvt-size-check.c: Add options to force thumb1.
            * gcc.target/arm/ivopts-2.c: Remove object size check.
            * gcc.target/arm/ivopts-3.c: Likewise.
            * gcc.target/arm/ivopts-4.c: Likewise.
            * gcc.target/arm/ivopts-5.c: Likewise.
            * gcc.target/arm/ivopts.c: Likewise.
            * gcc.target/arm/max-insns-skipped.c: Scan for absence of an IT
            instruction.  Remove object size check.  Use arm_arch_v7a_thumb.
            * gcc.target/arm/pr43597.c: Remove object size check and use
            arm_arch_v7a_thumb.
            * gcc.target/arm/pr63210.c: Use arm_arch_v5t_thumb options.
            * gcc.target/arm/split-live-ranges-for-shrink-wrap.c: Remove
            object size check and use arm_arch_v5t_thumb options.

Diff:
---
 gcc/testsuite/gcc.target/arm/ifcvt-size-check.c                  | 5 +++--
 gcc/testsuite/gcc.target/arm/ivopts-2.c                          | 4 +---
 gcc/testsuite/gcc.target/arm/ivopts-3.c                          | 4 +---
 gcc/testsuite/gcc.target/arm/ivopts-4.c                          | 4 +---
 gcc/testsuite/gcc.target/arm/ivopts-5.c                          | 4 +---
 gcc/testsuite/gcc.target/arm/ivopts.c                            | 5 +----
 gcc/testsuite/gcc.target/arm/max-insns-skipped.c                 | 7 ++++---
 gcc/testsuite/gcc.target/arm/pr43597.c                           | 7 +++----
 gcc/testsuite/gcc.target/arm/pr63210.c                           | 7 +++----
 gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c | 9 +++------
 gcc/testsuite/lib/target-supports.exp                            | 1 +
 11 files changed, 22 insertions(+), 35 deletions(-)

diff --git a/gcc/testsuite/gcc.target/arm/ifcvt-size-check.c 
b/gcc/testsuite/gcc.target/arm/ifcvt-size-check.c
index 43fa16b82b58..40b0bdf5223c 100644
--- a/gcc/testsuite/gcc.target/arm/ifcvt-size-check.c
+++ b/gcc/testsuite/gcc.target/arm/ifcvt-size-check.c
@@ -1,6 +1,7 @@
 /* { dg-do assemble } */
-/* { dg-options "-mthumb -Os " }  */
-/* { dg-require-effective-target arm_thumb1_ok } */
+/* { dg-require-effective-target arm_arch_v4t_thumb_ok } */
+/* { dg-options "-Os" } */
+/* { dg-add-options arm_arch_v4t_thumb } */
 
 int
 test (unsigned char iov_len, int count, int i)
diff --git a/gcc/testsuite/gcc.target/arm/ivopts-2.c 
b/gcc/testsuite/gcc.target/arm/ivopts-2.c
index f1d5edbe0fd9..600005a170ef 100644
--- a/gcc/testsuite/gcc.target/arm/ivopts-2.c
+++ b/gcc/testsuite/gcc.target/arm/ivopts-2.c
@@ -1,5 +1,4 @@
-/* { dg-do assemble } */
-/* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */
+/* { dg-options "-Os -fdump-tree-ivopts" } */
 
 extern void foo2 (short*);
 
@@ -14,4 +13,3 @@ tr4 (short array[], int n)
 
 /* { dg-final { scan-tree-dump-times "PHI <ivtmp" 1 "ivopts"} } */
 /* { dg-final { scan-tree-dump-times "PHI <" 1 "ivopts"} } */
-/* { dg-final { object-size text <= 26 { target { arm_thumb2 && { ! 
arm*-*-uclinuxfdpiceabi } } } } } */
diff --git a/gcc/testsuite/gcc.target/arm/ivopts-3.c 
b/gcc/testsuite/gcc.target/arm/ivopts-3.c
index 357350cbe10c..4860566aa98d 100644
--- a/gcc/testsuite/gcc.target/arm/ivopts-3.c
+++ b/gcc/testsuite/gcc.target/arm/ivopts-3.c
@@ -1,5 +1,4 @@
-/* { dg-do assemble } */
-/* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */
+/* { dg-options "-Os -fdump-tree-ivopts" } */
 
 extern unsigned int foo2 (short*) __attribute__((pure));
 
@@ -16,4 +15,3 @@ tr3 (short array[], unsigned int n)
 /* { dg-final { scan-tree-dump-times "PHI <ivtmp" 1 "ivopts"} } */
 /* { dg-final { scan-tree-dump-times "PHI <x" 0 "ivopts"} } */
 /* { dg-final { scan-tree-dump-times ", x" 0 "ivopts"} } */
-/* { dg-final { object-size text <= 30 { target { arm_thumb2 && { ! 
arm*-*-uclinuxfdpiceabi } } } } } */
diff --git a/gcc/testsuite/gcc.target/arm/ivopts-4.c 
b/gcc/testsuite/gcc.target/arm/ivopts-4.c
index 2e866c018231..8e1ca5ed37c3 100644
--- a/gcc/testsuite/gcc.target/arm/ivopts-4.c
+++ b/gcc/testsuite/gcc.target/arm/ivopts-4.c
@@ -1,5 +1,4 @@
-/* { dg-do assemble } */
-/* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */
+/* { dg-options "-Os -fdump-tree-ivopts" } */
 
 extern unsigned int foo (int*) __attribute__((pure));
 
@@ -17,4 +16,3 @@ tr2 (int array[], int n)
 /* { dg-final { scan-tree-dump-times "PHI <ivtmp" 1 "ivopts"} } */
 /* { dg-final { scan-tree-dump-times "PHI <x" 0 "ivopts"} } */
 /* { dg-final { scan-tree-dump-times ", x" 0 "ivopts"} } */
-/* { dg-final { object-size text <= 36 { target { arm_thumb2 && { ! 
arm*-*-uclinuxfdpiceabi } } } } } */
diff --git a/gcc/testsuite/gcc.target/arm/ivopts-5.c 
b/gcc/testsuite/gcc.target/arm/ivopts-5.c
index 4e8e3806829c..0f6930fcd6d9 100644
--- a/gcc/testsuite/gcc.target/arm/ivopts-5.c
+++ b/gcc/testsuite/gcc.target/arm/ivopts-5.c
@@ -1,5 +1,4 @@
-/* { dg-do assemble } */
-/* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */
+/* { dg-options "-Os -fdump-tree-ivopts" } */
 
 extern unsigned int foo (int*) __attribute__((pure));
 
@@ -16,4 +15,3 @@ tr1 (int array[], unsigned int n)
 /* { dg-final { scan-tree-dump-times "PHI <ivtmp" 1 "ivopts"} } */
 /* { dg-final { scan-tree-dump-times "PHI <x" 0 "ivopts"} } */
 /* { dg-final { scan-tree-dump-times ", x" 0 "ivopts"} } */
-/* { dg-final { object-size text <= 30 { target { arm_thumb2 && { ! 
arm*-*-uclinuxfdpiceabi } } } } } */
diff --git a/gcc/testsuite/gcc.target/arm/ivopts.c 
b/gcc/testsuite/gcc.target/arm/ivopts.c
index 6e3e74c2d567..98231e93f339 100644
--- a/gcc/testsuite/gcc.target/arm/ivopts.c
+++ b/gcc/testsuite/gcc.target/arm/ivopts.c
@@ -1,5 +1,4 @@
-/* { dg-do assemble } */
-/* { dg-options "-Os -fdump-tree-ivopts -save-temps 
-fno-tree-loop-distribute-patterns" } */
+/* { dg-options "-Os -fdump-tree-ivopts -fno-tree-loop-distribute-patterns" } 
*/
 
 void
 tr5 (short array[], int n)
@@ -11,5 +10,3 @@ tr5 (short array[], int n)
 }
 
 /* { dg-final { scan-tree-dump-times "PHI <" 1 "ivopts"} } */
-/* { dg-final { object-size text <= 20 { target { arm_thumb2_no_arm_v8_1m_lob 
} } } } */
-/* { dg-final { object-size text <= 32 { target { arm_nothumb } } } } */
diff --git a/gcc/testsuite/gcc.target/arm/max-insns-skipped.c 
b/gcc/testsuite/gcc.target/arm/max-insns-skipped.c
index 0a11554b52b0..d177d4c28bfc 100644
--- a/gcc/testsuite/gcc.target/arm/max-insns-skipped.c
+++ b/gcc/testsuite/gcc.target/arm/max-insns-skipped.c
@@ -1,5 +1,6 @@
-/* { dg-do assemble { target arm_thumb2 } } */
-/* { dg-options " -Os " } */
+/* { dg-require-effective-target arm_arch_v7a_thumb_ok } */
+/* { dg-options "-Os" } */
+/* { dg-add-options arm_arch_v7a_thumb } */
 
 int t (int a, int b, int c, int d)
 {
@@ -18,4 +19,4 @@ int t (int a, int b, int c, int d)
   return r;
 }
 
-/* { dg-final { object-size text <= 40 } } */
+/* { dg-final { scan-assembler-not {\tit[tf]*\t} } } */
diff --git a/gcc/testsuite/gcc.target/arm/pr43597.c 
b/gcc/testsuite/gcc.target/arm/pr43597.c
index 6c9d4196c006..520b4038a46a 100644
--- a/gcc/testsuite/gcc.target/arm/pr43597.c
+++ b/gcc/testsuite/gcc.target/arm/pr43597.c
@@ -1,6 +1,6 @@
-/* { dg-do assemble } */
-/* { dg-options "-Os -save-temps -mthumb" } */
-/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-require-effective-target arm_arch_v7a_thumb_ok } */
+/* { dg-options "-Os" } */
+/* { dg-add-options arm_arch_v7a_thumb } */
 
 extern int bar ();
 extern void bar2 (int);
@@ -24,4 +24,3 @@ foo4 ()
 
 /* { dg-final { scan-assembler-times "sub" 1 } } */
 /* { dg-final { scan-assembler-times "cmp" 0 } } */
-/* { dg-final { object-size text <= 30 { target { ! arm*-*-uclinuxfdpiceabi } 
} } } */
diff --git a/gcc/testsuite/gcc.target/arm/pr63210.c 
b/gcc/testsuite/gcc.target/arm/pr63210.c
index 9b63a67d3f0a..c663ab857056 100644
--- a/gcc/testsuite/gcc.target/arm/pr63210.c
+++ b/gcc/testsuite/gcc.target/arm/pr63210.c
@@ -1,8 +1,7 @@
 /* { dg-do assemble } */
-/* { dg-options "-mthumb -Os " }  */
-/* { dg-require-effective-target arm_thumb1_ok } */
-/* { dg-skip-if "do not test on armv4t" { *-*-* } { "-march=armv4t" } } */
-/* { dg-additional-options "-march=armv5t" {target arm_arch_v5t_ok} } */
+/* { dg-options "-Os" }  */
+/* { dg-require-effective-target arm_arch_v5t_thumb_ok } */
+/* { dg-add-options arm_arch_v5t_thumb } */
 
 int foo1 (int c);
 int foo2 (int c);
diff --git a/gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c 
b/gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c
index 67a7fc85003c..c146f608a245 100644
--- a/gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c
+++ b/gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c
@@ -1,8 +1,6 @@
-/* { dg-do assemble } */
-/* { dg-options "-mthumb -Os -fdump-rtl-ira " }  */
-/* { dg-require-effective-target arm_thumb1_ok } */
-/* { dg-skip-if "do not test on armv4t" { *-*-* } { "-march=armv4t" } } */
-/* { dg-additional-options "-march=armv5t" {target arm_arch_v5t_ok} } */
+/* { dg-options "-Os -fdump-rtl-ira " } */
+/* { dg-require-effective-target arm_arch_v5t_thumb_ok } */
+/* { dg-add-options arm_arch_v5t_thumb } */
 
 int foo (char *, char *, int);
 int test (int d, char * out, char *in, int len)
@@ -11,5 +9,4 @@ int test (int d, char * out, char *in, int len)
     foo (out, in, len);
   return 0;
 }
-/* { dg-final { object-size text <= 20 } } */
 /* { dg-final { scan-rtl-dump-not "Split live-range of register" "ira" } } */
diff --git a/gcc/testsuite/lib/target-supports.exp 
b/gcc/testsuite/lib/target-supports.exp
index fade04379342..95a48444b168 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -6222,6 +6222,7 @@ foreach { armfunc armflag armdefs } {
        v7 "-march=armv7+fp" __ARM_ARCH_7__
        v7a "-march=armv7-a+fp" __ARM_ARCH_7A__
        v7a_arm "-march=armv7-a+fp -marm" "__ARM_ARCH_7A__ && !__thumb__"
+       v7a_thumb "-march=armv7-a+fp -mthumb" "__ARM_ARCH_7A__ && __thumb__"
        v7a_fp_hard "-march=armv7-a+fp -mfpu=auto -mfloat-abi=hard" 
__ARM_ARCH_7A__
        v7a_neon "-march=armv7-a+simd -mfpu=auto -mfloat-abi=softfp" 
"__ARM_ARCH_7A__ && __ARM_NEON__"
        v7a_neon_thumb "-march=armv7-a+simd -mfpu=auto -mfloat-abi=softfp 
-mthumb" "__ARM_ARCH_7A__ && __ARM_NEON__ && __thumb__"

Reply via email to