[llvm] r329248 - [IR] Upgrade comment token in objc retain release marker
Gerolf Hoflehner via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 4 19:44:46 PDT 2018
Author: ghoflehner
Date: Wed Apr 4 19:44:46 2018
New Revision: 329248
URL: http://llvm.org/viewvc/llvm-project?rev=329248&view=rev
Log:
[IR] Upgrade comment token in objc retain release marker
Older compiler issued '#' instead of ';'
Added:
llvm/trunk/test/Bitcode/upgrade-objcretainrelease.ll
llvm/trunk/test/Bitcode/upgrade-objcretainrelease.ll.bc (with props)
Modified:
llvm/trunk/include/llvm/IR/AutoUpgrade.h
llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
llvm/trunk/lib/IR/AutoUpgrade.cpp
Modified: llvm/trunk/include/llvm/IR/AutoUpgrade.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/AutoUpgrade.h?rev=329248&r1=329247&r2=329248&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/AutoUpgrade.h (original)
+++ llvm/trunk/include/llvm/IR/AutoUpgrade.h Wed Apr 4 19:44:46 2018
@@ -51,6 +51,10 @@ namespace llvm {
/// module is modified.
bool UpgradeModuleFlags(Module &M);
+ /// This checks for objc retain release marker which should be upgraded. It
+ /// returns true if module is modified.
+ bool UpgradeRetainReleaseMarker(Module &M);
+
void UpgradeSectionAttributes(Module &M);
/// If the given TBAA tag uses the scalar TBAA format, create a new node
Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=329248&r1=329247&r2=329248&view=diff
==============================================================================
--- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
+++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Wed Apr 4 19:44:46 2018
@@ -4788,6 +4788,9 @@ Error BitcodeReader::materializeModule()
UpgradeDebugInfo(*TheModule);
UpgradeModuleFlags(*TheModule);
+
+ UpgradeRetainReleaseMarker(*TheModule);
+
return Error::success();
}
Modified: llvm/trunk/lib/IR/AutoUpgrade.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/AutoUpgrade.cpp?rev=329248&r1=329247&r2=329248&view=diff
==============================================================================
--- llvm/trunk/lib/IR/AutoUpgrade.cpp (original)
+++ llvm/trunk/lib/IR/AutoUpgrade.cpp Wed Apr 4 19:44:46 2018
@@ -2685,6 +2685,30 @@ bool llvm::UpgradeDebugInfo(Module &M) {
return Modified;
}
+bool llvm::UpgradeRetainReleaseMarker(Module &M) {
+ bool Changed = false;
+ NamedMDNode *ModRetainReleaseMarker =
+ M.getNamedMetadata("clang.arc.retainAutoreleasedReturnValueMarker");
+ if (ModRetainReleaseMarker) {
+ MDNode *Op = ModRetainReleaseMarker->getOperand(0);
+ if (Op) {
+ MDString *ID = dyn_cast_or_null<MDString>(Op->getOperand(0));
+ if (ID) {
+ SmallVector<StringRef, 4> ValueComp;
+ 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;
+ }
+ }
+ }
+ }
+ return Changed;
+}
+
bool llvm::UpgradeModuleFlags(Module &M) {
NamedMDNode *ModFlags = M.getModuleFlagsMetadata();
if (!ModFlags)
Added: llvm/trunk/test/Bitcode/upgrade-objcretainrelease.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/upgrade-objcretainrelease.ll?rev=329248&view=auto
==============================================================================
--- llvm/trunk/test/Bitcode/upgrade-objcretainrelease.ll (added)
+++ llvm/trunk/test/Bitcode/upgrade-objcretainrelease.ll Wed Apr 4 19:44:46 2018
@@ -0,0 +1,6 @@
+; Test that comment token for objc retain release is upgraded from '#' to ';'
+;
+; RUN: llvm-dis < %s.bc | FileCheck %s
+
+; CHECK: "mov\09fp, fp\09\09; marker for objc_retainAutoreleaseReturnValue"
+
Added: llvm/trunk/test/Bitcode/upgrade-objcretainrelease.ll.bc
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/upgrade-objcretainrelease.ll.bc?rev=329248&view=auto
==============================================================================
Binary file - no diff available.
Propchange: llvm/trunk/test/Bitcode/upgrade-objcretainrelease.ll.bc
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
More information about the llvm-commits
mailing list