[clang] [llvm] [WPD]: Apply speculative WPD in non-lto mode. (PR #145031)
Teresa Johnson via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 4 10:56:25 PDT 2025
================
@@ -794,12 +815,29 @@ PreservedAnalyses WholeProgramDevirtPass::run(Module &M,
return FAM.getResult<DominatorTreeAnalysis>(F);
};
if (UseCommandLine) {
- if (!DevirtModule::runForTesting(M, AARGetter, OREGetter, LookupDomTree))
+ if (TestNoLTOMode)
+ // we are outside LTO mode. enable speculative devirtualization:
+ DevirtCheckMode = WPDCheckMode::Fallback;
+ if (!DevirtModule::runForTesting(M, AARGetter, OREGetter, LookupDomTree,
+ !TestNoLTOMode))
return PreservedAnalyses::all();
return PreservedAnalyses::none();
}
+ std::optional<ModuleSummaryIndex> Index;
+ // Force Fallback mode as it's safe in case it's non-LTO mode where
+ // we don't have hidden visibility.
+ if (!InLTOMode) {
+ DevirtCheckMode = WPDCheckMode::Fallback;
+ // In non-LTO mode, we don't have an ExportSummary, so we
+ // build the ExportSummary from the module.
+ assert(!ExportSummary &&
----------------
teresajohnson wrote:
Maybe just guard the below code by whether we have an ExportSummary?
https://github.com/llvm/llvm-project/pull/145031
More information about the llvm-commits
mailing list