diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-03-12 18:26:14 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-03-12 18:26:14 +0000 |
commit | 0fc7bdc821787fa55837b49d932fc13eac49f5b8 (patch) | |
tree | 7996529cb2428facd2c630c025f8ad7f83aa5a3f /clang/test/CodeGen/tbaa-for-vptr.cpp | |
parent | 8cc04fc40d586d4dd09c10542888cfdfe7c91c89 (diff) | |
download | bcm5719-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.cpp | 9 |
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"} |