On 02/03/2026 17:32, Torbjörn SVENSSON wrote: > This resolves the test failure for armv8.1-m.main with -mfloat-abi=hard. > > The size 36 is just the size that r16-7687-g772499fd7e2f9a produced > and using it allows us to notice if there will be a regression. > > Ok for trunk? >
The patch I committed this morning removed the size check from this test. See that patch for details. So I think that, for now at least, this patch is no-longer needed; but we may want to revisit the armv8.1-m.main LOB feature tests, though prehaps not in the run-up to a release. R. > -- > > The test case is only an assemble test, thus no need for hw. > > Remove check_effective_target_arm_thumb2_no_arm_v8_1m_lob and > check_effective_target_arm_thumb2_ok_no_arm_v8_1m_lob as they are no > longer referenced. > > Add check to ivopts.c that validates size in case LOB is available. > > gcc/testsuite/ChangeLog: > > * lib/target-supports.exp > (check_effective_target_arm_v8_1m_lob): New function. > (check_effective_target_arm_thumb2_no_arm_v8_1m_lob): Remove. > (check_effective_target_arm_thumb2_ok_no_arm_v8_1m_lob): Remove. > * gcc.target/arm/ivopts.c: Use effective target arm_v8_1m_lob. > > Signed-off-by: Torbjörn SVENSSON <[email protected]> > --- > gcc/testsuite/gcc.target/arm/ivopts.c | 3 ++- > gcc/testsuite/lib/target-supports.exp | 39 +++++++++++++-------------- > 2 files changed, 20 insertions(+), 22 deletions(-) > > diff --git a/gcc/testsuite/gcc.target/arm/ivopts.c > b/gcc/testsuite/gcc.target/arm/ivopts.c > index 6e3e74c2d56..44d6cf8d458 100644 > --- a/gcc/testsuite/gcc.target/arm/ivopts.c > +++ b/gcc/testsuite/gcc.target/arm/ivopts.c > @@ -11,5 +11,6 @@ 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 <= 20 { target { arm_thumb2 && { ! > arm_v8_1m_lob } } } } } */ > +/* { dg-final { object-size text <= 36 { target { arm_thumb2 && > arm_v8_1m_lob } } } } */ > /* { dg-final { object-size text <= 32 { target { arm_nothumb } } } } */ > diff --git a/gcc/testsuite/lib/target-supports.exp > b/gcc/testsuite/lib/target-supports.exp > index 212ec081e99..1dbd9b62345 100644 > --- a/gcc/testsuite/lib/target-supports.exp > +++ b/gcc/testsuite/lib/target-supports.exp > @@ -13954,29 +13954,26 @@ proc check_effective_target_arm_v8_1m_lob_hw { } { > } > } > > -# Return 1 if this is an ARM target where Thumb-2 is used without > -# options added by the test and the target does not support executing > -# the Armv8.1-M Mainline Low Overhead Loop, 0 otherwise. The test is > -# valid for ARM. > - > -proc check_effective_target_arm_thumb2_no_arm_v8_1m_lob { } { > - if { [check_effective_target_arm_thumb2] > - && ![check_effective_target_arm_v8_1m_lob_hw] } { > - return 1 > - } > - return 0 > -} > - > -# Return 1 if this is an ARM target where -mthumb causes Thumb-2 to be > -# used and the target does not support executing the Armv8.1-M > -# Mainline Low Overhead Loop, 0 otherwise. The test is valid for ARM. > +# Return 1 if the target supports the Armv8.1-M Mainline Low > +# Overhead Loop, 0 otherwise. The test is valid for ARM. > > -proc check_effective_target_arm_thumb2_ok_no_arm_v8_1m_lob { } { > - if { [check_effective_target_arm_thumb2_ok] > - && ![check_effective_target_arm_v8_1m_lob_hw] } { > - return 1 > +proc check_effective_target_arm_v8_1m_lob { } { > + if { ![check_effective_target_arm_cortex_m] } { > + return 0; > + } else { > + return [check_no_compiler_messages arm_v8_1m_lob_available object { > + int > + main (void) > + { int i = 0; > + asm ("movw r3, #10\n\t" /* movs? */ > + "dls lr, r3" : : : "r3", "lr"); > + loop: > + i++; > + asm goto ("le lr, %l0" : : : "lr" : loop); > + return i != 10; > + } > + } "" ] > } > - return 0 > } > > # Returns 1 if the target is using glibc, 0 otherwise.
