[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