Skip to content

Commit 747ac7c

Browse files
committed
[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 <[email protected]>
1 parent 0e98817 commit 747ac7c

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

flang/lib/Lower/CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,14 @@ add_flang_library(FortranLower
7373
MLIRLLVMDialect
7474
MLIRSCFToControlFlow
7575
)
76+
77+
target_precompile_headers(FortranLower PRIVATE
78+
[["flang/Lower/ConvertExpr.h"]]
79+
[["flang/Lower/SymbolMap.h"]]
80+
[["flang/Lower/AbstractConverter.h"]]
81+
[["flang/Lower/IterationSpace.h"]]
82+
[["flang/Lower/CallInterface.h"]]
83+
[["flang/Lower/BoxAnalyzer.h"]]
84+
[["flang/Lower/PFTBuilder.h"]]
85+
[["flang/Lower/DirectivesCommon.h"]]
86+
)

flang/lib/Parser/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,11 @@ add_flang_library(FortranParser
3636
omp_gen
3737
acc_gen
3838
)
39+
40+
target_precompile_headers(FortranParser PRIVATE
41+
[["flang/Parser/parsing.h"]]
42+
[["flang/Parser/parse-tree.h"]]
43+
[["flang/Parser/provenance.h"]]
44+
[["flang/Parser/message.h"]]
45+
[["flang/Parser/parse-tree-visitor.h"]]
46+
)

flang/lib/Semantics/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,12 @@ add_flang_library(FortranSemantics
6464
FrontendOpenACC
6565
TargetParser
6666
)
67+
68+
target_precompile_headers(FortranSemantics PRIVATE
69+
[["flang/Semantics/semantics.h"]]
70+
[["flang/Semantics/type.h"]]
71+
[["flang/Semantics/openmp-modifiers.h"]]
72+
[["flang/Semantics/expression.h"]]
73+
[["flang/Semantics/tools.h"]]
74+
[["flang/Semantics/symbol.h"]]
75+
)

0 commit comments

Comments
 (0)