xref: /aosp_15_r20/external/clang/test/CodeGenCXX/split-stacks.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang -target x86_64-linux-gnu -fsplit-stack -S -std=c++11 %s -emit-llvm -o - | FileCheck -check-prefix=CHECK-SEGSTK %s
2*67e74705SXin Li // RUN: %clang -target x86_64-linux-gnu -S -std=c++11 %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 template <typename T>
9*67e74705SXin Li [[gnu::no_split_stack]]
tnosplit()10*67e74705SXin Li int tnosplit() {
11*67e74705SXin Li   return 0;
12*67e74705SXin Li }
13*67e74705SXin Li 
14*67e74705SXin Li [[gnu::no_split_stack]]
nosplit()15*67e74705SXin Li int nosplit() {
16*67e74705SXin Li   return tnosplit<int>();
17*67e74705SXin Li }
18*67e74705SXin Li 
19*67e74705SXin Li // CHECK-SEGSTK: define i32 @_Z3foov() [[SS:#[0-9]+]] {
20*67e74705SXin Li // CHECK-SEGSTK: define i32 @_Z7nosplitv() [[NSS1:#[0-9]+]] {
21*67e74705SXin Li // CHECK-SEGSTK: define linkonce_odr i32 @_Z8tnosplitIiEiv() [[NSS2:#[0-9]+]] comdat {
22*67e74705SXin Li // CHECK-SEGSTK-NOT: [[NSS1]] = { {{.*}} "split-stack" {{.*}} }
23*67e74705SXin Li // CHECK-SEGSTK-NOT: [[NSS2]] = { {{.*}} "split-stack" {{.*}} }
24*67e74705SXin Li // CHECK-SEGSTK: [[SS]] = { {{.*}} "split-stack" {{.*}} }
25*67e74705SXin Li // CHECK-SEGSTK-NOT: [[NSS1]] = { {{.*}} "split-stack" {{.*}} }
26*67e74705SXin Li // CHECK-SEGSTK-NOT: [[NSS2]] = { {{.*}} "split-stack" {{.*}} }
27*67e74705SXin Li 
28*67e74705SXin Li // CHECK-NOSEGSTK: define i32 @_Z3foov() [[NSS0:#[0-9]+]] {
29*67e74705SXin Li // CHECK-NOSEGSTK: define i32 @_Z7nosplitv() [[NSS1:#[0-9]+]] {
30*67e74705SXin Li // CHECK-NOSEGSTK: define linkonce_odr i32 @_Z8tnosplitIiEiv() [[NSS2:#[0-9]+]] comdat {
31*67e74705SXin Li // CHECK-NOSEGSTK-NOT: [[NSS1]] = { {{.*}} "split-stack" {{.*}} }
32*67e74705SXin Li // CHECK-NOSEGSTK-NOT: [[NSS2]] = { {{.*}} "split-stack" {{.*}} }
33*67e74705SXin Li // CHECK-NOSEGSTK-NOT: [[NSS3]] = { {{.*}} "split-stack" {{.*}} }
34