summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/cfi-vcall.cpp
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2015-05-15 18:33:32 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2015-05-15 18:33:32 +0000
commit915df9968b6524d1858884ae5694812b6831a1ac (patch)
treeb7e541fa454fbea85db502afff25cb5d2533bd43 /clang/test/CodeGenCXX/cfi-vcall.cpp
parent25e2500ac866365beaf747e2b0c926b9db4f721b (diff)
downloadbcm5719-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.cpp22
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}
OpenPOWER on IntegriCloud