[flang-commits] [flang] [flang] Use precompiled headers in Lower, Parser, Semantics and Evaluate (PR #131137)
Kajetan Puchalski via flang-commits
flang-commits at lists.llvm.org
Tue Apr 8 07:41:03 PDT 2025
https://github.com/mrkajetanp updated https://github.com/llvm/llvm-project/pull/131137
>From 747ac7ce3a63bdaac8e646645f971b9861709830 Mon Sep 17 00:00:00 2001
From: Kajetan Puchalski <kajetan.puchalski at arm.com>
Date: Mon, 10 Mar 2025 18:18:09 +0000
Subject: [PATCH 1/3] [flang] Use precompiled headers in Lower, Parser and
Semantics
Precompiling larger headers can save a lot of compile time across
various compilation units.
Selected compile time & memory improvements are as follows:
flang/lib/Parser/Fortran-parsers.cpp:
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:47.31 -> 0:41.68
Maximum resident set size (kbytes): 2062140 -> 1745584
flang/lib/Lower/Bridge.cpp:
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:19.16 -> 0:45.86
Maximum resident set size (kbytes): 3849144 -> 2443476
flang/lib/Lower/PFTBuilder.cpp
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:29.24 -> 1:00.99
Maximum resident set size (kbytes): 4218368 -> 2923128
flang/lib/Lower/Allocatable.cpp
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:53.03 -> 0:22.50
Maximum resident set size (kbytes): 3092840 -> 2116908
flang/lib/Semantics/Semantics.cpp
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:18.75 -> 1:00.20
Maximum resident set size (kbytes): 3527744 -> 2545308
While the newly added precompiled headers are as follows:
Parser:
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:09.62
Maximum resident set size (kbytes): 1034608
Lower:
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:41.33
Maximum resident set size (kbytes): 3615240
Semantics:
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.69
Maximum resident set size (kbytes): 2403776
Signed-off-by: Kajetan Puchalski <kajetan.puchalski at arm.com>
---
flang/lib/Lower/CMakeLists.txt | 11 +++++++++++
flang/lib/Parser/CMakeLists.txt | 8 ++++++++
flang/lib/Semantics/CMakeLists.txt | 9 +++++++++
3 files changed, 28 insertions(+)
diff --git a/flang/lib/Lower/CMakeLists.txt b/flang/lib/Lower/CMakeLists.txt
index 0bd9a47cd040f..bc817ff8f1f3e 100644
--- a/flang/lib/Lower/CMakeLists.txt
+++ b/flang/lib/Lower/CMakeLists.txt
@@ -73,3 +73,14 @@ add_flang_library(FortranLower
MLIRLLVMDialect
MLIRSCFToControlFlow
)
+
+target_precompile_headers(FortranLower PRIVATE
+ [["flang/Lower/ConvertExpr.h"]]
+ [["flang/Lower/SymbolMap.h"]]
+ [["flang/Lower/AbstractConverter.h"]]
+ [["flang/Lower/IterationSpace.h"]]
+ [["flang/Lower/CallInterface.h"]]
+ [["flang/Lower/BoxAnalyzer.h"]]
+ [["flang/Lower/PFTBuilder.h"]]
+ [["flang/Lower/DirectivesCommon.h"]]
+)
diff --git a/flang/lib/Parser/CMakeLists.txt b/flang/lib/Parser/CMakeLists.txt
index 76fe3d7ce6ba4..1855b8a841ba7 100644
--- a/flang/lib/Parser/CMakeLists.txt
+++ b/flang/lib/Parser/CMakeLists.txt
@@ -36,3 +36,11 @@ add_flang_library(FortranParser
omp_gen
acc_gen
)
+
+target_precompile_headers(FortranParser PRIVATE
+ [["flang/Parser/parsing.h"]]
+ [["flang/Parser/parse-tree.h"]]
+ [["flang/Parser/provenance.h"]]
+ [["flang/Parser/message.h"]]
+ [["flang/Parser/parse-tree-visitor.h"]]
+)
diff --git a/flang/lib/Semantics/CMakeLists.txt b/flang/lib/Semantics/CMakeLists.txt
index 93bf0c7c5facd..bd8cc47365f06 100644
--- a/flang/lib/Semantics/CMakeLists.txt
+++ b/flang/lib/Semantics/CMakeLists.txt
@@ -64,3 +64,12 @@ add_flang_library(FortranSemantics
FrontendOpenACC
TargetParser
)
+
+target_precompile_headers(FortranSemantics PRIVATE
+ [["flang/Semantics/semantics.h"]]
+ [["flang/Semantics/type.h"]]
+ [["flang/Semantics/openmp-modifiers.h"]]
+ [["flang/Semantics/expression.h"]]
+ [["flang/Semantics/tools.h"]]
+ [["flang/Semantics/symbol.h"]]
+)
>From 71049edbbc481b7e0a67865e03376d14f857c303 Mon Sep 17 00:00:00 2001
From: Kajetan Puchalski <kajetan.puchalski at arm.com>
Date: Thu, 13 Mar 2025 16:46:59 +0000
Subject: [PATCH 2/3] [flang] Use precompiled headers in Evaluate
flang/lib/Evaluate/check-expression.cpp:
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:11.91 -> 1:02.29
Maximum resident set size (kbytes): 2710788 -> 2414740
Similar improvements for other compilation units under Evaluate.
cmake_pch.hxx.cxx compilation time:
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:13.93
Maximum resident set size (kbytes): 1492744
Signed-off-by: Kajetan Puchalski <kajetan.puchalski at arm.com>
---
flang/lib/Evaluate/CMakeLists.txt | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/flang/lib/Evaluate/CMakeLists.txt b/flang/lib/Evaluate/CMakeLists.txt
index 7eb8ff934af46..24a1c9004bc3b 100644
--- a/flang/lib/Evaluate/CMakeLists.txt
+++ b/flang/lib/Evaluate/CMakeLists.txt
@@ -73,3 +73,17 @@ add_flang_library(FortranEvaluate
acc_gen
omp_gen
)
+
+target_precompile_headers(FortranEvaluate PRIVATE
+ [["flang/Evaluate/common.h"]]
+ [["flang/Evaluate/call.h"]]
+ [["flang/Evaluate/traverse.h"]]
+ [["flang/Evaluate/shape.h"]]
+ [["flang/Evaluate/characteristics.h"]]
+ [["flang/Evaluate/variable.h"]]
+ [["flang/Evaluate/real.h"]]
+ [["flang/Evaluate/type.h"]]
+ [["flang/Evaluate/integer.h"]]
+ [["flang/Evaluate/expression.h"]]
+ [["flang/Evaluate/tools.h"]]
+)
>From 5c706ec71020b93d8aea9fa3130feabd57875bf6 Mon Sep 17 00:00:00 2001
From: Kajetan Puchalski <kajetan.puchalski at arm.com>
Date: Tue, 8 Apr 2025 14:39:10 +0000
Subject: [PATCH 3/3] [flang] Use precompiled headers in Frontend
Reland of #130600 which was reverted on account of waiting for required
ccache compatibility fixes.
Signed-off-by: Kajetan Puchalski <kajetan.puchalski at arm.com>
---
flang/lib/Frontend/CMakeLists.txt | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/flang/lib/Frontend/CMakeLists.txt b/flang/lib/Frontend/CMakeLists.txt
index c80373799b015..e8a098613e26f 100644
--- a/flang/lib/Frontend/CMakeLists.txt
+++ b/flang/lib/Frontend/CMakeLists.txt
@@ -72,3 +72,11 @@ add_flang_library(flangFrontend
clangBasic
clangDriver
)
+
+target_precompile_headers(flangFrontend PRIVATE
+ [["flang/Parser/parsing.h"]]
+ [["flang/Parser/parse-tree.h"]]
+ [["flang/Parser/dump-parse-tree.h"]]
+ [["flang/Lower/PFTBuilder.h"]]
+ [["flang/Lower/Bridge.h"]]
+)
More information about the flang-commits
mailing list