gcc: avoid excessive stat calls (#30005)
For about a decade GCC has an option `-f[no]-canonical-system-headers` which basically runs `realpath` on all "system headers", to possibly reduce the length of paths in diagnostics. [1] Spack usually installs the "system headers" of GCC in very deeply nested directories. Calling `realpath` there results in stat calls on every level, for every header file. On some slow filesystem I have, `-fno-canonical-system-headers` gives about 5x speedup to compile hello world in C, meaning that ./configure scripts would be much faster when using this flag by default. [1] https://codereview.appspot.com/6495088
This commit is contained in:
parent
03a7643816
commit
b0c8affbd9
@ -523,6 +523,11 @@ def configure_args(self):
|
|||||||
'--disable-nls'
|
'--disable-nls'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Avoid excessive realpath/stat calls for every system header
|
||||||
|
# by making -fno-canonical-system-headers the default.
|
||||||
|
if self.version >= Version('4.8.0'):
|
||||||
|
options.append('--disable-canonical-system-headers')
|
||||||
|
|
||||||
# Use installed libz
|
# Use installed libz
|
||||||
if self.version >= Version('6'):
|
if self.version >= Version('6'):
|
||||||
options.append('--with-system-zlib')
|
options.append('--with-system-zlib')
|
||||||
|
Loading…
Reference in New Issue
Block a user