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>
The LLVM Compiler Infrastructure ================================ This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments. LLVM is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt. Please see the documentation provided in docs/ for further assistance with LLVM, and in particular docs/GettingStarted.rst for getting started with LLVM and docs/README.txt for an overview of LLVM's documentation setup. If you are writing a package for LLVM, see docs/Packaging.rst for our suggestions.