On 19/11/2024 10:24, Torbjörn SVENSSON wrote: > The test case gcc.target/arm/its.c was created together with restriction > of IT blocks for Cortex-M7. As the test case fails on all tunes that > does not match Cortex-M7, explicitly test it for Cortex-M7. To have some > additional faith that GCC does the correct thing, I also added another > variant of the test for Cortex-M3 that should allow longer IT blocks. > > gcc/testsuite/ChangeLog: > > PR testsuite/94531 > * gcc.target/arm/its.c: Removed. > * gcc.target/arm/its-1.c: Copy of gcc.target/arm/its.c. Use > effective-target arm_cpu_cortex_m7. > * gcc.target/arm/its-2.c: Copy of gcc.target/arm/its.c. Use > effective-target arm_cpu_cortex_m3. > > Signed-off-by: Torbjörn SVENSSON <torbjorn.svens...@foss.st.com> > --- > .../gcc.target/arm/{its.c => its-1.c} | 7 +++--- > gcc/testsuite/gcc.target/arm/its-2.c | 24 +++++++++++++++++++ > 2 files changed, 28 insertions(+), 3 deletions(-) > rename gcc/testsuite/gcc.target/arm/{its.c => its-1.c} (67%) > create mode 100644 gcc/testsuite/gcc.target/arm/its-2.c > > diff --git a/gcc/testsuite/gcc.target/arm/its.c > b/gcc/testsuite/gcc.target/arm/its-1.c > similarity index 67% > rename from gcc/testsuite/gcc.target/arm/its.c > rename to gcc/testsuite/gcc.target/arm/its-1.c > index f81a0df51cd..78323b89892 100644 > --- a/gcc/testsuite/gcc.target/arm/its.c > +++ b/gcc/testsuite/gcc.target/arm/its-1.c > @@ -1,7 +1,8 @@ > /* { dg-do compile } */ > -/* { dg-require-effective-target arm_cortex_m } */ > -/* { dg-require-effective-target arm_thumb2 } */ > +/* { dg-require-effective-target arm_cpu_cortex_m7_ok } */ > /* { dg-options "-O2" } */ > +/* { dg-add-options arm_cpu_cortex_m7 } */ > + > int test (int a, int b) > { > int r; > @@ -21,4 +22,4 @@ int test (int a, int b) > } > /* Ensure there is no IT block with more than 2 instructions, ie. we only > allow > IT, ITT and ITE. */ > -/* { dg-final { scan-assembler-not "\\sit\[te\]{2}" } } */ > +/* { dg-final { scan-assembler-not "\tit\[te\]{2}" } } */
You don't mention the reason for this hunk in your description. What's the issue you're trying to address here? R. > diff --git a/gcc/testsuite/gcc.target/arm/its-2.c > b/gcc/testsuite/gcc.target/arm/its-2.c > new file mode 100644 > index 00000000000..9eb3bf5ce8c > --- /dev/null > +++ b/gcc/testsuite/gcc.target/arm/its-2.c > @@ -0,0 +1,24 @@ > +/* { dg-do compile } */ > +/* { dg-require-effective-target arm_cpu_cortex_m3_ok } */ > +/* { dg-options "-O2" } */ > +/* { dg-add-options arm_cpu_cortex_m3 } */ > + > +int test (int a, int b) > +{ > + int r; > + if (a > 10) > + { > + r = a - b; > + r += 10; > + } > + else > + { > + r = b - a; > + r -= 7; > + } > + if (r > 0) > + r -= 3; > + return r; > +} > +/* Ensure there is an IT block with at least 2 instructions. */ > +/* { dg-final { scan-assembler "\tit\[te\]{2}" } } */