summaryrefslogtreecommitdiff
path: root/lib/Transforms/Instrumentation
diff options
context:
space:
mode:
authorManman Ren <manman.ren@gmail.com>2013-09-06 22:47:05 +0000
committerManman Ren <manman.ren@gmail.com>2013-09-06 22:47:05 +0000
commit0b3d39235aaed8bc66ccffb3942bf7b5f185329c (patch)
tree4a200b460151ea6d88f92af581743b3567357909 /lib/Transforms/Instrumentation
parent1307103dffa81494e284b17c6ecfe4c3ed9cb6ce (diff)
downloadllvm-0b3d39235aaed8bc66ccffb3942bf7b5f185329c.tar.gz
llvm-0b3d39235aaed8bc66ccffb3942bf7b5f185329c.tar.bz2
llvm-0b3d39235aaed8bc66ccffb3942bf7b5f185329c.tar.xz
TBAA: add isTBAAVtableAccess to MDNode so clients can call the function
instead of having its own implementation. The implementation of isTBAAVtableAccess is in TypeBasedAliasAnalysis.cpp since it is related to the format of TBAA metadata. The path for struct-path tbaa will be exercised by test/Instrumentation/ThreadSanitizer/read_from_global.ll, vptr_read.ll, and vptr_update.ll when struct-path tbaa is on by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190216 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Instrumentation')
-rw-r--r--lib/Transforms/Instrumentation/ThreadSanitizer.cpp8
1 files changed, 2 insertions, 6 deletions
diff --git a/lib/Transforms/Instrumentation/ThreadSanitizer.cpp b/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
index e19ceba4d1..2c8a7c4118 100644
--- a/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
+++ b/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
@@ -240,12 +240,8 @@ bool ThreadSanitizer::doInitialization(Module &M) {
}
static bool isVtableAccess(Instruction *I) {
- if (MDNode *Tag = I->getMetadata(LLVMContext::MD_tbaa)) {
- if (Tag->getNumOperands() < 1) return false;
- if (MDString *Tag1 = dyn_cast<MDString>(Tag->getOperand(0))) {
- if (Tag1->getString() == "vtable pointer") return true;
- }
- }
+ if (MDNode *Tag = I->getMetadata(LLVMContext::MD_tbaa))
+ return Tag->isTBAAVtableAccess();
return false;
}