blob: e71d820e365426bd822a71ea57738498d7fefe2a [file]
/* { dg-options " -O -fstack-protector-strong -mstack-protector-guard=sysreg -mstack-protector-guard-reg=tpidr2_el0 -mstack-protector-guard-offset=16" } */
/* { dg-final { check-function-bodies "**" "" } } */
void g(void *);
__SVBool_t *h(void *);
/*
** test1:
** sub sp, sp, #288
** stp x29, x30, \[sp, #?272\]
** add x29, sp, #?272
** mrs (x[0-9]+), tpidr2_el0
** ldr (x[0-9]+), \[\1, #?16\]
** str \2, \[sp, #?264\]
** mov \2, #?0
** add x0, sp, #?8
** bl g
** ...
** mrs .*
** ...
** bne .*
** ...
** ldp x29, x30, \[sp, #?272\]
** add sp, sp, #?288
** ret
** bl __stack_chk_fail
*/
int test1() {
int y[0x40];
g(y);
return 1;
}
/*
** test2:
** stp x29, x30, \[sp, #?-16\]!
** mov x29, sp
** sub sp, sp, #1040
** mrs (x[0-9]+), tpidr2_el0
** ldr (x[0-9]+), \[\1, #?16\]
** str \2, \[sp, #?1032\]
** mov \2, #?0
** add x0, sp, #?8
** bl g
** ...
** mrs .*
** ...
** bne .*
** ...
** add sp, sp, #?1040
** ldp x29, x30, \[sp\], #?16
** ret
** bl __stack_chk_fail
*/
int test2() {
int y[0x100];
g(y);
return 1;
}
#pragma GCC target "+sve"
/*
** test3:
** stp x29, x30, \[sp, #?-16\]!
** mov x29, sp
** addvl sp, sp, #-18
** ...
** str p4, \[sp\]
** ...
** sub sp, sp, #272
** mrs (x[0-9]+), tpidr2_el0
** ldr (x[0-9]+), \[\1, #?16\]
** str \2, \[sp, #?264\]
** mov \2, #?0
** add x0, sp, #?8
** bl h
** ...
** mrs .*
** ...
** bne .*
** ...
** add sp, sp, #?272
** ...
** ldr p4, \[sp\]
** ...
** addvl sp, sp, #18
** ldp x29, x30, \[sp\], #?16
** ret
** bl __stack_chk_fail
*/
__SVBool_t test3() {
int y[0x40];
return *h(y);
}