[PATCH] D37909: [AutoUpgrade] Fix a compatibility issue with module flag
Steven Wu via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 15 14:14:01 PDT 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rL313398: [AutoUpgrade] Fix a compatibility issue with module flag (authored by steven_wu).
Repository:
rL LLVM
https://reviews.llvm.org/D37909
Files:
llvm/trunk/lib/IR/AutoUpgrade.cpp
llvm/trunk/test/Bitcode/upgrade-module-flag.ll
Index: llvm/trunk/test/Bitcode/upgrade-module-flag.ll
===================================================================
--- llvm/trunk/test/Bitcode/upgrade-module-flag.ll
+++ llvm/trunk/test/Bitcode/upgrade-module-flag.ll
@@ -1,13 +1,15 @@
; RUN: llvm-as < %s | llvm-dis | FileCheck %s
; RUN: verify-uselistorder < %s
-!llvm.module.flags = !{!0, !1, !2}
+!llvm.module.flags = !{!0, !1, !2, !3}
!0 = !{i32 1, !"PIC Level", i32 1}
!1 = !{i32 1, !"PIE Level", i32 1}
!2 = !{i32 1, !"Objective-C Image Info Version", i32 0}
+!3 = !{i32 1, !"Objective-C Image Info Section", !"__DATA, __objc_imageinfo, regular, no_dead_strip"}
; CHECK: !0 = !{i32 7, !"PIC Level", i32 1}
; CHECK: !1 = !{i32 7, !"PIE Level", i32 1}
; CHECK: !2 = !{i32 1, !"Objective-C Image Info Version", i32 0}
-; CHECK: !3 = !{i32 4, !"Objective-C Class Properties", i32 0}
+; CHECK: !3 = !{i32 1, !"Objective-C Image Info Section", !"__DATA,__objc_imageinfo,regular,no_dead_strip"}
+; CHECK: !4 = !{i32 4, !"Objective-C Class Properties", i32 0}
Index: llvm/trunk/lib/IR/AutoUpgrade.cpp
===================================================================
--- llvm/trunk/lib/IR/AutoUpgrade.cpp
+++ llvm/trunk/lib/IR/AutoUpgrade.cpp
@@ -2363,6 +2363,24 @@
}
}
}
+ // Upgrade Objective-C Image Info Section. Removed the whitespce in the
+ // section name so that llvm-lto will not complain about mismatching
+ // module flags that is functionally the same.
+ if (ID->getString() == "Objective-C Image Info Section") {
+ if (auto *Value = dyn_cast_or_null<MDString>(Op->getOperand(2))) {
+ SmallVector<StringRef, 4> ValueComp;
+ Value->getString().split(ValueComp, " ");
+ if (ValueComp.size() != 1) {
+ std::string NewValue;
+ for (auto &S : ValueComp)
+ NewValue += S.str();
+ Metadata *Ops[3] = {Op->getOperand(0), Op->getOperand(1),
+ MDString::get(M.getContext(), NewValue)};
+ ModFlags->setOperand(I, MDNode::get(M.getContext(), Ops));
+ Changed = true;
+ }
+ }
+ }
}
// "Objective-C Class Properties" is recently added for Objective-C. We
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D37909.115490.patch
Type: text/x-patch
Size: 2192 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170915/861c4082/attachment.bin>
More information about the llvm-commits
mailing list