Remove support for -Zprofile (gcov-style coverage instrumentation)#131829
Remove support for -Zprofile (gcov-style coverage instrumentation)#131829bors merged 1 commit intorust-lang:masterfrom
-Zprofile (gcov-style coverage instrumentation)#131829Conversation
|
r? @chenyukang rustbot has assigned @chenyukang. Use |
|
This PR modifies cc @jieyouxu |
c543244 to
ce3e14a
Compare
|
Rebased; MCP accepted. @rustbot ready |
|
@bors r+ rollup |
|
Technically this is unstable flag, but should this get compat relnotes still? |
…ukang Remove support for `-Zprofile` (gcov-style coverage instrumentation) Tracking issue: rust-lang#42524 MCP: rust-lang/compiler-team#798 --- This PR removes the unstable `-Zprofile` flag, which enables ”gcov-style” coverage instrumentation, along with its associated `-Zprofile-emit` configuration flag. (The profile flag predates and is almost entirely separate from the stable `-Cinstrument-coverage` flag.) Notably, the `-Zprofile` flag: - Is largely untested in-tree, having only one run-make test that does not check whether its output is correct or useful. - Has no known maintainer. - Has seen no push towards stabilization. - Has at least one severe regression reported in 2022 that apparently remains unaddressed. - rust-lang#100125 - Is confusingly named, since it appears to be more about coverage than performance profiling, and has nothing to do with PGO. - Is fundamentally limited by relying on counters auto-inserted by LLVM, with no knowledge of Rust beyond debuginfo.
|
Given the flag’s age and former importance (?), a mention in relnotes is probably warranted. I’ll try to come up with a suggested wording. |
|
@rustbot label +relnotes |
…iaskrgr Rollup of 6 pull requests Successful merges: - rust-lang#131829 (Remove support for `-Zprofile` (gcov-style coverage instrumentation)) - rust-lang#132341 (Reject raw lifetime followed by `'`, like regular lifetimes do) - rust-lang#132369 (style-guide: Only use the new binop heuristic for assignments) - rust-lang#132383 (Implement suggestion for never type fallback lints) - rust-lang#132437 (coverage: Regression test for inlining into an uninstrumented crate) - rust-lang#132438 (Remove unncessary option for default rust-analyzer setting) r? `@ghost` `@rustbot` modify labels: rollup
…ukang Remove support for `-Zprofile` (gcov-style coverage instrumentation) Tracking issue: rust-lang#42524 MCP: rust-lang/compiler-team#798 --- This PR removes the unstable `-Zprofile` flag, which enables ”gcov-style” coverage instrumentation, along with its associated `-Zprofile-emit` configuration flag. (The profile flag predates and is almost entirely separate from the stable `-Cinstrument-coverage` flag.) Notably, the `-Zprofile` flag: - Is largely untested in-tree, having only one run-make test that does not check whether its output is correct or useful. - Has no known maintainer. - Has seen no push towards stabilization. - Has at least one severe regression reported in 2022 that apparently remains unaddressed. - rust-lang#100125 - Is confusingly named, since it appears to be more about coverage than performance profiling, and has nothing to do with PGO. - Is fundamentally limited by relying on counters auto-inserted by LLVM, with no knowledge of Rust beyond debuginfo.
Rollup of 13 pull requests Successful merges: - rust-lang#131829 (Remove support for `-Zprofile` (gcov-style coverage instrumentation)) - rust-lang#132369 (style-guide: Only use the new binop heuristic for assignments) - rust-lang#132383 (Implement suggestion for never type fallback lints) - rust-lang#132437 (coverage: Regression test for inlining into an uninstrumented crate) - rust-lang#132438 (Remove unncessary option for default rust-analyzer setting) - rust-lang#132439 (Add `f16` and `f128` to `invalid_nan_comparison`) - rust-lang#132445 (Cleanup attributes around unchecked shifts and unchecked negation in const) - rust-lang#132448 (Add missing backtick) - rust-lang#132450 (Show actual MIR when MIR building forgot to terminate block) - rust-lang#132451 (remove some unnecessary rustc_allow_const_fn_unstable) - rust-lang#132455 (make const_alloc_layout feature gate only about functions that are already stable) - rust-lang#132456 (Move remaining inline assembly test files into asm directory) - rust-lang#132459 (feat(byte_sub_ptr): unstably add ptr::byte_sub_ptr) r? `@ghost` `@rustbot` modify labels: rollup
Support for -Zprofile has been removed: rust-lang/rust#131829
Support for -Zprofile has been removed: rust-lang/rust#131829
Support for -Zprofile has been removed in rust-lang/rust#131829
Support for -Zprofile has been removed in rust-lang/rust#131829
Support for -Zprofile has been removed in rust-lang/rust#131829
Support for -Zprofile has been removed in rust-lang/rust#131829
Support for -Zprofile has been removed: rust-lang/rust#131829
and use cargo-llvm-cov instead of grcov. Support for -Zprofile has been removed from Rust nightly: rust-lang/rust#131829
Support for -Zprofile has been removed in rust-lang/rust#131829
Support for -Zprofile has been removed in rust-lang/rust#131829
|
@Zalathar While not perfect, -Zprofile had advantages over the other option. Am I missing something? If not, would it be possible to reconsider this removal ? Thanks :) |
|
Agreed with @sylvestre, there are many users, and some large projects might have difficulties switching to source-based coverage as it can be more resource intensive. |
|
My understanding is that the "limitations" are coverage info that can be incorrect by a factor greater than 10, right? It's based on debuginfo, but either not in a way that seems to be very accurate for Rust code, or we are emitting debuginfo in a way that is not useful for it, right? |
Unfortunately, the existing code was causing real maintenance problems in other parts of the compiler, which was one of the reasons for removing it. |
|
To add, removal of (1) It uses a more accurate name (one that's not confusing like i.e.
|
|
It would also be nice if someone reported to LLVM about the storage usage being excessive. I feel it is doubtful they have done any optimizations on the profdata format's space usage. |
Tracking issue: #42524
MCP: rust-lang/compiler-team#798
This PR removes the unstable
-Zprofileflag, which enables ”gcov-style” coverage instrumentation, along with its associated-Zprofile-emitconfiguration flag.(The profile flag predates and is almost entirely separate from the stable
-Cinstrument-coverageflag.)Notably, the
-Zprofileflag:-Zprofile) at some point afternightly-2021-11-11#100125