1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-require-effective-target maybe_x32 } */
3 /* { dg-options "-O -maddress-mode=short -fcf-protection -mx32" } */
4 /* { dg-final { scan-assembler-times "endbr64" 2 } } */
5 /* { dg-final { scan-assembler-times "movq\t.*buf\\+8" 1 } } */
6 /* { dg-final { scan-assembler-times "subq\tbuf\\+8" 1 } } */
7 /* { dg-final { scan-assembler-times "shrl\t\\\$3," 1 } } */
8 /* { dg-final { scan-assembler-times "rdsspq" 2 } } */
9 /* { dg-final { scan-assembler-times "incsspq" 2 } } */
10 
11 void *buf[5];
12 
raise0(void)13 void raise0(void)
14 {
15   __builtin_longjmp (buf, 1);
16 }
17 
execute(int cmd)18 void execute(int cmd)
19 {
20   __builtin_setjmp (buf);
21 }
22