[flang-commits] [flang] [flang] remove AbstractConverter.h include from IntrinsicCall.h (PR #178150)

via flang-commits flang-commits at lists.llvm.org
Tue Jan 27 02:17:57 PST 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-flang-fir-hlfir

Author: None (jeanPerier)

<details>
<summary>Changes</summary>

AbstractConverter.h is pulling a lot of headers, including some from Evaluate. This causes any library using IntrinsicCall.h to have to link against FortranEvaluate and FortranSupport while there is no actual need/usage of Evaluate data structures.

I opened https://github.com/llvm/llvm-project/issues/178142 to fully remove the AbstractConverter from IntrinsicCall.cpp, but for now this patch should at least prevent the consumers of IntrinsicCall.h to bring-in these extra libraries.

Should solve the DEBUG build problem from https://github.com/llvm/llvm-project/pull/178076.

---
Full diff: https://github.com/llvm/llvm-project/pull/178150.diff


3 Files Affected:

- (modified) flang/include/flang/Optimizer/Builder/IntrinsicCall.h (+9-1) 
- (modified) flang/lib/Optimizer/Builder/IntrinsicCall.cpp (+1) 
- (modified) flang/lib/Optimizer/Builder/PPCIntrinsicCall.cpp (+1) 


``````````diff
diff --git a/flang/include/flang/Optimizer/Builder/IntrinsicCall.h b/flang/include/flang/Optimizer/Builder/IntrinsicCall.h
index b248106b51101..0b62ca1292d99 100644
--- a/flang/include/flang/Optimizer/Builder/IntrinsicCall.h
+++ b/flang/include/flang/Optimizer/Builder/IntrinsicCall.h
@@ -9,7 +9,6 @@
 #ifndef FORTRAN_LOWER_INTRINSICCALL_H
 #define FORTRAN_LOWER_INTRINSICCALL_H
 
-#include "flang/Lower/AbstractConverter.h"
 #include "flang/Optimizer/Builder/BoxValue.h"
 #include "flang/Optimizer/Builder/FIRBuilder.h"
 #include "flang/Optimizer/Builder/Runtime/Character.h"
@@ -22,6 +21,15 @@
 #include "mlir/Dialect/Math/IR/Math.h"
 #include <optional>
 
+namespace Fortran {
+namespace lower {
+// TODO: remove the usage of AbstractConverter to avoid making IntrinsicCall.cpp
+// depend upon Lower/Evaluate and use a data structure to pass options to
+// IntrinsicLibrary.
+class AbstractConverter;
+} // namespace lower
+} // namespace Fortran
+
 namespace fir {
 
 class StatementContext;
diff --git a/flang/lib/Optimizer/Builder/IntrinsicCall.cpp b/flang/lib/Optimizer/Builder/IntrinsicCall.cpp
index 4ba906dce4a13..73db17f7bf837 100644
--- a/flang/lib/Optimizer/Builder/IntrinsicCall.cpp
+++ b/flang/lib/Optimizer/Builder/IntrinsicCall.cpp
@@ -15,6 +15,7 @@
 
 #include "flang/Optimizer/Builder/IntrinsicCall.h"
 #include "flang/Common/static-multimap-view.h"
+#include "flang/Lower/AbstractConverter.h"
 #include "flang/Optimizer/Builder/BoxValue.h"
 #include "flang/Optimizer/Builder/CUDAIntrinsicCall.h"
 #include "flang/Optimizer/Builder/CUFCommon.h"
diff --git a/flang/lib/Optimizer/Builder/PPCIntrinsicCall.cpp b/flang/lib/Optimizer/Builder/PPCIntrinsicCall.cpp
index 265e268ab1b09..5a4e517c13ef5 100644
--- a/flang/lib/Optimizer/Builder/PPCIntrinsicCall.cpp
+++ b/flang/lib/Optimizer/Builder/PPCIntrinsicCall.cpp
@@ -15,6 +15,7 @@
 
 #include "flang/Optimizer/Builder/PPCIntrinsicCall.h"
 #include "flang/Evaluate/common.h"
+#include "flang/Lower/AbstractConverter.h"
 #include "flang/Optimizer/Builder/FIRBuilder.h"
 #include "flang/Optimizer/Builder/MutableBox.h"
 #include "mlir/Dialect/Index/IR/IndexOps.h"

``````````

</details>


https://github.com/llvm/llvm-project/pull/178150


More information about the flang-commits mailing list