summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/tbaa-for-vptr.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2014-03-12 18:26:14 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2014-03-12 18:26:14 +0000
commit0fc7bdc821787fa55837b49d932fc13eac49f5b8 (patch)
tree7996529cb2428facd2c630c025f8ad7f83aa5a3f /clang/test/CodeGen/tbaa-for-vptr.cpp
parent8cc04fc40d586d4dd09c10542888cfdfe7c91c89 (diff)
downloadbcm5719-llvm-0fc7bdc821787fa55837b49d932fc13eac49f5b8.tar.gz
bcm5719-llvm-0fc7bdc821787fa55837b49d932fc13eac49f5b8.zip
PR19113: Emit 'vtable' TBAA metadata when loading a vptr in a pointer-to-member-function call.
llvm-svn: 203691
Diffstat (limited to 'clang/test/CodeGen/tbaa-for-vptr.cpp')
-rw-r--r--clang/test/CodeGen/tbaa-for-vptr.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/clang/test/CodeGen/tbaa-for-vptr.cpp b/clang/test/CodeGen/tbaa-for-vptr.cpp
index 2fe97678baf..ea51b63258c 100644
--- a/clang/test/CodeGen/tbaa-for-vptr.cpp
+++ b/clang/test/CodeGen/tbaa-for-vptr.cpp
@@ -17,12 +17,19 @@ void CreateA() {
new A;
}
-void CallFoo(A *a) {
+void CallFoo(A *a, int (A::*fp)() const) {
a->foo();
+ (a->*fp)();
}
+// CHECK-LABEL: @_Z7CallFoo
// CHECK: %{{.*}} = load {{.*}} !tbaa ![[NUM:[0-9]+]]
+// CHECK: br i1
+// CHECK: load {{.*}}, !tbaa ![[NUM]]
+//
+// CHECK-LABEL: @_ZN1AC2Ev
// CHECK: store {{.*}} !tbaa ![[NUM]]
+//
// CHECK: [[NUM]] = metadata !{metadata [[TYPE:!.*]], metadata [[TYPE]], i64 0}
// CHECK: [[TYPE]] = metadata !{metadata !"vtable pointer", metadata !{{.*}}
// NOTBAA-NOT: = metadata !{metadata !"Simple C/C++ TBAA"}
OpenPOWER on IntegriCloud