[ConstraintElimination] Tweak placement in pipeline.

This patch adds the ConstraintElimination pass to the LTO pipeline and
also runs it after SCCP in the function simplification pipeline.

This increases the number of cases we can elimination. Pending further
tuning.
This commit is contained in:
Florian Hahn 2020-12-07 18:14:57 +00:00
parent f8d5b49c78
commit 32825e8636
No known key found for this signature in database
GPG Key ID: 61D7554B5CECDC0D
1 changed files with 6 additions and 0 deletions

View File

@ -470,6 +470,9 @@ void PassManagerBuilder::addFunctionSimplificationPasses(
MPM.add(createMemCpyOptPass()); // Remove memcpy / form memset
MPM.add(createSCCPPass()); // Constant prop with SCCP
if (EnableConstraintElimination)
MPM.add(createConstraintEliminationPass());
// Delete dead bit computations (instcombine runs after to fold away the dead
// computations, and then ADCE will run later to exploit any new DCE
// opportunities that creates).
@ -1056,6 +1059,9 @@ void PassManagerBuilder::addLTOOptimizationPasses(legacy::PassManagerBase &PM) {
if (EnableLoopInterchange)
PM.add(createLoopInterchangePass());
if (EnableConstraintElimination)
PM.add(createConstraintEliminationPass());
// Unroll small loops
PM.add(createSimpleLoopUnrollPass(OptLevel, DisableUnrollLoops,
ForgetAllSCEVInLoopUnroll));