On Mon, 27 Jan 2025 at 13:30, Torbjorn SVENSSON <torbjorn.svens...@foss.st.com> wrote: > > Hi Christophe, > > On 2025-01-27 13:07, Christophe Lyon wrote: > > Hi Torbjorn, > > > > On Fri, 24 Jan 2025 at 18:45, Torbjorn SVENSSON > > <torbjorn.svens...@foss.st.com> wrote: > >> > >> Another ping... :) > >> > >> Kind regards, > >> Torbjörn > >> > >> On 2024-12-18 18:35, Torbjorn SVENSSON wrote: > >>> Gentle ping :) > >>> > >>> Kind regards, > >>> Torbjörn > >>> > >>> On 2024-11-14 17:16, Torbjorn SVENSSON wrote: > >>>> > >>>> > >>>> On 2024-11-14 16:32, Christophe Lyon wrote: > >>>>> On Fri, 8 Nov 2024 at 19:49, Torbjörn SVENSSON > >>>>> <torbjorn.svens...@foss.st.com> wrote: > >>>>>> > >>>>>> Ok for trunk and releases/gcc-14? > >>>>>> > >>>>>> -- > >>>>>> > >>>>>> A long time ago, this test forced -march=armv6. > >>>>>> > >>>>>> With -marm, the generated assembler is: > >>>>>> foo: > >>>>>> sub r0, r0, #48 > >>>>>> cmp r0, #9 > >>>>>> movhi r0, #0 > >>>>>> movls r0, #1 > >>>>>> bx lr > >>>>>> > >>>>>> With -mthumb, the generated assembler is: > >>>>>> foo: > >>>>>> subs r0, r0, #48 > >>>>>> movs r2, #9 > >>>>>> uxtb r3, r0 > >>>>>> movs r0, #0 > >>>>>> cmp r2, r3 > >>>>>> adcs r0, r0, r0 > >>>>>> uxtb r0, r0 > >>>>>> bx lr > >>>>>> > >>>>>> Require effective-target arm_arm_ok to skip the test for thumb-only > >>>>>> targets (Cortex-M). > >>>>>> > >>>>>> gcc/testsuite/ChangeLog: > >>>>>> > >>>>>> * gcc.target/arm/unsigned-extend-1.c: Use effective-target > >>>>>> arm_arm_ok. > >>>>>> > >>>>>> Signed-off-by: Torbjörn SVENSSON <torbjorn.svens...@foss.st.com> > >>>>>> --- > >>>>>> gcc/testsuite/gcc.target/arm/unsigned-extend-1.c | 1 + > >>>>>> 1 file changed, 1 insertion(+) > >>>>>> > >>>>>> diff --git a/gcc/testsuite/gcc.target/arm/unsigned-extend-1.c b/gcc/ > >>>>>> testsuite/gcc.target/arm/unsigned-extend-1.c > >>>>>> index 3b4ab048fb0..73f2e1a556d 100644 > >>>>>> --- a/gcc/testsuite/gcc.target/arm/unsigned-extend-1.c > >>>>>> +++ b/gcc/testsuite/gcc.target/arm/unsigned-extend-1.c > >>>>>> @@ -1,4 +1,5 @@ > >>>>>> /* { dg-do compile } */ > >>>>>> +/* { dg-require-effective-target arm_arm_ok } */ > >>>>>> /* { dg-options "-O2" } */ > >>>>>> > >>>>> > >>>>> So I'm guessing arm_arm_ok fails when you are testing for M-profile > >>>>> targets? > >>>>> What happens when you test for A-profile, providing -mthumb as part of > >>>>> your runtest flags? > >>>> > >>>> > > > > Looking at our CI results, without your patch the test passes on: > > cortex-m33, m3, m55, m7, v7A in arm mode, v8A in thumb mode, > > and it fails only on cortex-m0 and m23. > > Does this match your observations? > > Without my patch, I see failure on M0, M0+ and M23. > With my patch, it goes to unsupported on all Cortex-M targets that I test. > > > So your patch will make the test unsupported on m33, m3, m55 and m7 > > while it currently passes? > > > > Am I missing something? > > I think you might have missed my comment down.... > > > > > Thanks, > > > > Christophe > > > >>>> > >>>> For Cortex-M0 (thumb/cpu=cortex-m0/float-abi=soft): > >>>> > >>>> Testing arm/unsigned-extend-1.c > >>>> check_compile tool: gcc for arm_arm_ok > >>>> doing compile > >>>> Executing on host: .../bin/arm-none-eabi-gcc arm_arm_ok21114.c - > >>>> mthumb -mcpu=cortex-m0 -mfloat-abi=soft -fdiagnostics-plain-output > >>>> -marm - Wno-complain-wrong-lang -S -o arm_arm_ok21114.s > >>>> (timeout = 800) > >>>> spawn -ignore SIGHUP .../bin/arm-none-eabi-gcc arm_arm_ok21114.c - > >>>> mthumb -mcpu=cortex-m0 -mfloat-abi=soft -fdiagnostics-plain-output - > >>>> marm -Wno- complain-wrong-lang -S -o arm_arm_ok21114.s > >>>> pid is 21254 -21254 > >>>> cc1: error: target CPU does not support ARM mode > >>>> pid is -1 > >>>> close result is 21254 exp6 0 1 > >>>> output is cc1: error: target CPU does not support ARM mode > >>>> status 1 > >>>> compiler exited with status 1 > >>>> UNSUPPORTED: gcc.target/arm/unsigned-extend-1.c > >>>> > >>>> > >>>> For Cortex-A7 (thumb/cpu=cortex-a7/float-abi=soft): > >>>> > >>>> Testing arm/unsigned-extend-1.c > >>>> check_compile tool: gcc for arm_arm_ok > >>>> doing compile > >>>> Executing on host: .../bin/arm-none-eabi-gcc arm_arm_ok21296.c - > >>>> mthumb -mcpu=cortex-a7 -mfloat-abi=soft -fdiagnostics-plain-output > >>>> -marm - Wno-complain-wrong-lang -S -o arm_arm_ok21296.s > >>>> (timeout = 800) > >>>> spawn -ignore SIGHUP .../bin/arm-none-eabi-gcc arm_arm_ok21296.c - > >>>> mthumb -mcpu=cortex-a7 -mfloat-abi=soft -fdiagnostics-plain-output - > >>>> marm -Wno- complain-wrong-lang -S -o arm_arm_ok21296.s > >>>> pid is 21434 -21434 > >>>> pid is -1 > >>>> output is status 0 > >>>> doing compile > >>>> Executing on host: .../bin/arm-none-eabi-gcc .../gcc/testsuite/ > >>>> gcc.target/arm/unsigned-extend-1.c -mthumb -mcpu=cortex-a7 -mfloat- > >>>> abi=soft -fdiagnostics-plain-output -O2 -ffat-lto-objects -fno- > >>>> ident -S -o unsigned-extend-1.s (timeout = 800) > >>>> spawn -ignore SIGHUP .../bin/arm-none-eabi-gcc .../gcc/testsuite/ > >>>> gcc.target/arm/unsigned-extend-1.c -mthumb -mcpu=cortex-a7 -mfloat- > >>>> abi=soft -fdiagnostics-plain-output -O2 -ffat-lto-objects -fno-ident - > >>>> S -o unsigned-extend-1.s > >>>> pid is 21438 -21438 > >>>> pid is -1 > >>>> output is status 0 > >>>> check_compile tool: gcc for exceptions_enabled > >>>> doing compile > >>>> Executing on host: .../bin/arm-none-eabi-gcc > >>>> exceptions_enabled21296.cc -mthumb -mcpu=cortex-a7 -mfloat- > >>>> abi=soft -fdiagnostics-plain-output -Wno-complain-wrong-lang -S > >>>> -o exceptions_enabled21296.s (timeout = 800) > >>>> spawn -ignore SIGHUP .../bin/arm-none-eabi-gcc > >>>> exceptions_enabled21296.cc -mthumb -mcpu=cortex-a7 -mfloat-abi=soft - > >>>> fdiagnostics-plain-output -Wno-complain-wrong-lang -S -o > >>>> exceptions_enabled21296.s > >>>> pid is 21442 -21442 > >>>> pid is -1 > >>>> output is status 0 > >>>> PASS: gcc.target/arm/unsigned-extend-1.c (test for excess errors) > >>>> PASS: gcc.target/arm/unsigned-extend-1.c scan-assembler-not uxtb > >>>> > >>>> For Cortex-A7 (cpu=cortex-a7/float-abi=soft): > >>>> > >>>> > >>>> > >>>> Testing arm/unsigned-extend-1.c > >>>> check_compile tool: gcc for arm_arm_ok > >>>> doing compile > >>>> Executing on host: .../bin/arm-none-eabi-gcc arm_arm_ok21484.c - > >>>> mcpu=cortex-a7 -mfloat-abi=soft -fdiagnostics-plain-output -marm - > >>>> Wno-complain-wrong-lang -S -o arm_arm_ok21484.s (timeout = 800) > >>>> spawn -ignore SIGHUP .../bin/arm-none-eabi-gcc arm_arm_ok21484.c - > >>>> mcpu=cortex-a7 -mfloat-abi=soft -fdiagnostics-plain-output -marm -Wno- > >>>> complain-wrong-lang -S -o arm_arm_ok21484.s > >>>> pid is 21622 -21622 > >>>> pid is -1 > >>>> output is status 0 > >>>> doing compile > >>>> Executing on host: .../bin/arm-none-eabi-gcc .../gcc/testsuite/ > >>>> gcc.target/arm/unsigned-extend-1.c -mcpu=cortex-a7 -mfloat-abi=soft > >>>> - fdiagnostics-plain-output -O2 -ffat-lto-objects -fno-ident -S - > >>>> o unsigned-extend-1.s (timeout = 800) > >>>> spawn -ignore SIGHUP .../bin/arm-none-eabi-gcc .../gcc/testsuite/ > >>>> gcc.target/arm/unsigned-extend-1.c -mcpu=cortex-a7 -mfloat-abi=soft - > >>>> fdiagnostics-plain-output -O2 -ffat-lto-objects -fno-ident -S -o > >>>> unsigned-extend-1.s > >>>> pid is 21626 -21626 > >>>> pid is -1 > >>>> output is status 0 > >>>> check_compile tool: gcc for exceptions_enabled > >>>> doing compile > >>>> Executing on host: .../bin/arm-none-eabi-gcc > >>>> exceptions_enabled21484.cc -mcpu=cortex-a7 -mfloat-abi=soft - > >>>> fdiagnostics-plain-output -Wno- complain-wrong-lang -S -o > >>>> exceptions_enabled21484.s (timeout = 800) > >>>> spawn -ignore SIGHUP .../bin/arm-none-eabi-gcc > >>>> exceptions_enabled21484.cc -mcpu=cortex-a7 -mfloat-abi=soft - > >>>> fdiagnostics-plain-output -Wno-complain-wrong-lang -S -o > >>>> exceptions_enabled21484.s > >>>> pid is 21630 -21630 > >>>> pid is -1 > >>>> output is status 0 > >>>> PASS: gcc.target/arm/unsigned-extend-1.c (test for excess errors) > >>>> PASS: gcc.target/arm/unsigned-extend-1.c scan-assembler-not uxtb > >>>> testcase .../gcc/testsuite/gcc.target/arm/arm.exp completed in 1 seconds > >>>> > >>>>> Since you don't add -marm, the test will be compiled in Thumb mode, > >>>>> and still fail? > >>>> > >>>> Since my tests succeeded without it, it didn't think much of it. I can > >>>> add -marm to the do-options just be safe. Should I send a V2 with it > >>>> or can it be approved with that addition? > > ... here. > While arm_arm_ok is checking that it's possible to use -marm, I suppose > we should also add the -marm to the dg-additional-options in the test. >
No, I had read this comment :-) > Is this enough to have a pass on your CI? > Would it be easier for you if I send a V2 with that change? I don't expect any impact of the CI side, since the test passes in thumb mode on A-profile anyway. But yes, that would be more consistent.... My question (probably for Richard) is rather: is it OK to lose the PASSes on m3/m7/m33/m55? > > Based on the history, I assumed that it was expected for this test case > to be executed in arm mode. I suppose we could do it in thumb2 mode > instead or something similar, but not sure if that's better...? I'm not sure: the commit messages for this file are not very informative... Just realized that /* { dg-skip-if "" { arm_thumb1 } } */ might do what you want? Thanks, Christophe > > Kind regards, > Torbjörn > > > >>>> > >>>> Kind regards, > >>>> Torbjörn > >>>> > >>>>> > >>>>> Thanks, > >>>>> > >>>>> Christophe > >>>>> > >>>>>> unsigned char foo (unsigned char c) > >>>>>> -- > >>>>>> 2.25.1 > >>>>>> > >>>> > >>> > >> >