[PATCH] D54125: [LTO] Drop non-prevailing definitions for non-local linkage types
Pirama Arumuga Nainar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 6 14:15:21 PST 2018
pirama marked 4 inline comments as done.
pirama added inline comments.
================
Comment at: lib/LTO/LTO.cpp:353
} else if (EnableLTOInternalization &&
!GlobalValue::isLocalLinkage(S->linkage()))
S->setLinkage(GlobalValue::InternalLinkage);
----------------
pirama wrote:
> If I skip appending-linkage summaries here, so I can instead get rid of the AppendingLinkage check in FunctionImport.cpp:thinLTOResolveWeakForLinkerModule (line 914), I get some test failures.
>
> My reasoning was that this line sets linkage to Internal for summaries of appending-linkage symbols, which then gets propagated to the actual symbol in FunctionImport.cpp:thinLTOResolveWeakForLinkerModule. Not setting the linkage here will obviate the need for that check.
>
> I just realized this line is slightly different from my prior test - I must not have synced recently. I'll recreate this scenario and report on the tests that failed.
On top of the current patch, if I apply the diff below:
```
diff --git a/lib/LTO/LTO.cpp b/lib/LTO/LTO.cpp
index 2c3c7359dc0..347f1a56a25 100644
--- a/lib/LTO/LTO.cpp
+++ b/lib/LTO/LTO.cpp
@@ -350,7 +350,8 @@ static void thinLTOInternalizeAndPromoteGUID(
if (GlobalValue::isLocalLinkage(S->linkage()))
S->setLinkage(GlobalValue::ExternalLinkage);
} else if (EnableLTOInternalization &&
- !GlobalValue::isLocalLinkage(S->linkage()))
+ !GlobalValue::isLocalLinkage(S->linkage()) &&
+ !GlobalValue::isAppendingLinkage(S->linkage()))
S->setLinkage(GlobalValue::InternalLinkage);
}
}
diff --git a/lib/Transforms/IPO/FunctionImport.cpp b/lib/Transforms/IPO/FunctionImport.cpp
index 5816633db97..f7c380c8a09 100644
--- a/lib/Transforms/IPO/FunctionImport.cpp
+++ b/lib/Transforms/IPO/FunctionImport.cpp
@@ -912,7 +912,6 @@ void llvm::thinLTOResolveWeakForLinkerModule(
}
if (GlobalValue::isLocalLinkage(GV.getLinkage()) ||
- GlobalValue::isAppendingLinkage(GV.getLinkage()) ||
// In case it was dead and already converted to declaration.
GV.isDeclaration())
return;
```
the following tests fail:
```
LLVM :: ThinLTO/X86/module_asm2.ll
LLVM :: tools/gold/X86/comdat.ll
LLVM :: tools/gold/X86/visibility.ll
cfi-devirt-lld-thinlto-x86_64 :: cross-dso/stats.cpp
cfi-devirt-thinlto-i386 :: cross-dso/stats.cpp
cfi-devirt-thinlto-newpm-i386 :: cross-dso/stats.cpp
cfi-devirt-thinlto-newpm-x86_64 :: cross-dso/stats.cpp
cfi-devirt-thinlto-x86_64 :: cross-dso/stats.cpp
cfi-standalone-lld-thinlto-x86_64 :: cross-dso/stats.cpp
cfi-standalone-lld-thinlto-x86_64 :: stats.cpp
cfi-standalone-thinlto-i386 :: cross-dso/stats.cpp
cfi-standalone-thinlto-i386 :: stats.cpp
cfi-standalone-thinlto-newpm-i386 :: cross-dso/stats.cpp
cfi-standalone-thinlto-newpm-i386 :: stats.cpp
cfi-standalone-thinlto-newpm-x86_64 :: cross-dso/stats.cpp
cfi-standalone-thinlto-newpm-x86_64 :: stats.cpp
cfi-standalone-thinlto-x86_64 :: cross-dso/stats.cpp
cfi-standalone-thinlto-x86_64 :: stats.cpp
```
If the diff above is preferable over the current patch, I'll look further into why the tests break.
Repository:
rL LLVM
https://reviews.llvm.org/D54125
More information about the llvm-commits
mailing list