aarch64: Fix nonlocal goto tests incompatible with GCS

gcc/testsuite/ChangeLog:
	* gcc.target/aarch64/gcs-nonlocal-3.c: New test.
	* gcc.target/aarch64/sme/nonlocal_goto_4.c: Update.
	* gcc.target/aarch64/sme/nonlocal_goto_5.c: Update.
	* gcc.target/aarch64/sme/nonlocal_goto_6.c: Update.
This commit is contained in:
Yury Khrustalev 2024-11-14 16:15:14 +00:00 committed by Richard Sandiford
parent 6cc6f75374
commit 4bce1f71c9
4 changed files with 36 additions and 3 deletions

View File

@ -0,0 +1,33 @@
/* { dg-options "-O2 -fno-schedule-insns -fno-schedule-insns2 -mbranch-protection=gcs" } */
/* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {\.L[0-9]+\:} } } */
void run (void (*)());
/*
** bar.0:
** ...
** hint 40 // chkfeat x16
** tbnz w16, 0, (\.L[0-9]+)
** ...
** mrs (x[0-9]+), s3_3_c2_c5_1 // gcspr_el0
** subs x[0-9]+, x[0-9]+, \2
** bne (\.L[0-9]+)\n\1\:
** ...
** br x[0-9]+\n\3\:
** ...
** sysl xzr, #3, c7, c7, #1 // gcspopm
** ...
** b \1
*/
int
foo (int *ptr)
{
__label__ failure;
void bar () { *ptr += 1; goto failure; }
run (bar);
return 1;
failure:
return 0;
}

View File

@ -1,4 +1,4 @@
/* { dg-options "-O2 -fno-schedule-insns -fno-schedule-insns2" } */
/* { dg-options "-O2 -fno-schedule-insns -fno-schedule-insns2 -mbranch-protection=none" } */
/* { dg-final { check-function-bodies "**" "" } } */
void run(void (*)());

View File

@ -1,4 +1,4 @@
/* { dg-options "-O2 -fno-schedule-insns -fno-schedule-insns2" } */
/* { dg-options "-O2 -fno-schedule-insns -fno-schedule-insns2 -mbranch-protection=none" } */
/* { dg-final { check-function-bodies "**" "" } } */
void run(void (*)() __arm_streaming);

View File

@ -1,4 +1,4 @@
/* { dg-options "-O2 -fno-schedule-insns -fno-schedule-insns2" } */
/* { dg-options "-O2 -fno-schedule-insns -fno-schedule-insns2 -mbranch-protection=none" } */
/* { dg-final { check-function-bodies "**" "" } } */
void run(void (*)() __arm_streaming_compatible);