diff options
Diffstat (limited to 'llvm/lib/Analysis/ModuleSummaryAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/ModuleSummaryAnalysis.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp b/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp index cb735562fa6..886dac8314e 100644 --- a/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp +++ b/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp @@ -403,6 +403,12 @@ ModuleSummaryIndex llvm::buildModuleSummaryIndex( CantBePromoted); } + // Set live flag for all personality functions. That allows to + // preserve them during DCE. + for (const llvm::Function &F : M) + if (!F.isDeclaration() && F.hasPersonalityFn()) + setLiveRoot(Index, F.getPersonalityFn()->getName()); + // Compute summaries for all variables defined in module, and save in the // index. for (const GlobalVariable &G : M.globals()) { |