-
Notifications
You must be signed in to change notification settings - Fork 13.2k
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
coverage: Defer part of counter-creation until codegen #136053
Conversation
Some changes occurred to MIR optimizations cc @rust-lang/wg-mir-opt |
4cb2f28
to
5b659d2
Compare
r? codegen |
☔ The latest upstream changes (presumably #136135) made this pull request unmergeable. Please resolve the merge conflicts. |
5b659d2
to
f19968b
Compare
Rebased to fix trivial conflict; no change. |
f19968b
to
3f4dc13
Compare
Tweaked some outdated comments (diff). |
This comment has been minimized.
This comment has been minimized.
3f4dc13
to
2ee7385
Compare
☔ The latest upstream changes (presumably #136613) made this pull request unmergeable. Please resolve the merge conflicts. |
Even though the coverage graph itself is no longer available during codegen, its nodes can still be used as opaque IDs.
2ee7385
to
bd855b6
Compare
Rebased to resolve conflict in |
@bors r+ rollup=iffy conflicty |
coverage: Defer part of counter-creation until codegen Follow-up to rust-lang#135481 and rust-lang#135873. One of the pleasant properties of the new counter-assignment algorithm is that we can stop partway through the process, store the intermediate state in MIR, and then resume the rest of the algorithm during codegen. This lets it take into account which parts of the control-flow graph were eliminated by MIR opts, resulting in fewer physical counters and simpler counter expressions. Those improvements end up completely obsoleting much larger chunks of code that were previously responsible for cleaning up the coverage metadata after MIR opts, while also doing a more thorough cleanup job. (That change also unlocks some further simplifications that I've kept out of this PR to limit its scope.)
…kingjubilee Rollup of 4 pull requests Successful merges: - rust-lang#133092 (Always set the deployment target when building std) - rust-lang#134626 (Add Four Codegen Tests) - rust-lang#136053 (coverage: Defer part of counter-creation until codegen) - rust-lang#136707 (Bump `cc` to v1.2.12 for the compiler workspace) r? `@ghost` `@rustbot` modify labels: rollup
coverage: Defer part of counter-creation until codegen Follow-up to rust-lang#135481 and rust-lang#135873. One of the pleasant properties of the new counter-assignment algorithm is that we can stop partway through the process, store the intermediate state in MIR, and then resume the rest of the algorithm during codegen. This lets it take into account which parts of the control-flow graph were eliminated by MIR opts, resulting in fewer physical counters and simpler counter expressions. Those improvements end up completely obsoleting much larger chunks of code that were previously responsible for cleaning up the coverage metadata after MIR opts, while also doing a more thorough cleanup job. (That change also unlocks some further simplifications that I've kept out of this PR to limit its scope.)
Rollup of 6 pull requests Successful merges: - rust-lang#134626 (Add Four Codegen Tests) - rust-lang#136053 (coverage: Defer part of counter-creation until codegen) - rust-lang#136228 (Simplify Rc::as_ptr docs + typo fix) - rust-lang#136487 (ci: stop mysql before removing it) - rust-lang#136790 (Git blame ignore recent formatting commit) - rust-lang#136803 (Subtree update of `rust-analyzer`) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 6 pull requests Successful merges: - rust-lang#134626 (Add Four Codegen Tests) - rust-lang#136053 (coverage: Defer part of counter-creation until codegen) - rust-lang#136228 (Simplify Rc::as_ptr docs + typo fix) - rust-lang#136487 (ci: stop mysql before removing it) - rust-lang#136790 (Git blame ignore recent formatting commit) - rust-lang#136803 (Subtree update of `rust-analyzer`) r? `@ghost` `@rustbot` modify labels: rollup
…kingjubilee Rollup of 12 pull requests Successful merges: - rust-lang#136053 (coverage: Defer part of counter-creation until codegen) - rust-lang#136201 (Removed dependency on the field-offset crate, alternate approach) - rust-lang#136228 (Simplify Rc::as_ptr docs + typo fix) - rust-lang#136353 (fix(libtest): Enable Instant on Emscripten targets) - rust-lang#136472 ([`compiletest`-related cleanups 2/7] Feed stage number to compiletest directly) - rust-lang#136487 (ci: stop mysql before removing it) - rust-lang#136552 (Use an `Option` for `FindNextFileHandle` in `ReadDir` instead of `INVALID_FILE_HANDLE` sentinel value) - rust-lang#136705 (Some miscellaneous edition-related library tweaks) - rust-lang#136707 (Bump `cc` to v1.2.13 for the compiler workspace) - rust-lang#136790 (Git blame ignore recent formatting commit) - rust-lang#136792 (Don't apply editorconfig to llvm) - rust-lang#136805 (ignore win_delete_self test in Miri) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#136053 - Zalathar:defer-counters, r=saethlin coverage: Defer part of counter-creation until codegen Follow-up to rust-lang#135481 and rust-lang#135873. One of the pleasant properties of the new counter-assignment algorithm is that we can stop partway through the process, store the intermediate state in MIR, and then resume the rest of the algorithm during codegen. This lets it take into account which parts of the control-flow graph were eliminated by MIR opts, resulting in fewer physical counters and simpler counter expressions. Those improvements end up completely obsoleting much larger chunks of code that were previously responsible for cleaning up the coverage metadata after MIR opts, while also doing a more thorough cleanup job. (That change also unlocks some further simplifications that I've kept out of this PR to limit its scope.)
Follow-up to #135481 and #135873.
One of the pleasant properties of the new counter-assignment algorithm is that we can stop partway through the process, store the intermediate state in MIR, and then resume the rest of the algorithm during codegen. This lets it take into account which parts of the control-flow graph were eliminated by MIR opts, resulting in fewer physical counters and simpler counter expressions.
Those improvements end up completely obsoleting much larger chunks of code that were previously responsible for cleaning up the coverage metadata after MIR opts, while also doing a more thorough cleanup job.
(That change also unlocks some further simplifications that I've kept out of this PR to limit its scope.)