diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2021-01-23 22:38:43 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2021-01-23 22:40:32 +0100 |
commit | c83cff45c7a58010e65270d3f5bfb8c9a72ad832 (patch) | |
tree | 7aa949336ccf63692fffdc1bc76ddd845e738922 /llvm/lib/Transforms/Utils/InlineFunction.cpp | |
parent | c37dd3b6d553d7ae3afaf677f1c6abdf6b1ec74e (diff) | |
download | llvm-c83cff45c7a58010e65270d3f5bfb8c9a72ad832.zip llvm-c83cff45c7a58010e65270d3f5bfb8c9a72ad832.tar.gz llvm-c83cff45c7a58010e65270d3f5bfb8c9a72ad832.tar.bz2 |
[IR] Add NoAliasScopeDeclInst (NFC)
Add an intrinsic type class to represent the
llvm.experimental.noalias.scope.decl intrinsic, to make code
working with it a bit nicer by hiding the metadata extraction
from view.
Diffstat (limited to 'llvm/lib/Transforms/Utils/InlineFunction.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/InlineFunction.cpp | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp index abdd2b2..2f8f366 100644 --- a/llvm/lib/Transforms/Utils/InlineFunction.cpp +++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp @@ -859,13 +859,8 @@ ScopedAliasMetadataDeepCloner::ScopedAliasMetadataDeepCloner( MD.insert(M); // We also need to clone the metadata in noalias intrinsics. - if (const auto *II = dyn_cast<IntrinsicInst>(&I)) - if (II->getIntrinsicID() == Intrinsic::experimental_noalias_scope_decl) - if (const auto *M = dyn_cast<MDNode>( - cast<MetadataAsValue>( - II->getOperand(Intrinsic::NoAliasScopeDeclScopeArg)) - ->getMetadata())) - MD.insert(M); + if (const auto *Decl = dyn_cast<NoAliasScopeDeclInst>(&I)) + MD.insert(Decl->getScopeList()); } } addRecursiveMetadataUses(); @@ -932,14 +927,11 @@ void ScopedAliasMetadataDeepCloner::remap(ValueToValueMapTy &VMap) { if (MDNode *M = I->getMetadata(LLVMContext::MD_noalias)) I->setMetadata(LLVMContext::MD_noalias, MDMap[M]); - if (auto *II = dyn_cast<IntrinsicInst>(I)) - if (II->getIntrinsicID() == Intrinsic::experimental_noalias_scope_decl) { - auto *MV = cast<MetadataAsValue>( - II->getOperand(Intrinsic::NoAliasScopeDeclScopeArg)); - auto *NewMV = MetadataAsValue::get( - II->getContext(), MDMap[cast<MDNode>(MV->getMetadata())]); - II->setOperand(Intrinsic::NoAliasScopeDeclScopeArg, NewMV); - } + if (auto *Decl = dyn_cast<NoAliasScopeDeclInst>(I)) { + auto *NewMV = + MetadataAsValue::get(Decl->getContext(), MDMap[Decl->getScopeList()]); + Decl->setOperand(Intrinsic::NoAliasScopeDeclScopeArg, NewMV); + } } } |