mirror of
https://github.com/RPCS3/llvm.git
synced 2025-03-03 08:07:51 +00:00
Move createReversePostOrderFunctionAttrsPass right after the inliner is done
This is where it was originally, until LoopVersioningLICM was inserted before in r259986, I don't believe it was on purpose. Differential Revision: http://reviews.llvm.org/D19809 From: Mehdi Amini <mehdi.amini@apple.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268252 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b75d37fd5a
commit
282acf461e
@ -399,6 +399,14 @@ void PassManagerBuilder::populateModulePassManager(
|
||||
|
||||
addFunctionSimplificationPasses(MPM);
|
||||
|
||||
// FIXME: This is a HACK! The inliner pass above implicitly creates a CGSCC
|
||||
// pass manager that we are specifically trying to avoid. To prevent this
|
||||
// we must insert a no-op module pass to reset the pass manager.
|
||||
MPM.add(createBarrierNoopPass());
|
||||
|
||||
if (!DisableUnitAtATime)
|
||||
MPM.add(createReversePostOrderFunctionAttrsPass());
|
||||
|
||||
// If we are planning to perform ThinLTO later, let's not bloat the code with
|
||||
// unrolling/vectorization/... now. We'll first run the inliner + CGSCC passes
|
||||
// during ThinLTO and perform the rest of the optimizations afterward.
|
||||
@ -410,11 +418,6 @@ void PassManagerBuilder::populateModulePassManager(
|
||||
return;
|
||||
}
|
||||
|
||||
// FIXME: This is a HACK! The inliner pass above implicitly creates a CGSCC
|
||||
// pass manager that we are specifically trying to avoid. To prevent this
|
||||
// we must insert a no-op module pass to reset the pass manager.
|
||||
MPM.add(createBarrierNoopPass());
|
||||
|
||||
// Scheduling LoopVersioningLICM when inlining is over, because after that
|
||||
// we may see more accurate aliasing. Reason to run this late is that too
|
||||
// early versioning may prevent further inlining due to increase of code
|
||||
@ -425,9 +428,6 @@ void PassManagerBuilder::populateModulePassManager(
|
||||
MPM.add(createLICMPass()); // Hoist loop invariants
|
||||
}
|
||||
|
||||
if (!DisableUnitAtATime)
|
||||
MPM.add(createReversePostOrderFunctionAttrsPass());
|
||||
|
||||
if (!DisableUnitAtATime && OptLevel > 1 && !PrepareForLTO)
|
||||
// Remove avail extern fns and globals definitions if we aren't
|
||||
// compiling an object file for later LTO. For LTO we want to preserve
|
||||
|
@ -55,6 +55,9 @@
|
||||
; Next we break out of the main Function passes inside the CGSCC pipeline with
|
||||
; a barrier pass.
|
||||
; CHECK-O2: A No-Op Barrier Pass
|
||||
; Inferring function attribute should be immediately after the CGSCC pipeline.
|
||||
; CHECK-O2-NEXT: CallGraph
|
||||
; CHECK-O2-NEXT: Deduce function attributes in RPO
|
||||
; CHECK-O2-NOT: Manager
|
||||
; Next is the late function pass pipeline.
|
||||
; CHECK-O2: FunctionPass Manager
|
||||
|
Loading…
x
Reference in New Issue
Block a user