New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stop listing .gcno
files as outputs when using LLVM coverage map format
#22132
Stop listing .gcno
files as outputs when using LLVM coverage map format
#22132
Conversation
Cc @c-mita |
@bazel-io flag |
@bazel-io fork 7.2.0 |
I'm pretty sure this will break something, at least internally; coverage flags in our toolchains are predicated on the presence of the "gcov_gcno_file" variable (although I don't think this is the case for Bazel's default toolchain), which is passed when these files are declared. I think more of a refactor is needed before a change like this can be made. |
What compromise can I make to get this over the finish line? I would really like this to get into 7.2.0, as it's a big source of cache misses for us. |
Basically, there needs to be another way of entering this branch https://cs.opensource.google/bazel/bazel/+/master:src/main/java/com/google/devtools/build/lib/rules/cpp/CompileBuildVariables.java;l=372 I am pretty sure the actual value doesn't matter and nobody depends on it, only its presence. |
So I can pass down an empty string when |
…rmat When using `--experimental_use_llvm_covmap`, no `.gcno` files are output. By listing them as outputs there is a mismatch between expected and actual outputs. Bazel will create these empty files after the action is run, but they non-deterministically get counted in the Action outputs, which can lead to cache misses on subsequent runs. Signed-off-by: Brentley Jones <github@brentleyjones.com>
60d17fe
to
c97ef77
Compare
@c-mita I made a change. LMK what you think. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is "fine".
We should probably simplify things and remove the passing around of the, possibly null, gcnoFile
Artifact since, AFAICT, the actual value of this variable isn't important. But that's a riskier change that I can follow up on later.
We should also probably rename the variable in the future (another round of fun) and actually document it.
…e map format When using `--experimental_use_llvm_covmap`, no `.gcno` files are output. By listing them as outputs there is a mismatch between expected and actual outputs. Bazel will create these empty files after the action is run, but they non-deterministically get counted in the `Action` outputs, which can lead to cache misses on subsequent runs. Closes bazelbuild#22132. PiperOrigin-RevId: 630996820 Change-Id: Ia7de7a05305095c8befee4f86181cf84d9737814
…e map format (#22275) When using `--experimental_use_llvm_covmap`, no `.gcno` files are output. By listing them as outputs there is a mismatch between expected and actual outputs. Bazel will create these empty files after the action is run, but they non-deterministically get counted in the `Action` outputs, which can lead to cache misses on subsequent runs. Closes #22132. PiperOrigin-RevId: 630996820 Change-Id: Ia7de7a05305095c8befee4f86181cf84d9737814 Co-authored-by: Brentley Jones <github@brentleyjones.com>
…rmat When using `--experimental_use_llvm_covmap`, no `.gcno` files are output. By listing them as outputs there is a mismatch between expected and actual outputs. Bazel will create these empty files after the action is run, but they non-deterministically get counted in the `Action` outputs, which can lead to cache misses on subsequent runs. Closes bazelbuild#22132. PiperOrigin-RevId: 630996820 Change-Id: Ia7de7a05305095c8befee4f86181cf84d9737814
When using
--experimental_use_llvm_covmap
, no.gcno
files are output. By listing them as outputs there is a mismatch between expected and actual outputs. Bazel will create these empty files after the action is run, but they non-deterministically get counted in theAction
outputs, which can lead to cache misses on subsequent runs.