xref: /aosp_15_r20/external/clang/test/CodeGen/split-stacks.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang -target x86_64-linux-gnu -fsplit-stack -S %s -emit-llvm -o - | FileCheck -check-prefix=CHECK-SEGSTK %s
2*67e74705SXin Li // RUN: %clang -target x86_64-linux-gnu -S %s -emit-llvm -o - | FileCheck -check-prefix=CHECK-NOSEGSTK %s
3*67e74705SXin Li 
foo()4*67e74705SXin Li int foo() {
5*67e74705SXin Li   return 0;
6*67e74705SXin Li }
7*67e74705SXin Li 
8*67e74705SXin Li __attribute__((no_split_stack))
nosplit()9*67e74705SXin Li int nosplit() {
10*67e74705SXin Li   return 0;
11*67e74705SXin Li }
12*67e74705SXin Li 
main()13*67e74705SXin Li int main() {
14*67e74705SXin Li   return foo();
15*67e74705SXin Li }
16*67e74705SXin Li 
17*67e74705SXin Li // CHECK-SEGSTK: define i32 @foo() [[SS:#[0-9]+]] {
18*67e74705SXin Li // CHECK-SEGSTK: define i32 @nosplit() [[NSS:#[0-9]+]] {
19*67e74705SXin Li // CHECK-SEGSTK: define i32 @main() [[SS]] {
20*67e74705SXin Li // CHECK-SEGSTK-NOT: [[NSS]] = { {{.*}} "split-stack" {{.*}} }
21*67e74705SXin Li // CHECK-SEGSTK: [[SS]] = { {{.*}} "split-stack" {{.*}} }
22*67e74705SXin Li // CHECK-SEGSTK-NOT: [[NSS]] = { {{.*}} "split-stack" {{.*}} }
23*67e74705SXin Li 
24*67e74705SXin Li // CHECK-NOSEGSTK: define i32 @foo() #0 {
25*67e74705SXin Li // CHECK-NOSEGSTK: define i32 @main() #0 {
26*67e74705SXin Li // CHECK-NOSEGSTK-NOT: #0 = { {{.*}} "split-stack" {{.*}} }
27