mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-25 21:45:21 +00:00
[PM] Run IndirectCallPromotion only when PGO is enabled.
Differential Revision: https://reviews.llvm.org/D32465 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301327 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
65c40b4fba
commit
41042eb456
@ -282,6 +282,12 @@ void PassManagerBuilder::addPGOInstrPasses(legacy::PassManagerBase &MPM) {
|
||||
}
|
||||
if (!PGOInstrUse.empty())
|
||||
MPM.add(createPGOInstrumentationUseLegacyPass(PGOInstrUse));
|
||||
// Indirect call promotion that promotes intra-module targets only.
|
||||
// For ThinLTO this is done earlier due to interactions with globalopt
|
||||
// for imported functions. We don't run this at -O0.
|
||||
if (OptLevel > 0)
|
||||
MPM.add(
|
||||
createPGOIndirectCallPromotionLegacyPass(false, !PGOSampleUse.empty()));
|
||||
}
|
||||
void PassManagerBuilder::addFunctionSimplificationPasses(
|
||||
legacy::PassManagerBase &MPM) {
|
||||
@ -471,16 +477,10 @@ void PassManagerBuilder::populateModulePassManager(
|
||||
// For SamplePGO in ThinLTO compile phase, we do not want to do indirect
|
||||
// call promotion as it will change the CFG too much to make the 2nd
|
||||
// profile annotation in backend more difficult.
|
||||
if (!PerformThinLTO && !PrepareForThinLTOUsingPGOSampleProfile) {
|
||||
/// PGO instrumentation is added during the compile phase for ThinLTO, do
|
||||
/// not run it a second time
|
||||
// PGO instrumentation is added during the compile phase for ThinLTO, do
|
||||
// not run it a second time
|
||||
if (!PerformThinLTO && !PrepareForThinLTOUsingPGOSampleProfile)
|
||||
addPGOInstrPasses(MPM);
|
||||
// Indirect call promotion that promotes intra-module targets only.
|
||||
// For ThinLTO this is done earlier due to interactions with globalopt
|
||||
// for imported functions.
|
||||
MPM.add(
|
||||
createPGOIndirectCallPromotionLegacyPass(false, !PGOSampleUse.empty()));
|
||||
}
|
||||
|
||||
if (EnableNonLTOGlobalsModRef)
|
||||
// We add a module alias analysis pass here. In part due to bugs in the
|
||||
|
Loading…
Reference in New Issue
Block a user