diff options
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/IR/AutoUpgrade.cpp | 12 | ||||
-rw-r--r-- | llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp | 11 |
2 files changed, 8 insertions, 15 deletions
diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp index 2978d6af916..4f0a32efcae 100644 --- a/llvm/lib/IR/AutoUpgrade.cpp +++ b/llvm/lib/IR/AutoUpgrade.cpp @@ -3765,8 +3765,8 @@ bool llvm::UpgradeDebugInfo(Module &M) { bool llvm::UpgradeRetainReleaseMarker(Module &M) { bool Changed = false; - NamedMDNode *ModRetainReleaseMarker = - M.getNamedMetadata("clang.arc.retainAutoreleasedReturnValueMarker"); + const char *MarkerKey = "clang.arc.retainAutoreleasedReturnValueMarker"; + NamedMDNode *ModRetainReleaseMarker = M.getNamedMetadata(MarkerKey); if (ModRetainReleaseMarker) { MDNode *Op = ModRetainReleaseMarker->getOperand(0); if (Op) { @@ -3776,11 +3776,11 @@ bool llvm::UpgradeRetainReleaseMarker(Module &M) { ID->getString().split(ValueComp, "#"); if (ValueComp.size() == 2) { std::string NewValue = ValueComp[0].str() + ";" + ValueComp[1].str(); - Metadata *Ops[1] = {MDString::get(M.getContext(), NewValue)}; - ModRetainReleaseMarker->setOperand(0, - MDNode::get(M.getContext(), Ops)); - Changed = true; + ID = MDString::get(M.getContext(), NewValue); } + M.addModuleFlag(Module::Error, MarkerKey, ID); + M.eraseNamedMetadata(ModRetainReleaseMarker); + Changed = true; } } } diff --git a/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp b/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp index 6613f6a76d0..ff07cfe00d4 100644 --- a/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp +++ b/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp @@ -744,15 +744,8 @@ bool ObjCARCContract::doInitialization(Module &M) { EP.init(&M); // Initialize RVInstMarker. - RVInstMarker = nullptr; - if (NamedMDNode *NMD = - M.getNamedMetadata("clang.arc.retainAutoreleasedReturnValueMarker")) - if (NMD->getNumOperands() == 1) { - const MDNode *N = NMD->getOperand(0); - if (N->getNumOperands() == 1) - if (const MDString *S = dyn_cast<MDString>(N->getOperand(0))) - RVInstMarker = S; - } + const char *MarkerKey = "clang.arc.retainAutoreleasedReturnValueMarker"; + RVInstMarker = dyn_cast_or_null<MDString>(M.getModuleFlag(MarkerKey)); return false; } |