From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1944) id 35F24385840F; Wed, 10 Apr 2024 10:48:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 35F24385840F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1712746124; bh=GymOJ3RBsHM1CZ/PGSe2JcXNowEOgXx/E0fAwoMxKNk=; h=From:To:Subject:Date:From; b=WMOAcx+aHUvWDX6r66rSji8f1bnFqmPV9cQk3kjmwE/CYRt5LByQM2Ka1j+0ivnxg xyuFPy/KOq59ZpnhybAqSQGCrjeq82NF4Oa6527khKqa+erXfq2wmpQwpb3Sw7FX9B pXfsfJ47QeHRNrJ1D6p6RWen5m80TrSF1woNQZFk= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Szabolcs Nagy To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/vendors/ARM/heads/gcs)] aarch64: Add non-local goto and jump tests for GCS X-Act-Checkin: gcc X-Git-Author: Szabolcs Nagy X-Git-Refname: refs/vendors/ARM/heads/gcs X-Git-Oldrev: d5a22a53f58403c888a43c75c5983ba3cb5023ae X-Git-Newrev: 87217fd89a9bd595a58897bafc593a7e25051ee4 Message-Id: <20240410104844.35F24385840F@sourceware.org> Date: Wed, 10 Apr 2024 10:48:44 +0000 (GMT) List-Id: https://gcc.gnu.org/g:87217fd89a9bd595a58897bafc593a7e25051ee4 commit 87217fd89a9bd595a58897bafc593a7e25051ee4 Author: Szabolcs Nagy Date: Wed Jun 7 10:58:06 2023 +0100 aarch64: Add non-local goto and jump tests for GCS These are scan asm tests only, relying on existing execution tests for runtime coverage. gcc/testsuite/ChangeLog: * gcc.target/aarch64/gcs-nonlocal-1.c: New test. * gcc.target/aarch64/gcs-nonlocal-2.c: New test. Diff: --- gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-1.c | 25 +++++++++++++++++++++++ gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-2.c | 21 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-1.c b/gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-1.c new file mode 100644 index 00000000000..821fab816f9 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mbranch-protection=gcs" } */ +/* { dg-final { scan-assembler-times "hint\\t40 // chkfeat x16" 2 } } */ +/* { dg-final { scan-assembler-times "mrs\\tx\[0-9\]+, s3_3_c2_c5_1 // gcspr_el0" 2 } } */ +/* { dg-final { scan-assembler-times "sysl\\txzr, #3, c7, c7, #1 // gcspopm" 1 } } */ + +int bar1 (int); +int bar2 (int); + +void foo (int cmd) +{ + __label__ start; + int x = 0; + + void nonlocal_goto (void) + { + x++; + goto start; + } + +start: + while (bar1 (x)) + if (bar2 (x)) + nonlocal_goto (); +} diff --git a/gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-2.c b/gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-2.c new file mode 100644 index 00000000000..63dbce36e1e --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-2.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mbranch-protection=gcs" } */ +/* { dg-final { scan-assembler-times "hint\\t40 // chkfeat x16" 2 } } */ +/* { dg-final { scan-assembler-times "mrs\\tx\[0-9\]+, s3_3_c2_c5_1 // gcspr_el0" 2 } } */ +/* { dg-final { scan-assembler-times "sysl\\txzr, #3, c7, c7, #1 // gcspopm" 1 } } */ + +void longj (void *buf) +{ + __builtin_longjmp (buf, 1); +} + +void foo (void); +void bar (void); + +void setj (void *buf) +{ + if (__builtin_setjmp (buf)) + foo (); + else + bar (); +}