On 06/05/2024 12:50, Torbjorn SVENSSON wrote: > Hi, > > Forgot to mention when I sent the patch that I would like to commit it to the > following branches: > > - releases/gcc-11 > - releases/gcc-12 > - releases/gcc-13 > - releases/gcc-14 > - trunk >
Well you can [commit it to the release branches], but I'm not sure it's essential. It seems pretty unlikely to me that this would regress on a release branch without having first regressed on trunk. R. > Kind regards, > Torbjörn > > On 2024-05-02 12:50, Torbjörn SVENSSON wrote: >> Add regression test to the existing zero/sign extend tests for CMSE to >> verify that r0, r1, r2 and r3 are properly extended, not just r0. >> >> boolCharShortEnumSecureFunc test is done using -O0 to ensure the >> instructions are in a predictable order. >> >> gcc/testsuite/ChangeLog: >> >> * gcc.target/arm/cmse/extend-param.c: Add regression test. Add >> -fshort-enums. >> * gcc.target/arm/cmse/extend-return.c: Add -fshort-enums option. >> >> Signed-off-by: Torbjörn SVENSSON <torbjorn.svens...@foss.st.com> >> --- >> .../gcc.target/arm/cmse/extend-param.c | 21 +++++++++++++++---- >> .../gcc.target/arm/cmse/extend-return.c | 4 ++-- >> 2 files changed, 19 insertions(+), 6 deletions(-) >> >> diff --git a/gcc/testsuite/gcc.target/arm/cmse/extend-param.c >> b/gcc/testsuite/gcc.target/arm/cmse/extend-param.c >> index 01fac786238..d01ef87e0be 100644 >> --- a/gcc/testsuite/gcc.target/arm/cmse/extend-param.c >> +++ b/gcc/testsuite/gcc.target/arm/cmse/extend-param.c >> @@ -1,5 +1,5 @@ >> /* { dg-do compile } */ >> -/* { dg-options "-mcmse" } */ >> +/* { dg-options "-mcmse -fshort-enums" } */ >> /* { dg-final { check-function-bodies "**" "" "" } } */ >> #include <arm_cmse.h> >> @@ -78,7 +78,6 @@ __attribute__((cmse_nonsecure_entry)) char enumSecureFunc >> (enum offset index) { >> if (index >= ARRAY_SIZE) >> return 0; >> return array[index]; >> - >> } >> /* >> @@ -88,9 +87,23 @@ __attribute__((cmse_nonsecure_entry)) char enumSecureFunc >> (enum offset index) { >> ** ... >> */ >> __attribute__((cmse_nonsecure_entry)) char boolSecureFunc (bool index) { >> - >> if (index >= ARRAY_SIZE) >> return 0; >> return array[index]; >> +} >> -} >> \ No newline at end of file >> +/* >> +**__acle_se_boolCharShortEnumSecureFunc: >> +** ... >> +** uxtb r0, r0 >> +** uxtb r1, r1 >> +** uxth r2, r2 >> +** uxtb r3, r3 >> +** ... >> +*/ >> +__attribute__((cmse_nonsecure_entry,optimize(0))) char >> boolCharShortEnumSecureFunc (bool a, unsigned char b, unsigned short c, enum >> offset d) { >> + size_t index = a + b + c + d; >> + if (index >= ARRAY_SIZE) >> + return 0; >> + return array[index]; >> +} >> diff --git a/gcc/testsuite/gcc.target/arm/cmse/extend-return.c >> b/gcc/testsuite/gcc.target/arm/cmse/extend-return.c >> index cf731ed33df..081de0d699f 100644 >> --- a/gcc/testsuite/gcc.target/arm/cmse/extend-return.c >> +++ b/gcc/testsuite/gcc.target/arm/cmse/extend-return.c >> @@ -1,5 +1,5 @@ >> /* { dg-do compile } */ >> -/* { dg-options "-mcmse" } */ >> +/* { dg-options "-mcmse -fshort-enums" } */ >> /* { dg-final { check-function-bodies "**" "" "" } } */ >> #include <arm_cmse.h> >> @@ -89,4 +89,4 @@ unsigned char __attribute__((noipa)) enumNonsecure0 >> (ns_enum_foo_t * ns_foo_p) >> unsigned char boolNonsecure0 (ns_bool_foo_t * ns_foo_p) >> { >> return ns_foo_p (); >> -} >> \ No newline at end of file >> +}