mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-10 22:46:25 +00:00
[ThinLTO] Ensure anonymous globals renamed even at -O0
Summary: This fixes an issue when files are compiled with -flto=thin at default -O0. We need to rename anonymous globals before attempting to write the module summary because all values need names for the summary. This was happening at -O1 and above, but not before the early exit when constructing the pipeline for -O0. Also add an internal -prepare-for-thinlto option to enable this to be tested via opt. Fixes PR30419. Reviewers: mehdi_amini Subscribers: probinson, llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D24701 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281840 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1982c8eed7
commit
b6d6773710
@ -112,6 +112,10 @@ static cl::opt<bool> EnableLoopLoadElim(
|
||||
"enable-loop-load-elim", cl::init(true), cl::Hidden,
|
||||
cl::desc("Enable the LoopLoadElimination Pass"));
|
||||
|
||||
static cl::opt<bool>
|
||||
EnablePrepareForThinLTO("prepare-for-thinlto", cl::init(false), cl::Hidden,
|
||||
cl::desc("Enable preparation for ThinLTO."));
|
||||
|
||||
static cl::opt<bool> RunPGOInstrGen(
|
||||
"profile-generate", cl::init(false), cl::Hidden,
|
||||
cl::desc("Enable PGO instrumentation."));
|
||||
@ -163,7 +167,7 @@ PassManagerBuilder::PassManagerBuilder() {
|
||||
EnablePGOInstrGen = RunPGOInstrGen;
|
||||
PGOInstrGen = PGOOutputFile;
|
||||
PGOInstrUse = RunPGOInstrUse;
|
||||
PrepareForThinLTO = false;
|
||||
PrepareForThinLTO = EnablePrepareForThinLTO;
|
||||
PerformThinLTO = false;
|
||||
}
|
||||
|
||||
@ -395,6 +399,10 @@ void PassManagerBuilder::populateModulePassManager(
|
||||
else if (!GlobalExtensions->empty() || !Extensions.empty())
|
||||
MPM.add(createBarrierNoopPass());
|
||||
|
||||
if (PrepareForThinLTO)
|
||||
// Rename anon globals to be able to export them in the summary.
|
||||
MPM.add(createNameAnonGlobalPass());
|
||||
|
||||
addExtensionsToPM(EP_EnabledOnOptLevel0, MPM);
|
||||
return;
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
; RUN: opt -S -name-anon-globals < %s | FileCheck %s
|
||||
; RUN: opt -prepare-for-thinlto -O0 -module-summary -o %t.bc < %s
|
||||
|
||||
|
||||
; foo contribute to the unique hash for the module
|
||||
|
Loading…
x
Reference in New Issue
Block a user