[PATCH] D31632: ThinLTOBitcodeWriter: handle aliases first in filterModule
Bob Haarman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 3 17:14:26 PDT 2017
inglorion created this revision.
Herald added a subscriber: Prazek.
This change fixes a "local linkage requires default visibility" assert when attempting to build LLVM with ThinLTO on Windows.
https://reviews.llvm.org/D31632
Files:
lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
Index: lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
===================================================================
--- lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
+++ lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
@@ -182,33 +182,14 @@
void filterModule(
Module *M, function_ref<bool(const GlobalValue *)> ShouldKeepDefinition) {
- for (Function &F : *M) {
- if (ShouldKeepDefinition(&F))
- continue;
-
- F.deleteBody();
- F.setComdat(nullptr);
- F.clearMetadata();
- }
-
- for (GlobalVariable &GV : M->globals()) {
- if (ShouldKeepDefinition(&GV))
- continue;
-
- GV.setInitializer(nullptr);
- GV.setLinkage(GlobalValue::ExternalLinkage);
- GV.setComdat(nullptr);
- GV.clearMetadata();
- }
-
for (Module::alias_iterator I = M->alias_begin(), E = M->alias_end();
I != E;) {
GlobalAlias *GA = &*I++;
if (ShouldKeepDefinition(GA))
continue;
GlobalObject *GO;
- if (I->getValueType()->isFunctionTy())
+ if (GA->getValueType()->isFunctionTy())
GO = Function::Create(cast<FunctionType>(GA->getValueType()),
GlobalValue::ExternalLinkage, "", M);
else
@@ -220,6 +201,25 @@
GA->replaceAllUsesWith(GO);
GA->eraseFromParent();
}
+
+ for (Function &F : *M) {
+ if (ShouldKeepDefinition(&F))
+ continue;
+
+ F.deleteBody();
+ F.setComdat(nullptr);
+ F.clearMetadata();
+ }
+
+ for (GlobalVariable &GV : M->globals()) {
+ if (ShouldKeepDefinition(&GV))
+ continue;
+
+ GV.setInitializer(nullptr);
+ GV.setLinkage(GlobalValue::ExternalLinkage);
+ GV.setComdat(nullptr);
+ GV.clearMetadata();
+ }
}
void forEachVirtualFunction(Constant *C, function_ref<void(Function *)> Fn) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D31632.93976.patch
Type: text/x-patch
Size: 1752 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170404/030a7b8d/attachment.bin>
More information about the llvm-commits
mailing list