-
Notifications
You must be signed in to change notification settings - Fork 13.7k
Add a method to dump MIR in the middle of MIR building #144780
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
Conversation
rustbot has assigned @petrochenkov. Use |
I used this while debugging a loop match issue with @folkertdev. I figured it could be useful for others too in the future. |
self.coroutine.clone(), | ||
None, | ||
); | ||
//body.coverage_info_hi = self.coverage_info.clone().map(|b| b.into_done()); |
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.
The coverage info builder is not Clone and I'm not sure if we should implement Clone for it anyway..
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 it's fine to implement Clone for this, but maybe the people who implemented coverage think differently? cc @Zalathar
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.
Should be fine I think.
I have some other half-formed ideas about how to get the same result, but for this PR I don't mind just slapping #[derive(Clone)]
on a few data structures.
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've posted a draft PR at #145141 that shows how to avoid cloning the builder itself, by making the build method not consume self.
Feel free to incorporate it into this PR if you want, or we can merge it separately, whatever's more convenient for you.
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've added something like your PR except as a separate method to avoid extra allocations when not doing a dump.
r? mir |
This makes it easier to debug issues with MIR building by inserting dump_for_debugging calls around the suspected code responsible for the bad MIR.
2978c66
to
1662a75
Compare
Some changes occurred in coverage instrumentation. cc @Zalathar |
1662a75
to
7287b93
Compare
This comment has been minimized.
This comment has been minimized.
7287b93
to
695473a
Compare
@bors r+ |
Rollup of 16 pull requests Successful merges: - #137494 (libstd: init(): dup() subsequent /dev/nulls instead of opening them again) - #144541 (c-variadic: multiple ABIs in the same program for arm) - #144613 (aarch64-nintendo-switch-freestanding - Enable CPU features that are always available in a live system (crypto instructions, plus explicit NEON).) - #144780 (Add a method to dump MIR in the middle of MIR building) - #145137 (Consolidate panicking functions in `slice/index.rs`) - #145507 (Refactor attribute parsing to improve ergonomics and some diagnostics) - #145604 (Gate static closures behind a parser feature) - #145648 (Add two tidy dependency checks) - #145661 (update some s390x codegen tests) - #145672 (Instantiate higher-ranked binder with erased when checking `IntoIterator` predicate for query instability) - #145689 (Migrate `panic_unwind` to use `cfg_select!`) - #145700 (Handle `ReEarlyParam` in `type_name`.) - #145703 (Remove MIPS targets from CI LLVM platforms) - #145704 (ci: don't cleanup windows disk) - #145705 (remove an `as` cast in prefetch codegen) - #145712 (Update outdated link in bound region comments) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of #144780 - bjorn3:mir_build_debug, r=matthewjasper Add a method to dump MIR in the middle of MIR building This makes it easier to debug issues with MIR building by inserting dump_for_debugging calls around the suspected code responsible for the bad MIR.
Rollup of 16 pull requests Successful merges: - rust-lang/rust#137494 (libstd: init(): dup() subsequent /dev/nulls instead of opening them again) - rust-lang/rust#144541 (c-variadic: multiple ABIs in the same program for arm) - rust-lang/rust#144613 (aarch64-nintendo-switch-freestanding - Enable CPU features that are always available in a live system (crypto instructions, plus explicit NEON).) - rust-lang/rust#144780 (Add a method to dump MIR in the middle of MIR building) - rust-lang/rust#145137 (Consolidate panicking functions in `slice/index.rs`) - rust-lang/rust#145507 (Refactor attribute parsing to improve ergonomics and some diagnostics) - rust-lang/rust#145604 (Gate static closures behind a parser feature) - rust-lang/rust#145648 (Add two tidy dependency checks) - rust-lang/rust#145661 (update some s390x codegen tests) - rust-lang/rust#145672 (Instantiate higher-ranked binder with erased when checking `IntoIterator` predicate for query instability) - rust-lang/rust#145689 (Migrate `panic_unwind` to use `cfg_select!`) - rust-lang/rust#145700 (Handle `ReEarlyParam` in `type_name`.) - rust-lang/rust#145703 (Remove MIPS targets from CI LLVM platforms) - rust-lang/rust#145704 (ci: don't cleanup windows disk) - rust-lang/rust#145705 (remove an `as` cast in prefetch codegen) - rust-lang/rust#145712 (Update outdated link in bound region comments) r? `@ghost` `@rustbot` modify labels: rollup
This makes it easier to debug issues with MIR building by inserting dump_for_debugging calls around the suspected code responsible for the bad MIR.