diff options
| author | Manman Ren <manman.ren@gmail.com> | 2013-09-06 22:47:05 +0000 |
|---|---|---|
| committer | Manman Ren <manman.ren@gmail.com> | 2013-09-06 22:47:05 +0000 |
| commit | d8c68b18528765948987feb9116fec25a7a57e9e (patch) | |
| tree | 7d23bc48f35d24ad1c46d7597f43af702d097cc0 /llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp | |
| parent | 5ef1c861ddef5568c8c5596325048655a808c383 (diff) | |
| download | bcm5719-llvm-d8c68b18528765948987feb9116fec25a7a57e9e.tar.gz bcm5719-llvm-d8c68b18528765948987feb9116fec25a7a57e9e.zip | |
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.
llvm-svn: 190216
Diffstat (limited to 'llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp index e19ceba4d16..2c8a7c4118e 100644 --- a/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp +++ b/llvm/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; } |

