diff options
author | evgeny <eleviant@accesssoftek.com> | 2020-01-15 19:29:01 +0300 |
---|---|---|
committer | evgeny <eleviant@accesssoftek.com> | 2020-01-15 19:29:01 +0300 |
commit | 10cadee5ce86e80d7486855199d329951f38af01 (patch) | |
tree | 9af9164ab50e8b7cee108cbe50f0473e9b1fd09c /llvm/lib/Analysis/ModuleSummaryAnalysis.cpp | |
parent | 3f3017e162ec4208399dcf633c99bdac788c06fd (diff) | |
download | llvm-10cadee5ce86e80d7486855199d329951f38af01.zip llvm-10cadee5ce86e80d7486855199d329951f38af01.tar.gz llvm-10cadee5ce86e80d7486855199d329951f38af01.tar.bz2 |
[ThinLTO] Always import constants
This patch imports constant variables even when they can't be internalized
(which results in promotion). This offers some extra constant folding
opportunities.
Differential revision: https://reviews.llvm.org/D70404
Diffstat (limited to 'llvm/lib/Analysis/ModuleSummaryAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/ModuleSummaryAnalysis.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp b/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp index 8a1206f..c7a0984 100644 --- a/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp +++ b/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp @@ -599,7 +599,9 @@ static void computeVariableSummary(ModuleSummaryIndex &Index, bool CanBeInternalized = !V.hasComdat() && !V.hasAppendingLinkage() && !V.isInterposable() && !V.hasAvailableExternallyLinkage() && !V.hasDLLExportStorageClass(); - GlobalVarSummary::GVarFlags VarFlags(CanBeInternalized, CanBeInternalized); + bool Constant = V.isConstant(); + GlobalVarSummary::GVarFlags VarFlags( + CanBeInternalized, Constant ? false : CanBeInternalized, Constant); auto GVarSummary = std::make_unique<GlobalVarSummary>(Flags, VarFlags, RefEdges.takeVector()); if (NonRenamableLocal) @@ -718,7 +720,9 @@ ModuleSummaryIndex llvm::buildModuleSummaryIndex( } else { std::unique_ptr<GlobalVarSummary> Summary = std::make_unique<GlobalVarSummary>( - GVFlags, GlobalVarSummary::GVarFlags(false, false), + GVFlags, + GlobalVarSummary::GVarFlags( + false, false, cast<GlobalVariable>(GV)->isConstant()), ArrayRef<ValueInfo>{}); Index.addGlobalValueSummary(*GV, std::move(Summary)); } |