xref: /llvm-project/flang/test/Fir/basic-program.fir (revision 3bb969f3ebb25037e8eb69c30a5a0dfb5d9d0f51)
1// RUN: tco %s | FileCheck %s
2// RUN: tco %s --mlir-pass-statistics --mlir-pass-statistics-display=pipeline 2>&1 | FileCheck %s --check-prefix=PASSES
3
4// REQUIRES: asserts
5
6// Check that tco is working with a basic test.
7// Also check the passes in the default pipeline.
8
9func.func @_QQmain() {
10  return
11}
12
13// CHECK: ; ModuleID = 'FIRModule'
14// CHECK-LABEL: define void @_QQmain()
15// CHECK:       ret void
16
17// PASSES: Pass statistics report
18
19// PASSES:        Canonicalizer
20// PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'omp.declare_reduction', 'omp.private']
21// PASSES-NEXT: 'fir.global' Pipeline
22// PASSES-NEXT:   SimplifyHLFIRIntrinsics
23// PASSES-NEXT:   InlineElementals
24// PASSES-NEXT: 'func.func' Pipeline
25// PASSES-NEXT:   SimplifyHLFIRIntrinsics
26// PASSES-NEXT:   InlineElementals
27// PASSES-NEXT: 'omp.declare_reduction' Pipeline
28// PASSES-NEXT:   SimplifyHLFIRIntrinsics
29// PASSES-NEXT:   InlineElementals
30// PASSES-NEXT: 'omp.private' Pipeline
31// PASSES-NEXT:   SimplifyHLFIRIntrinsics
32// PASSES-NEXT:   InlineElementals
33// PASSES-NEXT:   Canonicalizer
34// PASSES-NEXT:   CSE
35// PASSES-NEXT:    (S) 0 num-cse'd - Number of operations CSE'd
36// PASSES-NEXT:    (S) 0 num-dce'd - Number of operations DCE'd
37// PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'omp.declare_reduction', 'omp.private']
38// PASSES-NEXT: 'fir.global' Pipeline
39// PASSES-NEXT:    SimplifyHLFIRIntrinsics
40// PASSES-NEXT:    OptimizedBufferization
41// PASSES-NEXT:    InlineHLFIRAssign
42// PASSES-NEXT: 'func.func' Pipeline
43// PASSES-NEXT:    SimplifyHLFIRIntrinsics
44// PASSES-NEXT:    OptimizedBufferization
45// PASSES-NEXT:    InlineHLFIRAssign
46// PASSES-NEXT: 'omp.declare_reduction' Pipeline
47// PASSES-NEXT:    SimplifyHLFIRIntrinsics
48// PASSES-NEXT:    OptimizedBufferization
49// PASSES-NEXT:    InlineHLFIRAssign
50// PASSES-NEXT: 'omp.private' Pipeline
51// PASSES-NEXT:    SimplifyHLFIRIntrinsics
52// PASSES-NEXT:    OptimizedBufferization
53// PASSES-NEXT:    InlineHLFIRAssign
54// PASSES-NEXT:   LowerHLFIROrderedAssignments
55// PASSES-NEXT:   LowerHLFIRIntrinsics
56// PASSES-NEXT:   BufferizeHLFIR
57// PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'omp.declare_reduction', 'omp.private']
58// PASSES-NEXT:   'fir.global' Pipeline
59// PASSES-NEXT:     InlineHLFIRAssign
60// PASSES-NEXT:   'func.func' Pipeline
61// PASSES-NEXT:     InlineHLFIRAssign
62// PASSES-NEXT:   'omp.declare_reduction' Pipeline
63// PASSES-NEXT:     InlineHLFIRAssign
64// PASSES-NEXT:   'omp.private' Pipeline
65// PASSES-NEXT:     InlineHLFIRAssign
66// PASSES-NEXT:   ConvertHLFIRtoFIR
67// PASSES-NEXT:   LowerWorkshare
68// PASSES-NEXT:   CSE
69// PASSES-NEXT:   (S) 0 num-cse'd - Number of operations CSE'd
70// PASSES-NEXT:   (S) 0 num-dce'd - Number of operations DCE'd
71
72// PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'omp.declare_reduction', 'omp.private']
73// PASSES-NEXT: 'fir.global' Pipeline
74// PASSES-NEXT:   CharacterConversion
75// PASSES-NEXT: 'func.func' Pipeline
76// PASSES-NEXT:   ArrayValueCopy
77// PASSES-NEXT:   CharacterConversion
78// PASSES-NEXT: 'omp.declare_reduction' Pipeline
79// PASSES-NEXT:   CharacterConversion
80// PASSES-NEXT: 'omp.private' Pipeline
81// PASSES-NEXT:   CharacterConversion
82
83// PASSES-NEXT: Canonicalizer
84// PASSES-NEXT: SimplifyRegionLite
85// PASSES-NEXT: SimplifyIntrinsics
86// PASSES-NEXT: AlgebraicSimplification
87// PASSES-NEXT: CSE
88// PASSES-NEXT:   (S) 0 num-cse'd - Number of operations CSE'd
89// PASSES-NEXT:   (S) 0 num-dce'd - Number of operations DCE'd
90
91// PASSES-NEXT: 'func.func' Pipeline
92// PASSES-NEXT:   MemoryAllocationOpt
93
94// PASSES-NEXT: Inliner
95// PASSES-NEXT: SimplifyRegionLite
96// PASSES-NEXT: CSE
97// PASSES-NEXT:   (S) 0 num-cse'd - Number of operations CSE'd
98// PASSES-NEXT:   (S) 0 num-dce'd - Number of operations DCE'd
99
100// PASSES-NEXT: PolymorphicOpConversion
101// PASSES-NEXT: AssumedRankOpConversion
102// PASSES-NEXT: AddAliasTags
103
104// PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'omp.declare_reduction', 'omp.private']
105// PASSES-NEXT: 'fir.global' Pipeline
106// PASSES-NEXT:   StackReclaim
107// PASSES-NEXT:   CFGConversion
108// PASSES-NEXT: 'func.func' Pipeline
109// PASSES-NEXT:   StackReclaim
110// PASSES-NEXT:   CFGConversion
111// PASSES-NEXT: 'omp.declare_reduction' Pipeline
112// PASSES-NEXT:   StackReclaim
113// PASSES-NEXT:   CFGConversion
114// PASSES-NEXT: 'omp.private' Pipeline
115// PASSES-NEXT:   StackReclaim
116// PASSES-NEXT:   CFGConversion
117
118// PASSES-NEXT: SCFToControlFlow
119// PASSES-NEXT: Canonicalizer
120// PASSES-NEXT: SimplifyRegionLite
121// PASSES-NEXT: CSE
122// PASSES-NEXT:   (S) 0 num-cse'd - Number of operations CSE'd
123// PASSES-NEXT:   (S) 0 num-dce'd - Number of operations DCE'd
124// PASSES-NEXT: BoxedProcedurePass
125
126// PASSES-NEXT: Pipeline Collection : ['fir.global', 'func.func', 'gpu.module', 'omp.declare_reduction', 'omp.private']
127// PASSES-NEXT:  'fir.global' Pipeline
128// PASSES-NEXT:    AbstractResultOpt
129// PASSES-NEXT:  'func.func' Pipeline
130// PASSES-NEXT:    AbstractResultOpt
131// PASSES-NEXT:  'gpu.module' Pipeline
132// PASSES-NEXT:   Pipeline Collection : ['func.func', 'gpu.func']
133// PASSES-NEXT:   'func.func' Pipeline
134// PASSES-NEXT:   AbstractResultOpt
135// PASSES-NEXT:   'gpu.func' Pipeline
136// PASSES-NEXT:   AbstractResultOpt
137// PASSES-NEXT:  'omp.declare_reduction' Pipeline
138// PASSES-NEXT:    AbstractResultOpt
139// PASSES-NEXT:  'omp.private' Pipeline
140// PASSES-NEXT:    AbstractResultOpt
141
142// PASSES-NEXT: CodeGenRewrite
143// PASSES-NEXT:   (S) 0 num-dce'd - Number of operations eliminated
144// PASSES-NEXT: TargetRewrite
145// PASSES-NEXT: CompilerGeneratedNamesConversion
146// PASSES-NEXT: 'func.func' Pipeline
147// PASSES-NEXT:  FunctionAttr
148// PASSES-NEXT: FIRToLLVMLowering
149// PASSES-NEXT: ReconcileUnrealizedCasts
150// PASSES-NEXT: LLVMIRLoweringPass
151