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 Livoid 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 Liint 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 Liint 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