[fir] Split FIROptimizer lib into several smaller libraries
Partition libFIROptimizer into smaller libraries that reflect the
structure. Adapt potential problems.
This patch is part of the upstreaming effort from fir-dev branch. It's a
building stone to upstreaming transformations.
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Reviewed By: schweitz
Differential Revision: https://reviews.llvm.org/D111055
GitOrigin-RevId: c2eff3d5b931191d77fe391f93e50283a4c88739
diff --git a/lib/Lower/CMakeLists.txt b/lib/Lower/CMakeLists.txt
index 07b87ef..27e54d4 100644
--- a/lib/Lower/CMakeLists.txt
+++ b/lib/Lower/CMakeLists.txt
@@ -17,11 +17,15 @@
PFTBuilder.cpp
DEPENDS
- FIROptimizer
+ FIRDialect
+ FIRSupport
+ FIRTransforms
${dialect_libs}
LINK_LIBS
- FIROptimizer
+ FIRDialect
+ FIRSupport
+ FIRTransforms
${dialect_libs}
FortranCommon
FortranParser
diff --git a/lib/Optimizer/CMakeLists.txt b/lib/Optimizer/CMakeLists.txt
index b83d6a0..4b37a18 100644
--- a/lib/Optimizer/CMakeLists.txt
+++ b/lib/Optimizer/CMakeLists.txt
@@ -1,34 +1,4 @@
-get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
-
-add_flang_library(FIROptimizer
- Dialect/FIRAttr.cpp
- Dialect/FIRDialect.cpp
- Dialect/FIROps.cpp
- Dialect/FIRType.cpp
-
- Support/FIRContext.cpp
- Support/InternalNames.cpp
- Support/KindMapping.cpp
-
- CodeGen/CGOps.cpp
- CodeGen/PreCGRewrite.cpp
-
- Transforms/Inliner.cpp
-
- DEPENDS
- FIROpsIncGen
- FIROptCodeGenPassIncGen
- FIROptTransformsPassIncGen
- CGOpsIncGen
- ${dialect_libs}
-
- LINK_LIBS
- ${dialect_libs}
- MLIRLLVMToLLVMIRTranslation
- MLIRTargetLLVMIRExport
-
- LINK_COMPONENTS
- AsmParser
- AsmPrinter
- Remarks
-)
+add_subdirectory(CodeGen)
+add_subdirectory(Dialect)
+add_subdirectory(Support)
+add_subdirectory(Transforms)
diff --git a/lib/Optimizer/CodeGen/CMakeLists.txt b/lib/Optimizer/CodeGen/CMakeLists.txt
new file mode 100644
index 0000000..6a8d82c
--- /dev/null
+++ b/lib/Optimizer/CodeGen/CMakeLists.txt
@@ -0,0 +1,22 @@
+add_flang_library(FIRCodeGen
+ CGOps.cpp
+ PreCGRewrite.cpp
+
+ DEPENDS
+ FIRDialect
+ FIRSupport
+ FIROptCodeGenPassIncGen
+ CGOpsIncGen
+
+ LINK_LIBS
+ FIRDialect
+ FIRSupport
+ MLIROpenMPToLLVM
+ MLIRLLVMToLLVMIRTranslation
+ MLIRTargetLLVMIRExport
+
+ LINK_COMPONENTS
+ AsmParser
+ AsmPrinter
+ Remarks
+)
diff --git a/lib/Optimizer/Dialect/CMakeLists.txt b/lib/Optimizer/Dialect/CMakeLists.txt
new file mode 100644
index 0000000..7116dab
--- /dev/null
+++ b/lib/Optimizer/Dialect/CMakeLists.txt
@@ -0,0 +1,21 @@
+add_flang_library(FIRDialect
+ FIRAttr.cpp
+ FIRDialect.cpp
+ FIROps.cpp
+ FIRType.cpp
+
+ DEPENDS
+ FIRSupport
+ FIROpsIncGen
+
+ LINK_LIBS
+ FIRSupport
+ MLIROpenMPToLLVM
+ MLIRLLVMToLLVMIRTranslation
+ MLIRTargetLLVMIRExport
+
+ LINK_COMPONENTS
+ AsmParser
+ AsmPrinter
+ Remarks
+)
diff --git a/lib/Optimizer/Support/CMakeLists.txt b/lib/Optimizer/Support/CMakeLists.txt
new file mode 100644
index 0000000..2e53c3f
--- /dev/null
+++ b/lib/Optimizer/Support/CMakeLists.txt
@@ -0,0 +1,14 @@
+add_flang_library(FIRSupport
+ FIRContext.cpp
+ InternalNames.cpp
+ KindMapping.cpp
+
+ DEPENDS
+ ${dialect_libs}
+
+ LINK_LIBS
+ ${dialect_libs}
+ MLIROpenMPToLLVMIRTranslation
+ MLIRLLVMToLLVMIRTranslation
+ MLIRTargetLLVMIRExport
+)
diff --git a/lib/Optimizer/Transforms/CMakeLists.txt b/lib/Optimizer/Transforms/CMakeLists.txt
new file mode 100644
index 0000000..462ae40
--- /dev/null
+++ b/lib/Optimizer/Transforms/CMakeLists.txt
@@ -0,0 +1,16 @@
+add_flang_library(FIRTransforms
+ Inliner.cpp
+
+ DEPENDS
+ FIRDialect
+ FIRSupport
+ FIROptTransformsPassIncGen
+
+ LINK_LIBS
+ FIRDialect
+ MLIRAffineToStandard
+ MLIRLLVMIR
+ MLIROpenACC
+ MLIROpenMP
+ FIRSupport
+)
diff --git a/tools/fir-opt/CMakeLists.txt b/tools/fir-opt/CMakeLists.txt
index efd33f9..566aa78 100644
--- a/tools/fir-opt/CMakeLists.txt
+++ b/tools/fir-opt/CMakeLists.txt
@@ -3,7 +3,10 @@
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
target_link_libraries(fir-opt PRIVATE
- FIROptimizer
+ FIRDialect
+ FIRSupport
+ FIRTransforms
+ FIRCodeGen
${dialect_libs}
# TODO: these should be transitive dependencies from a target providing
diff --git a/tools/tco/CMakeLists.txt b/tools/tco/CMakeLists.txt
index 4a22427..1a9c5ac 100644
--- a/tools/tco/CMakeLists.txt
+++ b/tools/tco/CMakeLists.txt
@@ -1,7 +1,10 @@
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
set(LIBS
- FIROptimizer
+ FIRCodeGen
+ FIRDialect
+ FIRSupport
+ FIRTransforms
${dialect_libs}
MLIRIR
MLIRLLVMIR
diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt
index 95e3f6d..5acebce 100644
--- a/unittests/CMakeLists.txt
+++ b/unittests/CMakeLists.txt
@@ -39,6 +39,5 @@
add_subdirectory(Optimizer)
add_subdirectory(Decimal)
add_subdirectory(Evaluate)
-add_subdirectory(Lower)
add_subdirectory(Runtime)
add_subdirectory(Frontend)
diff --git a/unittests/Lower/CMakeLists.txt b/unittests/Lower/CMakeLists.txt
deleted file mode 100644
index a3f61f0..0000000
--- a/unittests/Lower/CMakeLists.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
-
-set(LIBS
- FIROptimizer
- MLIRLLVMIR
- ${dialect_libs}
-)
-
-add_flang_unittest(FlangLoweringTests
- RTBuilder.cpp
-)
-
-target_link_libraries(FlangLoweringTests
- PRIVATE
- ${LIBS})
diff --git a/unittests/Optimizer/CMakeLists.txt b/unittests/Optimizer/CMakeLists.txt
index 3996c69..8bfb860 100644
--- a/unittests/Optimizer/CMakeLists.txt
+++ b/unittests/Optimizer/CMakeLists.txt
@@ -1,7 +1,9 @@
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
set(LIBS
- FIROptimizer
+ FIRCodeGen
+ FIRDialect
+ FIRSupport
${dialect_libs}
)
@@ -9,6 +11,7 @@
FIRContextTest.cpp
InternalNamesTest.cpp
KindMappingTest.cpp
+ RTBuilder.cpp
)
target_link_libraries(FlangOptimizerTests
PRIVATE
diff --git a/unittests/Lower/RTBuilder.cpp b/unittests/Optimizer/RTBuilder.cpp
similarity index 100%
rename from unittests/Lower/RTBuilder.cpp
rename to unittests/Optimizer/RTBuilder.cpp