Files
clang-p2996/flang/lib/Parser/CMakeLists.txt
Kajetan Puchalski d68c732473 [flang] Use precompiled headers in Frontend, Lower, Parser, Semantics and Evaluate (#131137)
Precompiling larger headers can save a lot of compile time across
various compilation units.

For the time being, disable precompiled headers for ccache builds on Windows
due to issues with reliably passing the appropriate options to ccache.

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@arm.com>
2025-04-30 11:46:57 +01:00

47 lines
814 B
CMake

add_flang_library(FortranParser
Fortran-parsers.cpp
char-buffer.cpp
char-block.cpp
char-set.cpp
characters.cpp
debug-parser.cpp
executable-parsers.cpp
expr-parsers.cpp
instrumented-parser.cpp
io-parsers.cpp
message.cpp
openacc-parsers.cpp
openmp-parsers.cpp
parse-tree.cpp
parsing.cpp
preprocessor.cpp
prescan.cpp
program-parsers.cpp
provenance.cpp
source.cpp
token-sequence.cpp
tools.cpp
unparse.cpp
user-state.cpp
LINK_LIBS
FortranSupport
LINK_COMPONENTS
Support
FrontendOpenACC
FrontendOpenMP
DEPENDS
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"]]
)