mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
[NewPM][Unswitch] Add option to disable -O3 non-trivial unswitching
Some benchmarks regress with non-trivial unswitching, so add an option to opt-out of performing non-trivial unswitching while investigating. Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D95796
This commit is contained in:
parent
41a3080ffd
commit
47246e5e03
@ -274,6 +274,10 @@ static cl::opt<bool> PerformMandatoryInliningsFirst(
|
||||
cl::desc("Perform mandatory inlinings module-wide, before performing "
|
||||
"inlining."));
|
||||
|
||||
static cl::opt<bool> EnableO3NonTrivialUnswitching(
|
||||
"enable-npm-O3-nontrivial-unswitch", cl::init(true), cl::Hidden,
|
||||
cl::ZeroOrMore, cl::desc("Enable non-trivial loop unswitching for -O3"));
|
||||
|
||||
PipelineTuningOptions::PipelineTuningOptions() {
|
||||
LoopInterleaving = true;
|
||||
LoopVectorization = true;
|
||||
@ -726,7 +730,8 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
|
||||
// TODO: Investigate promotion cap for O1.
|
||||
LPM1.addPass(LICMPass(PTO.LicmMssaOptCap, PTO.LicmMssaNoAccForPromotionCap));
|
||||
LPM1.addPass(
|
||||
SimpleLoopUnswitchPass(/* NonTrivial */ Level == OptimizationLevel::O3));
|
||||
SimpleLoopUnswitchPass(/* NonTrivial */ Level == OptimizationLevel::O3 &&
|
||||
EnableO3NonTrivialUnswitching));
|
||||
LPM2.addPass(LoopIdiomRecognizePass());
|
||||
LPM2.addPass(IndVarSimplifyPass());
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
; RUN: opt < %s -S -passes="default<O1>" | FileCheck %s -check-prefixes=TRIVIAL,CHECK
|
||||
; RUN: opt < %s -S -passes="default<O2>" | FileCheck %s -check-prefixes=TRIVIAL,CHECK
|
||||
; RUN: opt < %s -S -passes="default<O3>" | FileCheck %s -check-prefixes=NONTRIVIAL,CHECK
|
||||
; RUN: opt < %s -S -passes="default<O3>" -enable-npm-O3-nontrivial-unswitch=0 | FileCheck %s -check-prefixes=TRIVIAL,CHECK
|
||||
; RUN: opt < %s -S -passes="default<Os>" | FileCheck %s -check-prefixes=TRIVIAL,CHECK
|
||||
; RUN: opt < %s -S -passes="default<Oz>" | FileCheck %s -check-prefixes=TRIVIAL,CHECK
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user