On 08/10/2026 06:01, Torbjorn SVENSSON wrote:
> 
> 
> On 2026-03-06 15:20, Richard Earnshaw (foss) wrote:
>> 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.
> 
> Finally got all the way down to this old thread in my inbox.
> 
> With the changes you did in r16-7929-ge1077ad5753148, both 
> check_effective_target_arm_thumb2_no_arm_v8_1m_lob and 
> check_effective_target_arm_thumb2_ok_no_arm_v8_1m_lob are now dead code.
> Should these two functions be removed or should I rebase this patch?
> 

Yes, if they're dead, it's probably better to remove them.  Don't forget to 
check that any mention of them in the manual is removed as well.

Consider this pre-approved.

R.

> Kind regards,
> Torbjörn
> 
>>
>> 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.
>>
> 

Reply via email to