Skip to content

Commit 27bc8a1

Browse files
authored
[flang][NFC] Split CG dialect and the passes. (llvm#135240)
I am making a CG pass to depend on `FIROpenACCSupport` in llvm#134346. This introduces a cyclic dependency between `FIROpenACCSupport` and `FIRCodeGen`. This patch splits `FIRCodeGen` into `FIRCodeGenDialect` (for FIR CG dialect definition) and `FIRCodeGen` (for the CG passes). Now, `FIROpenACCSupport` depends on `FIRCodeGenDialect`, and `FIRCodeGen` depends on `FIROpenACCSupport`.
1 parent 727f392 commit 27bc8a1

File tree

20 files changed

+61
-63
lines changed

20 files changed

+61
-63
lines changed

flang/include/flang/Optimizer/CodeGen/CMakeLists.txt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
set(LLVM_TARGET_DEFINITIONS CGOps.td)
2-
mlir_tablegen(CGOps.h.inc -gen-op-decls)
3-
mlir_tablegen(CGOps.cpp.inc -gen-op-defs)
4-
add_public_tablegen_target(CGOpsIncGen)
5-
61
set(LLVM_TARGET_DEFINITIONS CGPasses.td)
72
mlir_tablegen(CGPasses.h.inc -gen-pass-decls -name OptCodeGen)
83
add_public_tablegen_target(FIROptCodeGenPassIncGen)

flang/include/flang/Optimizer/Dialect/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
add_subdirectory(CUF)
2+
add_subdirectory(FIRCG)
23

34
# This replicates part of the add_mlir_dialect cmake function from MLIR that
45
# cannot be used her because it expects to be run inside MLIR directory which

flang/include/flang/Optimizer/CodeGen/CGOps.h renamed to flang/include/flang/Optimizer/Dialect/FIRCG/CGOps.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
#ifndef OPTIMIZER_CODEGEN_CGOPS_H
14-
#define OPTIMIZER_CODEGEN_CGOPS_H
13+
#ifndef OPTIMIZER_DIALECT_FIRCG_CGOPS_H
14+
#define OPTIMIZER_DIALECT_FIRCG_CGOPS_H
1515

1616
#include "flang/Optimizer/Dialect/FIRAttr.h"
1717
#include "flang/Optimizer/Dialect/FIRType.h"
1818
#include "mlir/Dialect/Func/IR/FuncOps.h"
1919

2020
#define GET_OP_CLASSES
21-
#include "flang/Optimizer/CodeGen/CGOps.h.inc"
21+
#include "flang/Optimizer/Dialect/FIRCG/CGOps.h.inc"
2222

23-
#endif
23+
#endif // OPTIMIZER_DIALECT_FIRCG_CGOPS_H

flang/include/flang/Optimizer/CodeGen/CGOps.td renamed to flang/include/flang/Optimizer/Dialect/FIRCG/CGOps.td

Lines changed: 22 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//===-- CGOps.td - FIR operation definitions ---------------*- tablegen -*-===//
1+
//===-- CGOps.td - FIR CodeGen operation definitions -------*- tablegen -*-===//
22
//
33
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
44
// See https://llvm.org/LICENSE.txt for license information.
@@ -28,7 +28,7 @@ def fircg_Dialect : Dialect {
2828
// Base class for FIR CG operations.
2929
// All operations automatically get a prefix of "fircg.".
3030
class fircg_Op<string mnemonic, list<Trait> traits>
31-
: Op<fircg_Dialect, mnemonic, traits>;
31+
: Op<fircg_Dialect, mnemonic, traits>;
3232

3333
// Extended embox operation.
3434
def fircg_XEmboxOp : fircg_Op<"ext_embox", [AttrSizedOperandSegments]> {
@@ -55,17 +55,12 @@ def fircg_XEmboxOp : fircg_Op<"ext_embox", [AttrSizedOperandSegments]> {
5555
The memref and shape arguments are mandatory. The rest are optional.
5656
}];
5757

58-
let arguments = (ins
59-
AnyReferenceLike:$memref,
60-
Variadic<AnyIntegerType>:$shape,
61-
Variadic<AnyIntegerType>:$shift,
62-
Variadic<AnyIntegerType>:$slice,
63-
Variadic<AnyCoordinateType>:$subcomponent,
64-
Variadic<AnyIntegerType>:$substr,
65-
Variadic<AnyIntegerType>:$lenParams,
66-
Optional<fir_ClassType>:$sourceBox,
67-
OptionalAttr<I32Attr>:$allocator_idx
68-
);
58+
let arguments = (ins AnyReferenceLike:$memref,
59+
Variadic<AnyIntegerType>:$shape, Variadic<AnyIntegerType>:$shift,
60+
Variadic<AnyIntegerType>:$slice,
61+
Variadic<AnyCoordinateType>:$subcomponent,
62+
Variadic<AnyIntegerType>:$substr, Variadic<AnyIntegerType>:$lenParams,
63+
Optional<fir_ClassType>:$sourceBox, OptionalAttr<I32Attr>:$allocator_idx);
6964
let results = (outs BoxOrClassType);
7065

7166
let assemblyFormat = [{
@@ -125,14 +120,10 @@ def fircg_XReboxOp : fircg_Op<"ext_rebox", [AttrSizedOperandSegments]> {
125120
There must not both be a shape and slice/subcomponent arguments
126121
}];
127122

128-
let arguments = (ins
129-
BoxOrClassType:$box,
130-
Variadic<AnyIntegerType>:$shape,
131-
Variadic<AnyIntegerType>:$shift,
132-
Variadic<AnyIntegerType>:$slice,
133-
Variadic<AnyCoordinateType>:$subcomponent,
134-
Variadic<AnyIntegerType>:$substr
135-
);
123+
let arguments = (ins BoxOrClassType:$box, Variadic<AnyIntegerType>:$shape,
124+
Variadic<AnyIntegerType>:$shift, Variadic<AnyIntegerType>:$slice,
125+
Variadic<AnyCoordinateType>:$subcomponent,
126+
Variadic<AnyIntegerType>:$substr);
136127
let results = (outs BoxOrClassType);
137128

138129
let assemblyFormat = [{
@@ -163,9 +154,9 @@ def fircg_XReboxOp : fircg_Op<"ext_rebox", [AttrSizedOperandSegments]> {
163154
}];
164155
}
165156

166-
167157
// Extended array coordinate operation.
168-
def fircg_XArrayCoorOp : fircg_Op<"ext_array_coor", [AttrSizedOperandSegments]> {
158+
def fircg_XArrayCoorOp
159+
: fircg_Op<"ext_array_coor", [AttrSizedOperandSegments]> {
169160
let summary = "for internal conversion only";
170161

171162
let description = [{
@@ -190,15 +181,11 @@ def fircg_XArrayCoorOp : fircg_Op<"ext_array_coor", [AttrSizedOperandSegments]>
190181
omitted otherwise. The rest of the arguments are optional.
191182
}];
192183

193-
let arguments = (ins
194-
AnyRefOrBox:$memref,
195-
Variadic<AnyIntegerType>:$shape,
196-
Variadic<AnyIntegerType>:$shift,
197-
Variadic<AnyIntegerType>:$slice,
198-
Variadic<AnyCoordinateType>:$subcomponent,
199-
Variadic<AnyCoordinateType>:$indices,
200-
Variadic<AnyIntegerType>:$lenParams
201-
);
184+
let arguments = (ins AnyRefOrBox:$memref, Variadic<AnyIntegerType>:$shape,
185+
Variadic<AnyIntegerType>:$shift, Variadic<AnyIntegerType>:$slice,
186+
Variadic<AnyCoordinateType>:$subcomponent,
187+
Variadic<AnyCoordinateType>:$indices,
188+
Variadic<AnyIntegerType>:$lenParams);
202189
let results = (outs fir_ReferenceType);
203190

204191
let assemblyFormat = [{
@@ -239,14 +226,9 @@ def fircg_XDeclareOp : fircg_Op<"ext_declare", [AttrSizedOperandSegments]> {
239226
be converted to an extended DeclareOp.
240227
}];
241228

242-
let arguments = (ins
243-
AnyRefOrBox:$memref,
244-
Variadic<AnyIntegerType>:$shape,
245-
Variadic<AnyIntegerType>:$shift,
246-
Variadic<AnyIntegerType>:$typeparams,
247-
Optional<fir_DummyScopeType>:$dummy_scope,
248-
Builtin_StringAttr:$uniq_name
249-
);
229+
let arguments = (ins AnyRefOrBox:$memref, Variadic<AnyIntegerType>:$shape,
230+
Variadic<AnyIntegerType>:$shift, Variadic<AnyIntegerType>:$typeparams,
231+
Optional<fir_DummyScopeType>:$dummy_scope, Builtin_StringAttr:$uniq_name);
250232
let results = (outs AnyRefOrBox);
251233

252234
let assemblyFormat = [{
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
set(LLVM_TARGET_DEFINITIONS CGOps.td)
2+
mlir_tablegen(CGOps.h.inc -gen-op-decls)
3+
mlir_tablegen(CGOps.cpp.inc -gen-op-defs)
4+
add_public_tablegen_target(CGOpsIncGen)

flang/lib/Frontend/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ add_flang_library(flangFrontend
3333
FIRSupport
3434
FIRBuilder
3535
FIRCodeGen
36+
FIRCodeGenDialect
3637
FIRTransforms
3738
HLFIRDialect
3839
HLFIRTransforms

flang/lib/Optimizer/CodeGen/CMakeLists.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
add_flang_library(FIRCodeGen
22
BoxedProcedure.cpp
3-
CGOps.cpp
43
CodeGen.cpp
54
CodeGenOpenMP.cpp
65
FIROpPatterns.cpp
@@ -21,13 +20,12 @@ add_flang_library(FIRCodeGen
2120
CUFAttrs
2221
FIRAnalysis
2322
FIRBuilder
23+
FIRCodeGenDialect
2424
FIRDialect
2525
FIRDialectSupport
2626
FIRSupport
2727

2828
LINK_COMPONENTS
29-
AsmParser
30-
AsmPrinter
3129
Remarks
3230
TargetParser
3331

flang/lib/Optimizer/CodeGen/CodeGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212

1313
#include "flang/Optimizer/CodeGen/CodeGen.h"
1414

15-
#include "flang/Optimizer/CodeGen/CGOps.h"
1615
#include "flang/Optimizer/CodeGen/CodeGenOpenMP.h"
1716
#include "flang/Optimizer/CodeGen/FIROpPatterns.h"
1817
#include "flang/Optimizer/CodeGen/TypeConverter.h"
1918
#include "flang/Optimizer/Dialect/FIRAttr.h"
19+
#include "flang/Optimizer/Dialect/FIRCG/CGOps.h"
2020
#include "flang/Optimizer/Dialect/FIRDialect.h"
2121
#include "flang/Optimizer/Dialect/FIROps.h"
2222
#include "flang/Optimizer/Dialect/FIRType.h"

flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#include "flang/Optimizer/CodeGen/CodeGen.h"
1414

1515
#include "flang/Optimizer/Builder/Todo.h" // remove when TODO's are done
16-
#include "flang/Optimizer/CodeGen/CGOps.h"
16+
#include "flang/Optimizer/Dialect/FIRCG/CGOps.h"
1717
#include "flang/Optimizer/Dialect/FIRDialect.h"
1818
#include "flang/Optimizer/Dialect/FIROps.h"
1919
#include "flang/Optimizer/Dialect/FIRType.h"

flang/lib/Optimizer/Dialect/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
add_subdirectory(Support)
22
add_subdirectory(CUF)
3+
add_subdirectory(FIRCG)
34

45
add_flang_library(FIRDialect
56
FIRAttr.cpp

flang/lib/Optimizer/CodeGen/CGOps.cpp renamed to flang/lib/Optimizer/Dialect/FIRCG/CGOps.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
#include "flang/Optimizer/CodeGen/CGOps.h"
13+
#include "flang/Optimizer/Dialect/FIRCG/CGOps.h"
1414
#include "flang/Optimizer/Dialect/FIRDialect.h"
1515
#include "flang/Optimizer/Dialect/FIROps.h"
1616
#include "flang/Optimizer/Dialect/FIRType.h"
@@ -20,7 +20,7 @@ fir::FIRCodeGenDialect::FIRCodeGenDialect(mlir::MLIRContext *ctx)
2020
: mlir::Dialect("fircg", ctx, mlir::TypeID::get<FIRCodeGenDialect>()) {
2121
addOperations<
2222
#define GET_OP_LIST
23-
#include "flang/Optimizer/CodeGen/CGOps.cpp.inc"
23+
#include "flang/Optimizer/Dialect/FIRCG/CGOps.cpp.inc"
2424
>();
2525
}
2626

@@ -30,7 +30,7 @@ fir::FIRCodeGenDialect::~FIRCodeGenDialect() {
3030
}
3131

3232
#define GET_OP_CLASSES
33-
#include "flang/Optimizer/CodeGen/CGOps.cpp.inc"
33+
#include "flang/Optimizer/Dialect/FIRCG/CGOps.cpp.inc"
3434

3535
unsigned fir::cg::XEmboxOp::getOutRank() {
3636
if (getSlice().empty())
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
add_flang_library(FIRCodeGenDialect
2+
CGOps.cpp
3+
4+
DEPENDS
5+
CGOpsIncGen
6+
7+
LINK_LIBS
8+
FIRDialect
9+
MLIRIR
10+
11+
LINK_COMPONENTS
12+
AsmParser
13+
AsmPrinter
14+
)

flang/lib/Optimizer/OpenACC/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@ add_flang_library(FIROpenACCSupport
66

77
DEPENDS
88
FIRBuilder
9-
FIRCodeGen
109
FIRDialect
1110
FIRDialectSupport
1211
FIRSupport
1312
HLFIRDialect
1413

1514
LINK_LIBS
1615
FIRBuilder
17-
FIRCodeGen
16+
FIRCodeGenDialect
1817
FIRDialect
1918
FIRDialectSupport
2019
FIRSupport

flang/lib/Optimizer/OpenACC/FIROpenACCTypeInterfaces.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#include "flang/Optimizer/Builder/DirectivesCommon.h"
1616
#include "flang/Optimizer/Builder/FIRBuilder.h"
1717
#include "flang/Optimizer/Builder/HLFIRTools.h"
18-
#include "flang/Optimizer/CodeGen/CGOps.h"
18+
#include "flang/Optimizer/Dialect/FIRCG/CGOps.h"
1919
#include "flang/Optimizer/Dialect/FIROps.h"
2020
#include "flang/Optimizer/Dialect/FIROpsSupport.h"
2121
#include "flang/Optimizer/Dialect/FIRType.h"

flang/lib/Optimizer/Transforms/AddDebugInfo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#include "DebugTypeGenerator.h"
1515
#include "flang/Optimizer/Builder/FIRBuilder.h"
1616
#include "flang/Optimizer/Builder/Todo.h"
17-
#include "flang/Optimizer/CodeGen/CGOps.h"
17+
#include "flang/Optimizer/Dialect/FIRCG/CGOps.h"
1818
#include "flang/Optimizer/Dialect/FIRDialect.h"
1919
#include "flang/Optimizer/Dialect/FIROps.h"
2020
#include "flang/Optimizer/Dialect/FIROpsSupport.h"

flang/lib/Optimizer/Transforms/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ add_flang_library(FIRTransforms
4747
FIRAnalysis
4848
FIRBuilder
4949
FIRCodeGen
50+
FIRCodeGenDialect
5051
FIRDialect
5152
FIRDialectSupport
5253
FIRSupport

flang/lib/Optimizer/Transforms/DebugTypeGenerator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
#ifndef FORTRAN_OPTIMIZER_TRANSFORMS_DEBUGTYPEGENERATOR_H
1414
#define FORTRAN_OPTIMIZER_TRANSFORMS_DEBUGTYPEGENERATOR_H
1515

16-
#include "flang/Optimizer/CodeGen/CGOps.h"
1716
#include "flang/Optimizer/CodeGen/TypeConverter.h"
17+
#include "flang/Optimizer/Dialect/FIRCG/CGOps.h"
1818
#include "flang/Optimizer/Dialect/FIRType.h"
1919
#include "flang/Optimizer/Dialect/Support/FIRContext.h"
2020
#include "flang/Optimizer/Dialect/Support/KindMapping.h"

flang/tools/fir-opt/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ target_link_libraries(fir-opt PRIVATE
1818
FIRSupport
1919
FIRTransforms
2020
FIRCodeGen
21+
FIRCodeGenDialect
2122
HLFIRDialect
2223
HLFIRTransforms
2324
FIROpenACCSupport

flang/tools/tco/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ target_link_libraries(tco PRIVATE
1010
CUFAttrs
1111
CUFDialect
1212
FIRCodeGen
13+
FIRCodeGenDialect
1314
FIRDialect
1415
FIRDialectSupport
1516
FIRSupport

flang/unittests/Optimizer/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ set(LLVM_LINK_COMPONENTS
88
set(LIBS
99
CUFDialect
1010
FIRBuilder
11-
FIRCodeGen
11+
FIRCodeGenDialect
1212
FIRDialect
1313
FIRDialectSupport
1414
FIRSupport

0 commit comments

Comments
 (0)