[llvm] dcfdb96 - [ThinLTOBitcodeWriter] Properly report when module is changed
Arthur Eubanks via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 25 15:24:18 PDT 2023
Author: Arthur Eubanks
Date: 2023-04-25T15:24:01-07:00
New Revision: dcfdb963d4f036f02bbe4d8cf3fa55294c49fca7
URL: https://github.com/llvm/llvm-project/commit/dcfdb963d4f036f02bbe4d8cf3fa55294c49fca7
DIFF: https://github.com/llvm/llvm-project/commit/dcfdb963d4f036f02bbe4d8cf3fa55294c49fca7.diff
LOG: [ThinLTOBitcodeWriter] Properly report when module is changed
Happens with split LTO units.
Detected with upcoming changes.
Added:
Modified:
llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp b/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
index 1602a63e2f67..4b36c7bce688 100644
--- a/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
+++ b/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
@@ -508,15 +508,17 @@ bool hasTypeMetadata(Module &M) {
return false;
}
-void writeThinLTOBitcode(raw_ostream &OS, raw_ostream *ThinLinkOS,
+bool writeThinLTOBitcode(raw_ostream &OS, raw_ostream *ThinLinkOS,
function_ref<AAResults &(Function &)> AARGetter,
Module &M, const ModuleSummaryIndex *Index) {
std::unique_ptr<ModuleSummaryIndex> NewIndex = nullptr;
// See if this module has any type metadata. If so, we try to split it
// or at least promote type ids to enable WPD.
if (hasTypeMetadata(M)) {
- if (enableSplitLTOUnit(M))
- return splitAndWriteThinLTOBitcode(OS, ThinLinkOS, AARGetter, M);
+ if (enableSplitLTOUnit(M)) {
+ splitAndWriteThinLTOBitcode(OS, ThinLinkOS, AARGetter, M);
+ return true;
+ }
// Promote type ids as needed for index-based WPD.
std::string ModuleId = getUniqueModuleId(&M);
if (!ModuleId.empty()) {
@@ -549,6 +551,7 @@ void writeThinLTOBitcode(raw_ostream &OS, raw_ostream *ThinLinkOS,
// given OS.
if (ThinLinkOS && Index)
writeThinLinkBitcodeToFile(M, *ThinLinkOS, *Index, ModHash);
+ return false;
}
} // anonymous namespace
@@ -557,10 +560,11 @@ PreservedAnalyses
llvm::ThinLTOBitcodeWriterPass::run(Module &M, ModuleAnalysisManager &AM) {
FunctionAnalysisManager &FAM =
AM.getResult<FunctionAnalysisManagerModuleProxy>(M).getManager();
- writeThinLTOBitcode(OS, ThinLinkOS,
- [&FAM](Function &F) -> AAResults & {
- return FAM.getResult<AAManager>(F);
- },
- M, &AM.getResult<ModuleSummaryIndexAnalysis>(M));
- return PreservedAnalyses::all();
+ bool Changed = writeThinLTOBitcode(
+ OS, ThinLinkOS,
+ [&FAM](Function &F) -> AAResults & {
+ return FAM.getResult<AAManager>(F);
+ },
+ M, &AM.getResult<ModuleSummaryIndexAnalysis>(M));
+ return Changed ? PreservedAnalyses::none() : PreservedAnalyses::all();
}
More information about the llvm-commits
mailing list