diff options
Diffstat (limited to 'clang/test/CodeGenCXX/cfi-vcall.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/cfi-vcall.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/clang/test/CodeGenCXX/cfi-vcall.cpp b/clang/test/CodeGenCXX/cfi-vcall.cpp index bfbbceaa1a3..b0f79d9ec0e 100644 --- a/clang/test/CodeGenCXX/cfi-vcall.cpp +++ b/clang/test/CodeGenCXX/cfi-vcall.cpp @@ -47,16 +47,32 @@ void af(A *a) { a->f(); } -// CHECK: define internal void @_Z2dfPN12_GLOBAL__N_11DE -void df(D *d) { +// CHECK: define internal void @_Z3df1PN12_GLOBAL__N_11DE +void df1(D *d) { // CHECK: {{%[^ ]*}} = call i1 @llvm.bitset.test(i8* {{%[^ ]*}}, metadata !"[{{.*}}cfi-vcall.cpp]N12_GLOBAL__N_11DE") d->f(); } +// CHECK: define internal void @_Z3df2PN12_GLOBAL__N_11DE +__attribute__((no_sanitize("cfi"))) +void df2(D *d) { + // CHECK-NOT: call i1 @llvm.bitset.test + d->f(); +} + +// CHECK: define internal void @_Z3df3PN12_GLOBAL__N_11DE +__attribute__((no_sanitize("address"))) __attribute__((no_sanitize("cfi-vcall"))) +void df3(D *d) { + // CHECK-NOT: call i1 @llvm.bitset.test + d->f(); +} + D d; void foo() { - df(&d); + df1(&d); + df2(&d); + df3(&d); } // CHECK-DAG: !{!"1A", [3 x i8*]* @_ZTV1A, i64 16} |