-
Notifications
You must be signed in to change notification settings - Fork 14.8k
Description
As has been reported for a long time (probably since the LLVM 14 release cycle when the runtimes build was first made the reltest.sh
default), building with -DLLVM_ENABLE_RUNTIMES=compiler-rt
(which is the default these days) misses a large number of compiler-rt
tests that are run with -DLLVM_ENABLE_PROJECTS=compiler-rt
. The issue came up again in Issue #71971 and has apparently never been noticed during the development of the runtimes build (which doesn't speak particularly highly for the diligence of the testing at that point) and completely ignored despite the release tester reports since, massively reducing compiler-rt
test coverage and missing all sorts of issues in new patches that would be noticed immedidately otherwise.
To provide detail, I've now run two x86_64-pc-linux-gnu
builds, one projects build and one runtimes build. Here are the differences in overall test results from just that change (which should be a no-op for test results):
-Total Discovered Tests: 110511
- Skipped : 84 (0.08%)
- Unsupported : 3723 (3.37%)
- Passed : 106411 (96.29%)
- Expectedly Failed: 292 (0.26%)
+Total Discovered Tests: 107217
+ Skipped : 48 (0.04%)
+ Unsupported : 3591 (3.35%)
+ Passed : 103287 (96.33%)
+ Expectedly Failed: 290 (0.27%)
Failed : 1 (0.00%)
As one can see, more than 3200 tests are no longer run in a runtimes build. I've then extracted the names of the tests run from both build's ninja check-all
output. Here are the test categrories that are missing in the runtimes build:
836 AddressSanitizer-Unit
3 Builtins
215 Builtins-i386-linux
215 Builtins-x86_64-linux
70 GwpAsan-Unittest
12 Interception-Unit
58 LLVMFuzzer-Unittest
194 SanitizerCommon-Unit
275 ScudoStandalone-Unit
275 ScudoStandalone-Unit-GwpAsanTorture
79 ThreadSanitizer-Unit
15 XRay-x86_64-linux 15 out of 29 tests turn UNSUPPORTED
In most cases, all tests from a category are missing, while for the xray
tests about half of the tests changed from PASS
to UNSUPPORTED
.
I then looked for the missing tests: in the case of builtins
, the lit.*
files that controlled the tests used to live in
-test/builtins/lit.site.cfg.py
-test/builtins/Unit/I386LinuxConfig/lit.site.cfg.py
-test/builtins/Unit/X86_64LinuxConfig/lit.site.cfg.py
while they are now missing completely: they are neither present in runtimes-bins
nor in builtins-bins
where they should be after splitting the object directories for builtins
from the rest of compiler-rt
. Without the lit.*
files, it's no wonder the builtins
tests aren't run at all.
For the other missing tests, the lit.*
files are present, but I don't yet see why the tests aren't run.