mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[NewPM] collapsing nested pass mangers of the same type
This is one of the reason for extra invalidations in D84959. In practice, I don't think we have use cases needing this. This simplifies the pipeline a bit and prune corner cases when considering invalidations. Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D85676
This commit is contained in:
parent
22d49b0493
commit
1948b58c36
@ -548,7 +548,9 @@ public:
|
||||
return PA;
|
||||
}
|
||||
|
||||
template <typename PassT> void addPass(PassT Pass) {
|
||||
template <typename PassT>
|
||||
std::enable_if_t<!std::is_same<PassT, PassManager>::value>
|
||||
addPass(PassT Pass) {
|
||||
using PassModelT =
|
||||
detail::PassModel<IRUnitT, PassT, PreservedAnalyses, AnalysisManagerT,
|
||||
ExtraArgTs...>;
|
||||
@ -556,6 +558,18 @@ public:
|
||||
Passes.emplace_back(new PassModelT(std::move(Pass)));
|
||||
}
|
||||
|
||||
/// When adding a pass manager pass that has the same type as this pass
|
||||
/// manager, simply move the passes over. This is because we don't have use
|
||||
/// cases rely on executing nested pass managers. Doing this could reduce
|
||||
/// implementation complexity and avoid potential invalidation issues that may
|
||||
/// happen with nested pass managers of the same type.
|
||||
template <typename PassT>
|
||||
std::enable_if_t<std::is_same<PassT, PassManager>::value>
|
||||
addPass(PassT &&Pass) {
|
||||
for (auto &P : Pass.Passes)
|
||||
Passes.emplace_back(std::move(P));
|
||||
}
|
||||
|
||||
static bool isRequired() { return true; }
|
||||
|
||||
protected:
|
||||
|
@ -207,7 +207,6 @@
|
||||
; CHECK-INVALIDATE-ALL: Starting llvm::Module pass manager run
|
||||
; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
|
||||
; CHECK-INVALIDATE-ALL: Running analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Starting llvm::Module pass manager run
|
||||
; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
|
||||
; CHECK-INVALIDATE-ALL-NOT: Running analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Starting llvm::Function pass manager run
|
||||
@ -221,7 +220,6 @@
|
||||
; CHECK-INVALIDATE-ALL: Invalidating analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
|
||||
; CHECK-INVALIDATE-ALL: Running analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Finished llvm::Module pass manager run
|
||||
; CHECK-INVALIDATE-ALL-NOT: Invalidating analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
|
||||
; CHECK-INVALIDATE-ALL-NOT: Running analysis: NoOpModuleAnalysis
|
||||
@ -233,7 +231,6 @@
|
||||
; CHECK-INVALIDATE-ALL-CG: Starting llvm::Module pass manager run
|
||||
; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
|
||||
; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL-CG: Starting llvm::Module pass manager run
|
||||
; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
|
||||
; CHECK-INVALIDATE-ALL-CG-NOT: Running analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL-CG: Starting CGSCC pass manager run
|
||||
@ -256,7 +253,6 @@
|
||||
; CHECK-INVALIDATE-ALL-CG: Invalidating analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
|
||||
; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL-CG: Finished llvm::Module pass manager run
|
||||
; CHECK-INVALIDATE-ALL-CG-NOT: Invalidating analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
|
||||
; CHECK-INVALIDATE-ALL-CG-NOT: Running analysis: NoOpModuleAnalysis
|
||||
|
@ -89,10 +89,8 @@
|
||||
; RUN: --check-prefix=CHECK-EP-OPTIMIZER-LAST --check-prefix=CHECK-O23SZ
|
||||
|
||||
; CHECK-O: Starting llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Starting llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: ForceFunctionAttrsPass
|
||||
; CHECK-EP-PIPELINE-START-NEXT: Running pass: NoOpModulePass
|
||||
; CHECK-O-NEXT: Starting llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: InferFunctionAttrsPass
|
||||
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
|
||||
; CHECK-O-NEXT: Running analysis: TargetLibraryAnalysis
|
||||
@ -220,8 +218,6 @@
|
||||
; CHECK-EP-CGSCC-LATE-NEXT: Running pass: NoOpCGSCCPass
|
||||
; CHECK-O-NEXT: Finished CGSCC pass manager run.
|
||||
; CHECK-O-NEXT: Finished llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Finished llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Starting llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: GlobalOptPass
|
||||
; CHECK-O-NEXT: Running pass: GlobalDCEPass
|
||||
; CHECK-O2-LTO-NOT: Running pass: EliminateAvailableExternallyPass
|
||||
@ -271,8 +267,6 @@
|
||||
; CHECK-O-NEXT: Running pass: CGProfilePass
|
||||
; CHECK-O-NEXT: Running pass: GlobalDCEPass
|
||||
; CHECK-O-NEXT: Running pass: ConstantMergePass
|
||||
; CHECK-O-NEXT: Finished llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Finished llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: PrintModulePass
|
||||
;
|
||||
; Make sure we get the IR back out without changes when we print the module.
|
||||
|
@ -24,7 +24,6 @@
|
||||
; RUN: --check-prefix=CHECK-O3 --check-prefix=CHECK-EP-Peephole
|
||||
|
||||
; CHECK-O: Starting llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Starting llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: GlobalDCEPass
|
||||
; CHECK-O-NEXT: Running pass: ForceFunctionAttrsPass
|
||||
; CHECK-O-NEXT: Running pass: InferFunctionAttrsPass
|
||||
@ -102,7 +101,6 @@
|
||||
; CHECK-O2-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O2-NEXT: Running pass: EliminateAvailableExternallyPass
|
||||
; CHECK-O2-NEXT: Running pass: GlobalDCEPass
|
||||
; CHECK-O-NEXT: Finished llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: PrintModulePass
|
||||
|
||||
; Make sure we get the IR back out without changes when we print the module.
|
||||
|
@ -48,12 +48,10 @@
|
||||
; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O2,CHECK-O23SZ,CHECK-POSTLINK-O,%llvmcheckext,CHECK-POSTLINK-O2
|
||||
;
|
||||
; CHECK-O: Starting llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Starting llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: ForceFunctionAttrsPass
|
||||
; CHECK-EP-PIPELINE-START-NEXT: Running pass: NoOpModulePass
|
||||
; CHECK-DIS-NEXT: Running analysis: InnerAnalysisManagerProxy
|
||||
; CHECK-DIS-NEXT: Running pass: AddDiscriminatorsPass
|
||||
; CHECK-O-NEXT: Starting llvm::Module pass manager run.
|
||||
; CHECK-POSTLINK-O-NEXT: Running pass: PGOIndirectCallPromotion
|
||||
; CHECK-POSTLINK-O-NEXT: Running analysis: ProfileSummaryAnalysis
|
||||
; CHECK-POSTLINK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
|
||||
@ -190,9 +188,7 @@
|
||||
; CHECK-O-NEXT: Finished llvm::Function pass manager run.
|
||||
; CHECK-O-NEXT: Finished CGSCC pass manager run.
|
||||
; CHECK-O-NEXT: Finished llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Finished llvm::Module pass manager run.
|
||||
; CHECK-PRELINK-O-NEXT: Running pass: GlobalOptPass
|
||||
; CHECK-POSTLINK-O-NEXT: Starting llvm::Module pass manager run.
|
||||
; CHECK-POSTLINK-O-NEXT: Running pass: GlobalOptPass
|
||||
; CHECK-POSTLINK-O-NEXT: Running pass: GlobalDCEPass
|
||||
; CHECK-POSTLINK-O-NEXT: Running pass: EliminateAvailableExternallyPass
|
||||
@ -240,8 +236,6 @@
|
||||
; CHECK-POSTLINK-O-NEXT: Running pass: CGProfilePass
|
||||
; CHECK-POSTLINK-O-NEXT: Running pass: GlobalDCEPass
|
||||
; CHECK-POSTLINK-O-NEXT: Running pass: ConstantMergePass
|
||||
; CHECK-POSTLINK-O-NEXT: Finished llvm::Module pass manager run.
|
||||
; CHECK-O-NEXT: Finished llvm::Module pass manager run.
|
||||
; CHECK-PRELINK-O-NEXT: Running pass: NameAnonGlobalPass
|
||||
; CHECK-O-NEXT: Running pass: PrintModulePass
|
||||
|
||||
|
@ -21,10 +21,8 @@
|
||||
; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O2,CHECK-O23SZ,%llvmcheckext --dump-input=fail
|
||||
;
|
||||
; CHECK-O: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: ForceFunctionAttrsPass
|
||||
; CHECK-EP-PIPELINE-START-NEXT: Running pass: NoOpModulePass
|
||||
; CHECK-O-NEXT: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: PGOIndirectCallPromotion
|
||||
; CHECK-O-NEXT: Running analysis: ProfileSummaryAnalysis
|
||||
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
|
||||
@ -162,8 +160,6 @@
|
||||
; CHECK-O-NEXT: Finished {{.*}}Function pass manager run.
|
||||
; CHECK-O-NEXT: Finished CGSCC pass manager run.
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: GlobalOptPass
|
||||
; CHECK-O-NEXT: Running pass: GlobalDCEPass
|
||||
; CHECK-O-NEXT: Running pass: EliminateAvailableExternallyPass
|
||||
@ -209,8 +205,6 @@
|
||||
; CHECK-O-NEXT: Running pass: CGProfilePass
|
||||
; CHECK-O-NEXT: Running pass: GlobalDCEPass
|
||||
; CHECK-O-NEXT: Running pass: ConstantMergePass
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: PrintModulePass
|
||||
|
||||
; Make sure we get the IR back out without changes when we print the module.
|
||||
|
@ -26,10 +26,8 @@
|
||||
; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O2,CHECK-O23SZ,%llvmcheckext --dump-input=fail
|
||||
;
|
||||
; CHECK-O: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: ForceFunctionAttrsPass
|
||||
; CHECK-EP-PIPELINE-START-NEXT: Running pass: NoOpModulePass
|
||||
; CHECK-O-NEXT: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: InferFunctionAttrsPass
|
||||
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
|
||||
; CHECK-O-NEXT: Running analysis: TargetLibraryAnalysis
|
||||
@ -173,8 +171,6 @@
|
||||
; CHECK-O-NEXT: Finished {{.*}}Function pass manager run.
|
||||
; CHECK-O-NEXT: Finished CGSCC pass manager run.
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: GlobalOptPass
|
||||
; CHECK-O-NEXT: Running pass: GlobalDCEPass
|
||||
; CHECK-O-NEXT: Running pass: EliminateAvailableExternallyPass
|
||||
@ -220,8 +216,6 @@
|
||||
; CHECK-O-NEXT: Running pass: CGProfilePass
|
||||
; CHECK-O-NEXT: Running pass: GlobalDCEPass
|
||||
; CHECK-O-NEXT: Running pass: ConstantMergePass
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: PrintModulePass
|
||||
|
||||
; Make sure we get the IR back out without changes when we print the module.
|
||||
|
@ -28,10 +28,8 @@
|
||||
; RUN: | FileCheck %s --check-prefixes=CHECK-DIS,CHECK-O,CHECK-O2,CHECK-O23SZ,CHECK-O123 --dump-input=fail
|
||||
;
|
||||
; CHECK-O: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: ForceFunctionAttrsPass
|
||||
; CHECK-EP-PIPELINE-START-NEXT: Running pass: NoOpModulePass
|
||||
; CHECK-O-NEXT: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: InferFunctionAttrsPass
|
||||
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
|
||||
; CHECK-O-NEXT: Running analysis: TargetLibraryAnalysis
|
||||
@ -215,27 +213,9 @@
|
||||
; CHECK-O-NEXT: Finished {{.*}}Function pass manager run.
|
||||
; CHECK-O-NEXT: Finished CGSCC pass manager run.
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O23SZ-NEXT: Clearing all analysis results for: <possibly invalidated loop>
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: DominatorTreeAnalysis
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: MemorySSAAnalysis
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: LoopAnalysis
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: PostDominatorTreeAnalysis
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: BranchProbabilityAnalysis
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: BlockFrequencyAnalysis
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: ScalarEvolutionAnalysis
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: InnerAnalysisManagerProxy
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: PhiValuesAnalysis
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: MemoryDependenceAnalysis
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: DemandedBitsAnalysis
|
||||
; CHECK-O3-NEXT: Invalidating analysis: DominanceFrontierAnalysis
|
||||
; CHECK-O3-NEXT: Invalidating analysis: RegionInfoAnalysis
|
||||
; CHECK-O23SZ-NEXT: Clearing all analysis results for: foo
|
||||
; CHECK-O-NEXT: Running pass: GlobalOptPass
|
||||
; CHECK-O-NEXT: Running analysis: TargetLibraryAnalysis on bar
|
||||
; CHECK-EXT: Running pass: {{.*}}::Bye
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O23SZ-NEXT: Clearing all analysis results for: foo
|
||||
; CHECK-O-NEXT: Running pass: NameAnonGlobalPass
|
||||
; CHECK-O-NEXT: Running pass: PrintModulePass
|
||||
|
||||
|
@ -26,12 +26,10 @@
|
||||
; RUN: | FileCheck %s --check-prefixes=CHECK-DIS,CHECK-O,CHECK-O2,CHECK-O23SZ,CHECK-O123 --dump-input=fail
|
||||
;
|
||||
; CHECK-O: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: ForceFunctionAttrsPass
|
||||
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
|
||||
; CHECK-O-NEXT: Running pass: AddDiscriminatorsPass
|
||||
; CHECK-EP-PIPELINE-START-NEXT: Running pass: NoOpModulePass
|
||||
; CHECK-O-NEXT: Starting {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: InferFunctionAttrsPass
|
||||
; CHECK-O-NEXT: Running analysis: TargetLibraryAnalysis
|
||||
; CHECK-O-NEXT: Starting {{.*}}Function pass manager run.
|
||||
@ -171,9 +169,7 @@
|
||||
; CHECK-O-NEXT: Finished {{.*}}Function pass manager run.
|
||||
; CHECK-O-NEXT: Finished CGSCC pass manager run.
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: GlobalOptPass
|
||||
; CHECK-O-NEXT: Finished {{.*}}Module pass manager run.
|
||||
; CHECK-O-NEXT: Running pass: NameAnonGlobalPass
|
||||
; CHECK-O-NEXT: Running pass: PrintModulePass
|
||||
|
||||
|
@ -10,11 +10,9 @@
|
||||
; RUN: -passes='module(no-op-module,no-op-module)' %s 2>&1 \
|
||||
; RUN: | FileCheck %s --check-prefix=CHECK-NESTED-TWO-NOOP-MP
|
||||
; CHECK-NESTED-TWO-NOOP-MP: Starting llvm::Module pass manager run
|
||||
; CHECK-NESTED-TWO-NOOP-MP: Starting llvm::Module pass manager run
|
||||
; CHECK-NESTED-TWO-NOOP-MP: Running pass: NoOpModulePass
|
||||
; CHECK-NESTED-TWO-NOOP-MP: Running pass: NoOpModulePass
|
||||
; CHECK-NESTED-TWO-NOOP-MP: Finished llvm::Module pass manager run
|
||||
; CHECK-NESTED-TWO-NOOP-MP: Finished llvm::Module pass manager run
|
||||
|
||||
; RUN: opt -disable-output -debug-pass-manager \
|
||||
; RUN: -passes=no-op-function,no-op-function %s 2>&1 \
|
||||
@ -112,7 +110,6 @@
|
||||
; RUN: -passes='module(function(no-op-function),cgscc(no-op-cgscc,function(no-op-function),no-op-cgscc),function(no-op-function))' %s 2>&1 \
|
||||
; RUN: | FileCheck %s --check-prefix=CHECK-NESTED-MP-CG-FP
|
||||
; CHECK-NESTED-MP-CG-FP: Starting llvm::Module pass manager run
|
||||
; CHECK-NESTED-MP-CG-FP: Starting llvm::Module pass manager run
|
||||
; CHECK-NESTED-MP-CG-FP: Starting llvm::Function pass manager run
|
||||
; CHECK-NESTED-MP-CG-FP: Running pass: NoOpFunctionPass
|
||||
; CHECK-NESTED-MP-CG-FP: Finished llvm::Function pass manager run
|
||||
@ -127,7 +124,6 @@
|
||||
; CHECK-NESTED-MP-CG-FP: Running pass: NoOpFunctionPass
|
||||
; CHECK-NESTED-MP-CG-FP: Finished llvm::Function pass manager run
|
||||
; CHECK-NESTED-MP-CG-FP: Finished llvm::Module pass manager run
|
||||
; CHECK-NESTED-MP-CG-FP: Finished llvm::Module pass manager run
|
||||
|
||||
; RUN: opt -disable-output -debug-pass-manager \
|
||||
; RUN: -passes='no-op-loop,no-op-loop' %s 2>&1 \
|
||||
@ -165,7 +161,6 @@
|
||||
; RUN: -passes='module(no-op-function,no-op-loop,no-op-cgscc,cgscc(no-op-function,no-op-loop),function(no-op-loop))' %s 2>&1 \
|
||||
; RUN: | FileCheck %s --check-prefix=CHECK-ADAPTORS
|
||||
; CHECK-ADAPTORS: Starting llvm::Module pass manager run
|
||||
; CHECK-ADAPTORS: Starting llvm::Module pass manager run
|
||||
; CHECK-ADAPTORS: Running pass: ModuleToFunctionPassAdaptor<{{.*}}NoOpFunctionPass>
|
||||
; CHECK-ADAPTORS: Running pass: NoOpFunctionPass
|
||||
; CHECK-ADAPTORS: Running pass: ModuleToFunctionPassAdaptor<{{.*}}FunctionToLoopPassAdaptor<{{.*}}NoOpLoopPass>{{.*}}>
|
||||
@ -187,7 +182,6 @@
|
||||
; CHECK-ADAPTORS: Running pass: NoOpLoopPass on Loop at depth 1 containing: %loop
|
||||
; CHECK-ADAPTORS: Finished llvm::Function pass manager run
|
||||
; CHECK-ADAPTORS: Finished llvm::Module pass manager run
|
||||
; CHECK-ADAPTORS: Finished llvm::Module pass manager run
|
||||
|
||||
; RUN: opt -disable-output -debug-pass-manager \
|
||||
; RUN: -passes='cgscc(print)' %s 2>&1 \
|
||||
|
Loading…
Reference in New Issue
Block a user