diff options
author | Kostya Serebryany <kcc@google.com> | 2012-03-26 17:35:03 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2012-03-26 17:35:03 +0000 |
commit | 52eb699220aa00696b5c4a1a67141a8bcc8a4e68 (patch) | |
tree | 2d09229fd220e94e71c7f4a07e752fff19c474ef /test/Instrumentation | |
parent | be3f051c49699a86d526833d7dbe95645680a340 (diff) |
[tsan] treat vtable pointer updates in a special way (requires tbaa); fix a bug (forgot to return true after instrumenting); make sure the tsan tests are run
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153448 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Instrumentation')
-rw-r--r-- | test/Instrumentation/ThreadSanitizer/lit.local.cfg | 1 | ||||
-rw-r--r-- | test/Instrumentation/ThreadSanitizer/vptr_update.ll | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/test/Instrumentation/ThreadSanitizer/lit.local.cfg b/test/Instrumentation/ThreadSanitizer/lit.local.cfg new file mode 100644 index 0000000000..19eebc0ac7 --- /dev/null +++ b/test/Instrumentation/ThreadSanitizer/lit.local.cfg @@ -0,0 +1 @@ +config.suffixes = ['.ll', '.c', '.cpp'] diff --git a/test/Instrumentation/ThreadSanitizer/vptr_update.ll b/test/Instrumentation/ThreadSanitizer/vptr_update.ll new file mode 100644 index 0000000000..f31865901b --- /dev/null +++ b/test/Instrumentation/ThreadSanitizer/vptr_update.ll @@ -0,0 +1,13 @@ +; RUN: opt < %s -tsan -S | FileCheck %s +; Check that vtable pointer updates are treated in a special way. +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" + +define void @Foo(i8** nocapture %a, i8* %b) nounwind uwtable { +entry: +; CHECK: call void @__tsan_vptr_update + store i8* %b, i8** %a, align 8, !tbaa !0 + ret void +} +!0 = metadata !{metadata !"vtable pointer", metadata !1} +!1 = metadata !{metadata !"Simple C/C++ TBAA", null} + |