mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
b3b970744d
Imported functions and variable get the visibility from the module supplying the definition. However, non-imported definitions do not get the visibility from (ELF) the most constraining visibility among all modules (Mach-O) the visibility of the prevailing definition. This patch * adds visibility bits to GlobalValueSummary::GVFlags * computes the result visibility and propagates it to all definitions Protected/hidden can imply dso_local which can enable some optimizations (this is stronger than GVFlags::DSOLocal because the implied dso_local can be leveraged for ELF -shared while default visibility dso_local has to be cleared for ELF -shared). Note: we don't have summaries for declarations, so for ELF if a declaration has the most constraining visibility, the result visibility may not be that one. Differential Revision: https://reviews.llvm.org/D92900 |
||
---|---|---|
.. | ||
AlwaysInliner.cpp | ||
Annotation2Metadata.cpp | ||
ArgumentPromotion.cpp | ||
Attributor.cpp | ||
AttributorAttributes.cpp | ||
BarrierNoopPass.cpp | ||
BlockExtractor.cpp | ||
CalledValuePropagation.cpp | ||
CMakeLists.txt | ||
ConstantMerge.cpp | ||
CrossDSOCFI.cpp | ||
DeadArgumentElimination.cpp | ||
ElimAvailExtern.cpp | ||
ExtractGV.cpp | ||
ForceFunctionAttrs.cpp | ||
FunctionAttrs.cpp | ||
FunctionImport.cpp | ||
GlobalDCE.cpp | ||
GlobalOpt.cpp | ||
GlobalSplit.cpp | ||
HotColdSplitting.cpp | ||
InferFunctionAttrs.cpp | ||
Inliner.cpp | ||
InlineSimple.cpp | ||
Internalize.cpp | ||
IPO.cpp | ||
IROutliner.cpp | ||
LoopExtractor.cpp | ||
LowerTypeTests.cpp | ||
MergeFunctions.cpp | ||
OpenMPOpt.cpp | ||
PartialInlining.cpp | ||
PassManagerBuilder.cpp | ||
PruneEH.cpp | ||
SampleContextTracker.cpp | ||
SampleProfile.cpp | ||
SampleProfileProbe.cpp | ||
SCCP.cpp | ||
StripDeadPrototypes.cpp | ||
StripSymbols.cpp | ||
SyntheticCountsPropagation.cpp | ||
ThinLTOBitcodeWriter.cpp | ||
WholeProgramDevirt.cpp |