Closed jimis closed 1 month ago
This is ready for review.
The weirdest thing happened while I was running the integration tests on my fork: The "clang" integration test failed (the last --stats
invocation showed 0 cache hits). Then I click "rerun failed tests" without changing anything and it passed (it then showed 2 cache hits).
Are the integration tests known to be flaky?
Are the integration tests known to be flaky?
yes, the cache might be full at time
Attention: Patch coverage is 50.00000%
with 8 lines
in your changes missing coverage. Please review.
Project coverage is 40.61%. Comparing base (
0cc0c62
) to head (b881869
). Report is 80 commits behind head on main.
Files with missing lines | Patch % | Lines |
---|---|---|
src/compiler/c.rs | 33.33% | 2 Missing and 6 partials :warning: |
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
nice easy fix, well done :)
When compiling with PCH enabled, it happens that some times object files end up with PCH content, or that .gch files end up with object code.
Simplest way to reproduce the problem:
$ touch empty.c $ gcc -c -o out1 empty.c $ gcc -x c-header -c -o out2 empty.c $ file out1 out2 out1: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped out2: GCC precompiled header (version 014) for C
The two files are different. But if we feed these compilations to sccache, they lead to the same result:
$ sccache gcc -c -o out3 empty.c $ sccache gcc -x c-header -c -o out4 empty.c $ file out3 out4 out3: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped out4: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
Same thing is reproducible with c++ compiler and -x c++-header argument.
The reason is that the hash string that identifies each command line is the same.
With this patch, compilation of C files is always differentiated from compilations of same C-Header files. And compilation of C++ files is always differentiated from compilations of same C++-Header files.
Fixes #1851.