diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2015-05-15 18:33:32 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2015-05-15 18:33:32 +0000 |
commit | 915df9968b6524d1858884ae5694812b6831a1ac (patch) | |
tree | b7e541fa454fbea85db502afff25cb5d2533bd43 /clang/test/CodeGenCXX/cfi-vcall.cpp | |
parent | 25e2500ac866365beaf747e2b0c926b9db4f721b (diff) | |
download | bcm5719-llvm-915df9968b6524d1858884ae5694812b6831a1ac.tar.gz bcm5719-llvm-915df9968b6524d1858884ae5694812b6831a1ac.zip |
Implement no_sanitize attribute.
Differential Revision: http://reviews.llvm.org/D9631
llvm-svn: 237463
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} |