1 // Test that we print pass structure with new and legacy PM.
2 // RUN: %clang -fexperimental-new-pass-manager -fdebug-pass-structure -O3 -S -emit-llvm %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=NEWPM
3 // RUN: %clang -flegacy-pass-manager -fdebug-pass-structure -O0 -S -emit-llvm %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=LEGACYPM
4 // REQUIRES: asserts
5 
6 // NEWPM: Annotation2MetadataPass on [module]
7 // NEWPM-NEXT: ForceFunctionAttrsPass on [module]
8 // NEWPM-NEXT: InferFunctionAttrsPass on [module]
9 // NEWPM-NEXT:   InnerAnalysisManagerProxy<{{.*}}> analysis on [module]
10 // NEWPM-NEXT: ModuleToFunctionPassAdaptor on [module]
11 // NEWPM-NEXT: OpenMPOptPass on [module]
12 // NEWPM-NEXT: IPSCCPPass on [module]
13 // NEWPM-NEXT: CalledValuePropagationPass on [module]
14 // NEWPM-NEXT: GlobalOptPass on [module]
15 // NEWPM-NEXT: ModuleToFunctionPassAdaptor on [module]
16 // NEWPM-NEXT: DeadArgumentEliminationPass on [module]
17 // NEWPM-NEXT: ModuleToFunctionPassAdaptor on [module]
18 // NEWPM-NEXT: ModuleInlinerWrapperPass on [module]
19 // NEWPM-NEXT:   InlineAdvisorAnalysis analysis on [module]
20 // NEWPM-NEXT:   RequireAnalysisPass<{{.*}}> on [module]
21 // NEWPM-NEXT:     GlobalsAA analysis on [module]
22 // NEWPM-NEXT:       CallGraphAnalysis analysis on [module]
23 // NEWPM-NEXT:   RequireAnalysisPass<{{.*}}> on [module]
24 // NEWPM-NEXT:     ProfileSummaryAnalysis analysis on [module]
25 // NEWPM-NEXT:   ModuleToPostOrderCGSCCPassAdaptor on [module]
26 // NEWPM-NEXT:     InnerAnalysisManagerProxy<{{.*}}> analysis on [module]
27 // NEWPM-NEXT:       LazyCallGraphAnalysis analysis on [module]
28 // NEWPM-NEXT: GlobalOptPass on [module]
29 // NEWPM-NEXT: GlobalDCEPass on [module]
30 // NEWPM-NEXT: EliminateAvailableExternallyPass on [module]
31 // NEWPM-NEXT: ReversePostOrderFunctionAttrsPass on [module]
32 // NEWPM-NEXT: RequireAnalysisPass<{{.*}}> on [module]
33 // NEWPM-NEXT: ModuleToFunctionPassAdaptor on [module]
34 // NEWPM-NEXT: CGProfilePass on [module]
35 // NEWPM-NEXT: GlobalDCEPass on [module]
36 // NEWPM-NEXT: ConstantMergePass on [module]
37 // NEWPM-NEXT: RelLookupTableConverterPass on [module]
38 // NEWPM-NEXT: ModuleToFunctionPassAdaptor on [module]
39 // NEWPM-NEXT: PrintModulePass on [module]
40 
41 // LEGACYPM:      Pass Arguments:
42 
43