diff options
| author | Ivan A. Kosarev <ikosarev@accesssoftek.com> | 2018-01-17 13:29:54 +0000 |
|---|---|---|
| committer | Ivan A. Kosarev <ikosarev@accesssoftek.com> | 2018-01-17 13:29:54 +0000 |
| commit | 4d0ff0c74d35e6c5bfc60c3864e8ac7655737f8f (patch) | |
| tree | cd04e83e4347d59bb006b3b185a783c9ab9eb16b /llvm/lib/Transforms | |
| parent | b87c8fa45634968526d140a586efeb194fa13ac9 (diff) | |
| download | bcm5719-llvm-4d0ff0c74d35e6c5bfc60c3864e8ac7655737f8f.tar.gz bcm5719-llvm-4d0ff0c74d35e6c5bfc60c3864e8ac7655737f8f.zip | |
[Transforms] Support making mutable versions of new-format TBAA access tags
Differential Revision: https://reviews.llvm.org/D41565
llvm-svn: 322650
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp b/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp index c44edbed8ed..c7acdef2713 100644 --- a/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp +++ b/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp @@ -2461,22 +2461,8 @@ static void stripNonValidDataFromBody(Function &F) { continue; } - if (const MDNode *MD = I.getMetadata(LLVMContext::MD_tbaa)) { - assert(MD->getNumOperands() < 5 && "unrecognized metadata shape!"); - bool IsImmutableTBAA = - MD->getNumOperands() == 4 && - mdconst::extract<ConstantInt>(MD->getOperand(3))->getValue() == 1; - - if (!IsImmutableTBAA) - continue; // no work to do, MD_tbaa is already marked mutable - - MDNode *Base = cast<MDNode>(MD->getOperand(0)); - MDNode *Access = cast<MDNode>(MD->getOperand(1)); - uint64_t Offset = - mdconst::extract<ConstantInt>(MD->getOperand(2))->getZExtValue(); - - MDNode *MutableTBAA = - Builder.createTBAAStructTagNode(Base, Access, Offset); + if (MDNode *Tag = I.getMetadata(LLVMContext::MD_tbaa)) { + MDNode *MutableTBAA = Builder.createMutableTBAAAccessTag(Tag); I.setMetadata(LLVMContext::MD_tbaa, MutableTBAA); } |

