Split apply_primary_terminator_effect - #160555
Conversation
This method currently does two things: it applies the effect, and also computes the edges. However: - Three of the four call sites don't use the edges. - Most analyses just return `terminator.edges()` unconditionally. This commit separates the edge computation into a new method, `get_terminator_edges()`. It defaults to `terminator.edges()`, which means that most analyses don't need to define it. And now edges are only obtained when they are needed (in `Forward::apply_effects_in_block`).
|
Some changes occurred to the CTFE machinery Some changes occurred to constck cc @fee1-dead Some changes occurred to MIR optimizations cc @rust-lang/wg-mir-opt |
|
@bors r+ |
…, r=cjgillot Split `apply_primary_terminator_effect` It currently does two distinct things, and it's a bit nicer it they are separated. Details in individual commits. r? @cjgillot
…, r=cjgillot Split `apply_primary_terminator_effect` It currently does two distinct things, and it's a bit nicer it they are separated. Details in individual commits. r? @cjgillot
…, r=cjgillot Split `apply_primary_terminator_effect` It currently does two distinct things, and it's a bit nicer it they are separated. Details in individual commits. r? @cjgillot
…, r=cjgillot Split `apply_primary_terminator_effect` It currently does two distinct things, and it's a bit nicer it they are separated. Details in individual commits. r? @cjgillot
…, r=cjgillot Split `apply_primary_terminator_effect` It currently does two distinct things, and it's a bit nicer it they are separated. Details in individual commits. r? @cjgillot
…uwer Rollup of 17 pull requests Successful merges: - #159530 (Cap socket send length to c_int::MAX on Apple targets) - #159506 (Allow associated const equality constraints with GCA) - #160006 (Account for desugaring in method call move errors) - #160415 (Split `aarch64-apple{,-macos-26}` => `aarch64-apple{,-macos-26}-{1,2}` jobs) - #160464 (fix: Check the fallback map before queueing child in `visible_parent_map` breadth-first search) - #160555 (Split `apply_primary_terminator_effect`) - #160592 (Suggest if-let chain continuation on unclosed delimiter) - #160600 (Avoid the std DLL copy alongside rustc) - #160156 (check_consts: exhaustively match on CastKind) - #160211 (Rename `#[unroll]` => `#[rustc_unroll]` to mitigate nameres ambiguity) - #160304 (Add tests for fixed new solver issues) - #160398 (rustc_abi: Add `LayoutData::is_variant_uninhabited` method) - #160546 (Update error message in documentation comments) - #160568 (Use `VisitorResult` helper macros) - #160571 (Add regression test for array type recovery in generic arguments) - #160588 (add a test showing polonius alpha is not a subset of datalog polonius) - #160617 (Add a suggestion to MissingUnsafeOnExtern diagnostic)
|
@rust-timer build cf26d9b |
This comment has been minimized.
This comment has been minimized.
|
Finished benchmarking commit (cf26d9b): comparison URL. Overall result: ✅ improvements - no action neededBenchmarking means the PR may be perf-sensitive. It's automatically marked not fit for rolling up. Overriding is possible but disadvised: it risks changing compiler perf. @bors rollup=never rustc-perf Instruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (primary -3.0%, secondary -2.2%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (secondary -4.3%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeThis perf run didn't have relevant results for this metric. Bootstrap: 458.35s -> 466.214s (1.72%) |
It currently does two distinct things, and it's a bit nicer it they are separated. Details in individual commits.
r? @cjgillot