On Fri, Nov 3, 2023 at 8:37 AM Szabolcs Nagy <szabolcs.n...@arm.com> wrote: > > gcc/testsuite/ChangeLog: > > * gcc.target/aarch64/eh_return-2.c: New test. > * gcc.target/aarch64/eh_return-3.c: New test.
gcc.target/aarch64/eh_return-3.c fails when running the testsuite with `-march=armv9-a+sve` . I think it is a good idea to try to keep the testsuite clean when running with different -march=/-mcpu= options even. I know there are many failures due to -march=/-mcpu option right now but this is a new testcase and all. Thanks, Andrew > > --- > v2: check-function-bodies in eh_return-3.c > (this is not very robust, but easier to read) > --- > .../gcc.target/aarch64/eh_return-2.c | 9 ++++++ > .../gcc.target/aarch64/eh_return-3.c | 30 +++++++++++++++++++ > 2 files changed, 39 insertions(+) > create mode 100644 gcc/testsuite/gcc.target/aarch64/eh_return-2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/eh_return-3.c > > diff --git a/gcc/testsuite/gcc.target/aarch64/eh_return-2.c > b/gcc/testsuite/gcc.target/aarch64/eh_return-2.c > new file mode 100644 > index 00000000000..4a9d124e891 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/aarch64/eh_return-2.c > @@ -0,0 +1,9 @@ > +/* { dg-do compile } */ > +/* { dg-final { scan-assembler "add\tsp, sp, x5" } } */ > +/* { dg-final { scan-assembler "br\tx6" } } */ > + > +void > +foo (unsigned long off, void *handler) > +{ > + __builtin_eh_return (off, handler); > +} > diff --git a/gcc/testsuite/gcc.target/aarch64/eh_return-3.c > b/gcc/testsuite/gcc.target/aarch64/eh_return-3.c > new file mode 100644 > index 00000000000..bfbe92af427 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/aarch64/eh_return-3.c > @@ -0,0 +1,30 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -mbranch-protection=pac-ret+leaf" } */ > +/* { dg-final { check-function-bodies "**" "" "" } } */ > + > +/* > +**foo: > +** hint 25 // paciasp > +** stp x0, x1, .* > +** stp x2, x3, .* > +** cbz w2, .* > +** mov x4, 0 > +** ldp x2, x3, .* > +** ldp x0, x1, .* > +** cbz x4, .* > +** add sp, sp, x5 > +** br x6 > +** hint 29 // autiasp > +** ret > +** mov x5, x0 > +** mov x6, x1 > +** mov x4, 1 > +** b .* > +*/ > +void > +foo (unsigned long off, void *handler, int c) > +{ > + if (c) > + return; > + __builtin_eh_return (off, handler); > +} > -- > 2.25.1 >