mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
[PassManager] restore early-cse to vector cleanup
As noted in D80236 - the early-cse pass was included here before: D75145 / rG71a316883d50 But it got moved outside of the "extra" option there, then it got dropped while adjusting -vector-combine: rG6438ea45e053 rG57bb4787d72f So this is restoring the behavior and adding a test to prevent accidental changes again. I don't see an equivalent option for the new pass manager.
This commit is contained in:
parent
90047b072b
commit
0a4fe71f16
@ -759,6 +759,7 @@ void PassManagerBuilder::populateModulePassManager(
|
||||
// common computations, hoist loop-invariant aspects out of any outer loop,
|
||||
// and unswitch the runtime checks if possible. Once hoisted, we may have
|
||||
// dead (or speculatable) control flows or more combining opportunities.
|
||||
MPM.add(createEarlyCSEPass());
|
||||
MPM.add(createCorrelatedValuePropagationPass());
|
||||
MPM.add(createInstructionCombiningPass());
|
||||
MPM.add(createLICMPass(LicmMssaOptCap, LicmMssaNoAccForPromotionCap));
|
||||
|
@ -1,7 +1,8 @@
|
||||
; RUN: opt -O1 -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O1
|
||||
; RUN: opt -O2 -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O2
|
||||
; RUN: opt -O1 -vectorize-loops=0 -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O1_FORCE_OFF
|
||||
; RUN: opt -O2 -vectorize-loops=0 -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O2_FORCE_OFF
|
||||
; RUN: opt -O1 -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O1
|
||||
; RUN: opt -O2 -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O2
|
||||
; RUN: opt -O2 -extra-vectorizer-passes -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O2_EXTRA
|
||||
; RUN: opt -O1 -vectorize-loops=0 -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O1_FORCE_OFF
|
||||
; RUN: opt -O2 -vectorize-loops=0 -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=OLDPM_O2_FORCE_OFF
|
||||
; RUN: opt -disable-verify -debug-pass-manager -passes='default<O1>' -S %s 2>&1 | FileCheck %s --check-prefixes=NEWPM_O1
|
||||
; RUN: opt -disable-verify -debug-pass-manager -passes='default<O2>' -S %s 2>&1 | FileCheck %s --check-prefixes=NEWPM_O2
|
||||
|
||||
@ -22,6 +23,22 @@
|
||||
; OLDPM_O2: SLP Vectorizer
|
||||
; OLDPM_O2: Optimize scalar/vector ops
|
||||
|
||||
; Optionally run cleanup passes.
|
||||
|
||||
; OLDPM_O2_EXTRA-LABEL: Pass Arguments:
|
||||
; OLDPM_O2_EXTRA: Loop Vectorization
|
||||
; OLDPM_O2_EXTRA: Early CSE
|
||||
; OLDPM_O2_EXTRA: Value Propagation
|
||||
; OLDPM_O2_EXTRA: Combine redundant instructions
|
||||
; OLDPM_O2_EXTRA: Loop Invariant Code Motion
|
||||
; OLDPM_O2_EXTRA: Unswitch loops
|
||||
; OLDPM_O2_EXTRA: Simplify the CFG
|
||||
; OLDPM_O2_EXTRA: Combine redundant instructions
|
||||
; OLDPM_O2_EXTRA: SLP Vectorizer
|
||||
; OLDPM_O2_EXTRA: Early CSE
|
||||
; OLDPM_O2_EXTRA: Optimize scalar/vector ops
|
||||
|
||||
|
||||
; The loop vectorizer still runs at both -O1/-O2 even with the
|
||||
; debug flag, but it only works on loops explicitly annotated
|
||||
; with pragmas.
|
||||
|
Loading…
Reference in New Issue
Block a user