[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:25 PST 2026


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

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.

>From d3b09db1513a4420f608f30924fd0a33210bd3b3 Mon Sep 17 00:00:00 2001
From: Jean Perier <jperier at nvidia.com>
Date: Tue, 27 Jan 2026 02:08:41 -0800
Subject: [PATCH] [flang] remove AbstractConverter.h include from
 IntrinsicCall.h

---
 flang/include/flang/Optimizer/Builder/IntrinsicCall.h | 10 +++++++++-
 flang/lib/Optimizer/Builder/IntrinsicCall.cpp         |  1 +
 flang/lib/Optimizer/Builder/PPCIntrinsicCall.cpp      |  1 +
 3 files changed, 11 insertions(+), 1 deletion(-)

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"



More information about the flang-commits mailing list