Skip to content

Commit c34d157

Browse files
[Passes] Move AggressiveInstCombine after InstCombine
Swap AIC and IC neighbouring in pipeline. This looks more natural and even almost has no effect for now (three slightly touched tests of test-suite). Also this could be the first step towards merging AIC (or its part) to -O2 pipeline. After several changes in AIC (like D108091, D108201, D107766, D109515, D109236) there've been observed several regressions (like PR52078, PR52253, PR52289) that were fixed in different passes (see D111330, D112721) by extending their functionality, but these regressions were exposed since changed AIC prevents IC from making some of early optimizations. This is common problem and it should be fixed by just moving AIC after IC which looks more logically by itself: make aggressive instruction combining only after failed ordinary one. Fixes PR52289 Reviewed By: spatel, RKSimon Differential Revision: https://reviews.llvm.org/D113179
1 parent 2774bad commit c34d157

10 files changed

+10
-20
lines changed

clang/test/CodeGen/thinlto-distributed-newpm.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@
4646
; CHECK-O: Running pass: JumpThreadingPass on main
4747
; CHECK-O: Running pass: CorrelatedValuePropagationPass on main
4848
; CHECK-O: Running pass: SimplifyCFGPass on main
49-
; CHECK-O3: Running pass: AggressiveInstCombinePass on main
5049
; CHECK-O: Running pass: InstCombinePass on main
50+
; CHECK-O3: Running pass: AggressiveInstCombinePass on main
5151
; CHECK-O: Running pass: LibCallsShrinkWrapPass on main
5252
; CHECK-O: Running pass: TailCallElimPass on main
5353
; CHECK-O: Running pass: SimplifyCFGPass on main

llvm/lib/Passes/PassBuilderPipelines.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,9 +422,9 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
422422
FPM.addPass(CorrelatedValuePropagationPass());
423423

424424
FPM.addPass(SimplifyCFGPass());
425+
FPM.addPass(InstCombinePass());
425426
if (Level == OptimizationLevel::O3)
426427
FPM.addPass(AggressiveInstCombinePass());
427-
FPM.addPass(InstCombinePass());
428428

429429
if (!Level.isOptimizingForSize())
430430
FPM.addPass(LibCallsShrinkWrapPass());
@@ -1536,9 +1536,9 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
15361536
// function pointers. When this happens, we often have to resolve varargs
15371537
// calls, etc, so let instcombine do this.
15381538
FunctionPassManager PeepholeFPM;
1539+
PeepholeFPM.addPass(InstCombinePass());
15391540
if (Level == OptimizationLevel::O3)
15401541
PeepholeFPM.addPass(AggressiveInstCombinePass());
1541-
PeepholeFPM.addPass(InstCombinePass());
15421542
invokePeepholeEPCallbacks(PeepholeFPM, Level);
15431543

15441544
MPM.addPass(createModuleToFunctionPassAdaptor(std::move(PeepholeFPM),

llvm/test/Other/new-pm-defaults.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@
138138
; CHECK-O23SZ-NEXT: Running pass: CorrelatedValuePropagationPass
139139
; CHECK-O23SZ-NEXT: Invalidating analysis: LazyValueAnalysis
140140
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
141-
; CHECK-O3-NEXT: AggressiveInstCombinePass
142141
; CHECK-O-NEXT: Running pass: InstCombinePass
142+
; CHECK-O3-NEXT: AggressiveInstCombinePass
143143
; CHECK-O1-NEXT: Running pass: LibCallsShrinkWrapPass
144144
; CHECK-O2-NEXT: Running pass: LibCallsShrinkWrapPass
145145
; CHECK-O3-NEXT: Running pass: LibCallsShrinkWrapPass

llvm/test/Other/new-pm-lto-defaults.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@
6565
; CHECK-O23SZ-NEXT: Running pass: PromotePass
6666
; CHECK-O23SZ-NEXT: Running pass: ConstantMergePass
6767
; CHECK-O23SZ-NEXT: Running pass: DeadArgumentEliminationPass
68-
; CHECK-O3-NEXT: Running pass: AggressiveInstCombinePass
6968
; CHECK-O23SZ-NEXT: Running pass: InstCombinePass
69+
; CHECK-O3-NEXT: Running pass: AggressiveInstCombinePass
7070
; CHECK-EP-Peephole-NEXT: Running pass: NoOpFunctionPass
7171
; CHECK-O23SZ-NEXT: Running pass: ModuleInlinerWrapperPass
7272
; CHECK-O23SZ-NEXT: Running analysis: InlineAdvisorAnalysis

llvm/test/Other/new-pm-thinlto-defaults.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@
117117
; CHECK-O23SZ-NEXT: Running pass: CorrelatedValuePropagationPass
118118
; CHECK-O23SZ-NEXT: Invalidating analysis: LazyValueAnalysis
119119
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
120-
; CHECK-O3-NEXT: Running pass: AggressiveInstCombinePass
121120
; CHECK-O-NEXT: Running pass: InstCombinePass
121+
; CHECK-O3-NEXT: Running pass: AggressiveInstCombinePass
122122
; CHECK-O1-NEXT: Running pass: LibCallsShrinkWrapPass
123123
; CHECK-O2-NEXT: Running pass: LibCallsShrinkWrapPass
124124
; CHECK-O3-NEXT: Running pass: LibCallsShrinkWrapPass

llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@
9191
; CHECK-O23SZ-NEXT: Running pass: CorrelatedValuePropagationPass
9292
; CHECK-O23SZ-NEXT: Invalidating analysis: LazyValueAnalysis
9393
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
94-
; CHECK-O3-NEXT: Running pass: AggressiveInstCombinePass
9594
; CHECK-O-NEXT: Running pass: InstCombinePass
95+
; CHECK-O3-NEXT: Running pass: AggressiveInstCombinePass
9696
; CHECK-O1-NEXT: Running pass: LibCallsShrinkWrapPass
9797
; CHECK-O2-NEXT: Running pass: LibCallsShrinkWrapPass
9898
; CHECK-O3-NEXT: Running pass: LibCallsShrinkWrapPass

llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@
100100
; CHECK-O23SZ-NEXT: Running pass: CorrelatedValuePropagationPass
101101
; CHECK-O23SZ-NEXT: Invalidating analysis: LazyValueAnalysis
102102
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
103-
; CHECK-O3-NEXT: Running pass: AggressiveInstCombinePass
104103
; CHECK-O-NEXT: Running pass: InstCombinePass
104+
; CHECK-O3-NEXT: Running pass: AggressiveInstCombinePass
105105
; CHECK-O1-NEXT: Running pass: LibCallsShrinkWrapPass
106106
; CHECK-O2-NEXT: Running pass: LibCallsShrinkWrapPass
107107
; CHECK-O3-NEXT: Running pass: LibCallsShrinkWrapPass

llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,14 @@
121121
; CHECK-O23SZ-NEXT: Running pass: CorrelatedValuePropagationPass
122122
; CHECK-O23SZ-NEXT: Invalidating analysis: LazyValueAnalysis
123123
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
124-
; CHECK-O3-NEXT: Running pass: AggressiveInstCombinePass
125124
; CHECK-O-NEXT: Running pass: InstCombinePass
126125
; CHECK-O-NEXT: Running analysis: BlockFrequencyAnalysis on foo
127126
; These next two can appear in any order since they are accessed as parameters
128127
; on the same call to BlockFrequencyInfo::calculate.
129128
; CHECK-O-DAG: Running analysis: LoopAnalysis on foo
130129
; CHECK-O-DAG: Running analysis: BranchProbabilityAnalysis on foo
131130
; CHECK-O-DAG: Running analysis: PostDominatorTreeAnalysis on foo
131+
; CHECK-O3-NEXT: Running pass: AggressiveInstCombinePass
132132
; CHECK-O1-NEXT: Running pass: LibCallsShrinkWrapPass
133133
; CHECK-O2-NEXT: Running pass: LibCallsShrinkWrapPass
134134
; CHECK-O3-NEXT: Running pass: LibCallsShrinkWrapPass

llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@
9595
; CHECK-O23SZ-NEXT: Running pass: CorrelatedValuePropagationPass
9696
; CHECK-O23SZ-NEXT: Invalidating analysis: LazyValueAnalysis
9797
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
98-
; CHECK-O3-NEXT: Running pass: AggressiveInstCombinePass
9998
; CHECK-O-NEXT: Running pass: InstCombinePass
99+
; CHECK-O3-NEXT: Running pass: AggressiveInstCombinePass
100100
; CHECK-O1-NEXT: Running pass: LibCallsShrinkWrapPass
101101
; CHECK-O2-NEXT: Running pass: LibCallsShrinkWrapPass
102102
; CHECK-O3-NEXT: Running pass: LibCallsShrinkWrapPass

llvm/test/Transforms/PhaseOrdering/X86/pr52289.ll

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,6 @@ target datalayout = "n8:16:32:64"
66
define i32 @main(i32 %a) {
77
; CHECK-LABEL: @main(
88
; CHECK-NEXT: if.end:
9-
; CHECK-NEXT: [[TMP0:%.*]] = trunc i32 [[A:%.*]] to i8
10-
; CHECK-NEXT: [[TMP1:%.*]] = add i8 [[TMP0]], 1
11-
; CHECK-NEXT: [[CONV:%.*]] = and i8 [[TMP1]], 8
12-
; CHECK-NEXT: [[CMP_I_NOT:%.*]] = icmp eq i8 [[CONV]], 0
13-
; CHECK-NEXT: [[SHL_I:%.*]] = select i1 [[CMP_I_NOT]], i8 7, i8 0
14-
; CHECK-NEXT: [[COND_I:%.*]] = shl i8 [[CONV]], [[SHL_I]]
15-
; CHECK-NEXT: [[CONV1:%.*]] = sext i8 [[COND_I]] to i32
16-
; CHECK-NEXT: [[SEXT:%.*]] = mul i32 [[CONV1]], 1355350016
17-
; CHECK-NEXT: [[TOBOOL:%.*]] = icmp ne i32 [[SEXT]], 65536
18-
; CHECK-NEXT: tail call void @llvm.assume(i1 [[TOBOOL]])
199
; CHECK-NEXT: ret i32 0
2010
;
2111
%inc = add nsw i32 %a, 1

0 commit comments

Comments
 (0)