xref: /aosp_15_r20/external/clang/test/CodeGenCXX/trap-fnattr.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -O0 -emit-llvm -ftrapv -ftrap-function=mytrap %s -o - | FileCheck %s -check-prefix=TRAPFUNC
2*67e74705SXin Li // RUN: %clang_cc1 -O0 -emit-llvm -ftrapv %s -o - | FileCheck %s -check-prefix=NOOPTION
3*67e74705SXin Li 
4*67e74705SXin Li // TRAPFUNC-LABEL: define void @{{_Z12test_builtinv|\"\\01\?test_builtin@@YAXXZ\"}}
5*67e74705SXin Li // TRAPFUNC: call void @llvm.trap() [[ATTR0:#[0-9]+]]
6*67e74705SXin Li 
7*67e74705SXin Li // NOOPTION-LABEL: define void @{{_Z12test_builtinv|\"\\01\?test_builtin@@YAXXZ\"}}
8*67e74705SXin Li // NOOPTION: call void @llvm.trap(){{$}}
9*67e74705SXin Li 
test_builtin(void)10*67e74705SXin Li void test_builtin(void) {
11*67e74705SXin Li   __builtin_trap();
12*67e74705SXin Li }
13*67e74705SXin Li 
14*67e74705SXin Li // TRAPFUNC-LABEL: define {{.*}}i32 @{{_Z13test_noreturnv|\"\\01\?test_noreturn@@YAHXZ\"}}
15*67e74705SXin Li // TRAPFUNC: call void @llvm.trap() [[ATTR0]]
16*67e74705SXin Li 
17*67e74705SXin Li // NOOPTION-LABEL: define {{.*}}i32 @{{_Z13test_noreturnv|\"\\01\?test_noreturn@@YAHXZ\"}}
18*67e74705SXin Li // NOOPTION: call void @llvm.trap(){{$}}
19*67e74705SXin Li 
test_noreturn(void)20*67e74705SXin Li int test_noreturn(void) {
21*67e74705SXin Li }
22*67e74705SXin Li 
23*67e74705SXin Li // TRAPFUNC-LABEL: define {{.*}}i32 @{{_Z17test_add_overflowii|\"\\01\?test_add_overflow@@YAHHH@Z\"}}
24*67e74705SXin Li // TRAPFUNC: call void @llvm.trap() [[ATTR1:#[0-9]+]]
25*67e74705SXin Li 
26*67e74705SXin Li // NOOPTION-LABEL: define {{.*}}i32 @{{_Z17test_add_overflowii|\"\\01\?test_add_overflow@@YAHHH@Z\"}}
27*67e74705SXin Li // NOOPTION: call void @llvm.trap() [[ATTR2:#[0-9]+]]
28*67e74705SXin Li 
test_add_overflow(int a,int b)29*67e74705SXin Li int test_add_overflow(int a, int b) {
30*67e74705SXin Li   return a + b;
31*67e74705SXin Li }
32*67e74705SXin Li 
33*67e74705SXin Li // TRAPFUNC: attributes [[ATTR0]] = { {{.*}}"trap-func-name"="mytrap" }
34*67e74705SXin Li // TRAPFUNC: attributes [[ATTR1]] = { {{.*}}"trap-func-name"="mytrap" }
35*67e74705SXin Li 
36*67e74705SXin Li // NOOPTION-NOT: attributes [[ATTR2]] = { {{.*}}"trap-func-name"="mytrap" }
37