166 lines · plain
1// RUN: tco %s | FileCheck %s2// RUN: tco %s --mlir-pass-statistics --mlir-pass-statistics-display=pipeline 2>&1 | FileCheck %s --check-prefix=PASSES3 4// REQUIRES: asserts5 6// Check that tco is working with a basic test.7// Also check the passes in the default pipeline.8 9func.func @_QQmain() {10 return11}12 13// CHECK: ; ModuleID = 'FIRModule'14// CHECK-LABEL: define void @_QQmain()15// CHECK: ret void16 17// PASSES: Pass statistics report18 19// PASSES: Canonicalizer20// PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'omp.declare_reduction', 'omp.private']21// PASSES-NEXT: 'fir.global' Pipeline22// PASSES-NEXT: SimplifyHLFIRIntrinsics23// PASSES-NEXT: InlineElementals24// PASSES-NEXT: 'func.func' Pipeline25// PASSES-NEXT: SimplifyHLFIRIntrinsics26// PASSES-NEXT: InlineElementals27// PASSES-NEXT: 'omp.declare_reduction' Pipeline28// PASSES-NEXT: SimplifyHLFIRIntrinsics29// PASSES-NEXT: InlineElementals30// PASSES-NEXT: 'omp.private' Pipeline31// PASSES-NEXT: SimplifyHLFIRIntrinsics32// PASSES-NEXT: InlineElementals33// PASSES-NEXT: Canonicalizer34// PASSES-NEXT: CSE35// PASSES-NEXT: (S) 0 num-cse'd - Number of operations CSE'd36// PASSES-NEXT: (S) 0 num-dce'd - Number of operations DCE'd37// PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'omp.declare_reduction', 'omp.private']38// PASSES-NEXT: 'fir.global' Pipeline39// PASSES-NEXT: SimplifyHLFIRIntrinsics40// PASSES-NEXT: PropagateFortranVariableAttributes41// PASSES-NEXT: OptimizedBufferization42// PASSES-NEXT: InlineHLFIRAssign43// PASSES-NEXT: 'func.func' Pipeline44// PASSES-NEXT: SimplifyHLFIRIntrinsics45// PASSES-NEXT: PropagateFortranVariableAttributes46// PASSES-NEXT: OptimizedBufferization47// PASSES-NEXT: InlineHLFIRAssign48// PASSES-NEXT: 'omp.declare_reduction' Pipeline49// PASSES-NEXT: SimplifyHLFIRIntrinsics50// PASSES-NEXT: PropagateFortranVariableAttributes51// PASSES-NEXT: OptimizedBufferization52// PASSES-NEXT: InlineHLFIRAssign53// PASSES-NEXT: 'omp.private' Pipeline54// PASSES-NEXT: SimplifyHLFIRIntrinsics55// PASSES-NEXT: PropagateFortranVariableAttributes56// PASSES-NEXT: OptimizedBufferization57// PASSES-NEXT: InlineHLFIRAssign58// PASSES-NEXT: LowerHLFIROrderedAssignments59// PASSES-NEXT: LowerHLFIRIntrinsics60// PASSES-NEXT: BufferizeHLFIR61// PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'omp.declare_reduction', 'omp.private']62// PASSES-NEXT: 'fir.global' Pipeline63// PASSES-NEXT: InlineHLFIRAssign64// PASSES-NEXT: 'func.func' Pipeline65// PASSES-NEXT: InlineHLFIRAssign66// PASSES-NEXT: 'omp.declare_reduction' Pipeline67// PASSES-NEXT: InlineHLFIRAssign68// PASSES-NEXT: 'omp.private' Pipeline69// PASSES-NEXT: InlineHLFIRAssign70// PASSES-NEXT: ConvertHLFIRtoFIR71// PASSES-NEXT: LowerWorkshare72// PASSES-NEXT: LowerWorkdistribute73// PASSES-NEXT: CSE74// PASSES-NEXT: (S) 0 num-cse'd - Number of operations CSE'd75// PASSES-NEXT: (S) 0 num-dce'd - Number of operations DCE'd76 77// PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'omp.declare_reduction', 'omp.private']78// PASSES-NEXT: 'fir.global' Pipeline79// PASSES-NEXT: CharacterConversion80// PASSES-NEXT: 'func.func' Pipeline81// PASSES-NEXT: ArrayValueCopy82// PASSES-NEXT: CharacterConversion83// PASSES-NEXT: 'omp.declare_reduction' Pipeline84// PASSES-NEXT: CharacterConversion85// PASSES-NEXT: 'omp.private' Pipeline86// PASSES-NEXT: CharacterConversion87 88// PASSES-NEXT: Canonicalizer89// PASSES-NEXT: SimplifyRegionLite90// PASSES-NEXT: SimplifyIntrinsics91// PASSES-NEXT: AlgebraicSimplification92// PASSES-NEXT: CSE93// PASSES-NEXT: (S) 0 num-cse'd - Number of operations CSE'd94// PASSES-NEXT: (S) 0 num-dce'd - Number of operations DCE'd95 96// PASSES-NEXT: 'func.func' Pipeline97// PASSES-NEXT: MemoryAllocationOpt98 99// PASSES-NEXT: Inliner100// PASSES-NEXT: SimplifyRegionLite101// PASSES-NEXT: CSE102// PASSES-NEXT: (S) 0 num-cse'd - Number of operations CSE'd103// PASSES-NEXT: (S) 0 num-dce'd - Number of operations DCE'd104 105// PASSES-NEXT: PolymorphicOpConversion106// PASSES-NEXT: AssumedRankOpConversion107// PASSES-NEXT: 'func.func' Pipeline108// PASSES-NEXT: OptimizeArrayRepacking109// PASSES-NEXT: LowerRepackArraysPass110// PASSES-NEXT: SimplifyFIROperations111 112// PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'omp.declare_reduction', 'omp.private']113// PASSES-NEXT: 'fir.global' Pipeline114// PASSES-NEXT: StackReclaim115// PASSES-NEXT: CFGConversion116// PASSES-NEXT: 'func.func' Pipeline117// PASSES-NEXT: StackReclaim118// PASSES-NEXT: CFGConversion119// PASSES-NEXT: 'omp.declare_reduction' Pipeline120// PASSES-NEXT: StackReclaim121// PASSES-NEXT: CFGConversion122// PASSES-NEXT: 'omp.private' Pipeline123// PASSES-NEXT: StackReclaim124// PASSES-NEXT: CFGConversion125 126// PASSES-NEXT: SCFToControlFlow127// PASSES-NEXT: Canonicalizer128// PASSES-NEXT: SimplifyRegionLite129// PASSES-NEXT: ConvertComplexPow130// PASSES-NEXT: CSE131// PASSES-NEXT: (S) 0 num-cse'd - Number of operations CSE'd132// PASSES-NEXT: (S) 0 num-dce'd - Number of operations DCE'd133// PASSES-NEXT: 'func.func' Pipeline134// PASSES-NEXT: SetRuntimeCallAttributes135// PASSES-NEXT: MIFOpConversion 136// PASSES-NEXT: BoxedProcedurePass137// PASSES-NEXT: AddAliasTags138 139// PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'gpu.module', 'omp.declare_reduction', 'omp.private']140// PASSES-NEXT: 'fir.global' Pipeline141// PASSES-NEXT: AbstractResultOpt142// PASSES-NEXT: 'func.func' Pipeline143// PASSES-NEXT: AbstractResultOpt144// PASSES-NEXT: 'gpu.module' Pipeline145// PASSES-NEXT: Pipeline Collection : ['func.func', 'gpu.func'] 146// PASSES-NEXT: 'func.func' Pipeline 147// PASSES-NEXT: AbstractResultOpt148// PASSES-NEXT: 'gpu.func' Pipeline 149// PASSES-NEXT: AbstractResultOpt150// PASSES-NEXT: 'omp.declare_reduction' Pipeline151// PASSES-NEXT: AbstractResultOpt152// PASSES-NEXT: 'omp.private' Pipeline153// PASSES-NEXT: AbstractResultOpt154 155// PASSES-NEXT: CodeGenRewrite156// PASSES-NEXT: (S) 0 num-dce'd - Number of operations eliminated157// PASSES-NEXT: TargetRewrite158// PASSES-NEXT: CompilerGeneratedNamesConversion159// PASSES-NEXT: 'func.func' Pipeline160// PASSES-NEXT: FunctionAttr161// PASSES-NEXT: LowerNontemporalPass162// PASSES-NEXT: FIRToLLVMLowering163// PASSES-NEXT: ReconcileUnrealizedCasts164// PASSES-NEXT: PrepareForOMPOffloadPrivatizationPass165// PASSES-NEXT: LLVMIRLoweringPass166