Stuart Cook
544462ad8b
Rollup merge of #152474 - sgasho:opt-bisect-limit-mir, r=saethlin
...
Implement opt-bisect-limit for MIR
closes : rust-lang/rust#150910
Enable bisecting MIR optimization passes to enhance debuggability.
discussions on zulip: https://rust-lang.zulipchat.com/#narrow/channel/182449-t-compiler.2Fhelp/topic/MIR.20dump.20the.20pass.20names/with/573219207
### Check it works
#### Sample code
```rust
fn abs(num: isize) -> usize {
if num < 0 { -num as usize } else { num as usize }
}
fn main() {
println!("{}", abs(-10));
}
```
#### Output
```shell
rustc +mir -Zmir-opt-bisect-limit=30 src/main.rs
BISECT: running pass (1) CheckAlignment on main[89d5]::main
BISECT: running pass (2) CheckNull on main[89d5]::main
BISECT: running pass (3) CheckEnums on main[89d5]::main
BISECT: running pass (4) LowerSliceLenCalls on main[89d5]::main
BISECT: running pass (5) InstSimplify-before-inline on main[89d5]::main
BISECT: running pass (6) ForceInline on main[89d5]::main
BISECT: running pass (7) RemoveStorageMarkers on main[89d5]::main
BISECT: running pass (8) RemoveZsts on main[89d5]::main
BISECT: running pass (9) RemoveUnneededDrops on main[89d5]::main
BISECT: running pass (10) UnreachableEnumBranching on main[89d5]::main
BISECT: running pass (11) SimplifyCfg-after-unreachable-enum-branching on main[89d5]::main
BISECT: running pass (12) InstSimplify-after-simplifycfg on main[89d5]::main
BISECT: running pass (13) SimplifyConstCondition-after-inst-simplify on main[89d5]::main
BISECT: running pass (14) SimplifyLocals-before-const-prop on main[89d5]::main
BISECT: running pass (15) SimplifyLocals-after-value-numbering on main[89d5]::main
BISECT: running pass (16) MatchBranchSimplification on main[89d5]::main
BISECT: running pass (17) SingleUseConsts on main[89d5]::main
BISECT: running pass (18) SimplifyConstCondition-after-const-prop on main[89d5]::main
BISECT: running pass (19) SimplifyConstCondition-final on main[89d5]::main
BISECT: running pass (20) RemoveNoopLandingPads on main[89d5]::main
BISECT: running pass (21) SimplifyCfg-final on main[89d5]::main
BISECT: running pass (22) CopyProp on main[89d5]::main
BISECT: running pass (23) SimplifyLocals-final on main[89d5]::main
BISECT: running pass (24) AddCallGuards on main[89d5]::main
BISECT: running pass (25) PreCodegen on main[89d5]::main
BISECT: running pass (26) CheckAlignment on main[89d5]::abs
BISECT: running pass (27) CheckNull on main[89d5]::abs
BISECT: running pass (28) CheckEnums on main[89d5]::abs
BISECT: running pass (29) LowerSliceLenCalls on main[89d5]::abs
BISECT: running pass (30) InstSimplify-before-inline on main[89d5]::abs
BISECT: NOT running pass (31) ForceInline on main[89d5]::abs
BISECT: NOT running pass (32) RemoveStorageMarkers on main[89d5]::abs
BISECT: NOT running pass (33) RemoveZsts on main[89d5]::abs
BISECT: NOT running pass (34) RemoveUnneededDrops on main[89d5]::abs
BISECT: NOT running pass (35) UnreachableEnumBranching on main[89d5]::abs
BISECT: NOT running pass (36) SimplifyCfg-after-unreachable-enum-branching on main[89d5]::abs
BISECT: NOT running pass (37) InstSimplify-after-simplifycfg on main[89d5]::abs
BISECT: NOT running pass (38) SimplifyConstCondition-after-inst-simplify on main[89d5]::abs
BISECT: NOT running pass (39) SimplifyLocals-before-const-prop on main[89d5]::abs
BISECT: NOT running pass (40) SimplifyLocals-after-value-numbering on main[89d5]::abs
BISECT: NOT running pass (41) MatchBranchSimplification on main[89d5]::abs
BISECT: NOT running pass (42) SingleUseConsts on main[89d5]::abs
BISECT: NOT running pass (43) SimplifyConstCondition-after-const-prop on main[89d5]::abs
BISECT: NOT running pass (44) SimplifyConstCondition-final on main[89d5]::abs
BISECT: NOT running pass (45) RemoveNoopLandingPads on main[89d5]::abs
BISECT: NOT running pass (46) SimplifyCfg-final on main[89d5]::abs
BISECT: NOT running pass (47) CopyProp on main[89d5]::abs
BISECT: NOT running pass (48) SimplifyLocals-final on main[89d5]::abs
BISECT: NOT running pass (49) AddCallGuards on main[89d5]::abs
BISECT: NOT running pass (50) PreCodegen on main[89d5]::abs
```
r? @saethlin
2026-02-18 17:29:46 +11:00
..
2025-03-01 22:11:14 +01:00
2025-11-05 14:28:16 +00:00
2025-11-05 14:28:16 +00:00
2025-11-05 14:28:16 +00:00
2024-06-18 14:25:59 -04:00
2025-06-19 07:38:01 +08:00
2025-06-16 23:04:33 +00:00
2025-09-05 16:18:49 +02:00
2025-12-31 15:15:28 +00:00
2025-06-18 18:39:25 +08:00
2025-07-10 13:55:04 +08:00
2024-08-10 18:06:10 +00:00
2025-06-23 12:38:35 -07:00
2025-06-12 15:10:12 +02:00
2025-06-12 15:10:12 +02:00
2025-07-23 08:32:55 +02:00
2026-02-04 00:58:34 +09:00
2025-07-22 14:27:48 +02:00
2024-06-07 11:12:04 +02:00
2025-10-10 13:04:53 +00:00
2025-06-12 15:10:12 +02:00
2025-12-14 09:18:31 -05:00
2025-05-09 19:54:43 +08:00
2024-07-23 10:31:21 -04:00
2024-07-23 10:31:21 -04:00
2025-07-10 13:55:04 +08:00
2024-08-10 18:06:10 +00:00
2025-12-04 10:51:34 +01:00
2024-07-19 12:27:47 -04:00
2024-07-19 12:27:47 -04:00
2025-07-10 13:55:04 +08:00
2024-09-22 19:11:29 -04:00
2025-07-10 13:55:04 +08:00
2025-12-31 15:15:28 +00:00
2026-02-04 09:26:21 +08:00
2024-07-09 14:30:57 -04:00
2026-01-14 21:16:54 +01:00
2024-09-05 08:43:38 +00:00
2024-06-14 13:59:44 +02:00
2024-09-05 08:43:38 +00:00
2024-09-05 08:43:38 +00:00
2025-06-12 15:10:12 +02:00
2025-06-12 15:10:12 +02:00
2025-07-10 13:55:04 +08:00
2026-01-06 14:51:51 +08:00
2024-08-10 18:06:10 +00:00
2025-07-08 09:04:21 +00:00
2025-02-26 13:07:12 +01:00
2024-07-17 13:34:18 +00:00
2025-11-08 07:37:15 +01:00
2025-03-11 09:46:34 -07:00
2025-05-16 16:14:24 +02:00
2025-06-10 23:31:05 +08:00
2025-06-27 22:13:01 +02:00
2025-04-12 15:09:06 +08:00
2024-07-29 08:26:52 +10:00
2026-01-27 19:49:09 -04:00
2025-11-11 17:36:43 +01:00
2025-04-16 17:42:39 +00:00
2025-04-12 15:09:06 +08:00
2025-06-12 15:10:12 +02:00
2025-07-31 10:38:34 +02:00
2024-10-09 20:58:27 +11:00
2025-06-16 23:04:33 +00:00
2025-06-12 15:10:12 +02:00
2025-06-12 15:10:12 +02:00
2024-06-28 11:18:46 -04:00
2025-06-12 15:10:12 +02:00
2024-06-15 17:34:43 +02:00
2025-06-12 15:10:12 +02:00
2024-08-15 15:44:29 +02:00
2025-11-05 22:43:25 +01:00
2025-04-07 20:48:40 +00:00
2025-09-26 22:04:00 +02:00
2025-12-16 21:10:29 +09:00
2025-03-24 11:33:56 +01:00
2025-05-22 20:12:50 +02:00
2025-09-26 22:04:00 +02:00
2025-06-19 07:38:01 +08:00
2024-08-29 10:15:17 -04:00
2026-01-16 09:27:45 +08:00
2025-06-12 15:10:12 +02:00
2025-12-12 07:33:09 +01:00
2025-12-11 12:08:20 +01:00
2025-06-12 15:10:12 +02:00
2024-07-17 13:34:18 +00:00
2024-09-27 15:53:26 -07:00
2025-06-19 07:38:01 +08:00
2025-06-19 07:38:01 +08:00
2024-06-03 18:35:54 +00:00
2025-06-12 15:10:12 +02:00
2025-06-12 15:10:12 +02:00
2025-10-27 17:28:51 -07:00
2025-06-19 07:38:01 +08:00
2025-06-12 15:10:12 +02:00
2025-11-27 22:02:47 +01:00
2025-06-12 15:10:12 +02:00
2024-06-19 16:43:22 -04:00
2025-06-19 07:38:01 +08:00
2025-06-19 07:38:01 +08:00
2025-07-17 14:54:52 +08:00
2025-06-19 07:38:01 +08:00
2024-08-10 18:06:10 +00:00
2025-06-19 07:38:01 +08:00
2024-07-17 13:34:18 +00:00
2025-06-12 15:10:12 +02:00
2024-09-22 19:11:29 -04:00
2024-07-19 12:27:47 -04:00
2024-07-17 15:33:17 -04:00
2025-01-15 01:05:16 +08:00
2024-07-17 15:33:06 -04:00
2024-12-17 14:33:10 -08:00
2024-07-17 15:33:05 -04:00
2024-07-17 15:33:07 -04:00
2024-07-19 12:27:47 -04:00
2025-06-19 07:38:01 +08:00
2025-06-19 07:38:01 +08:00
2024-06-18 16:30:26 -04:00
2024-06-07 11:12:24 +02:00
2025-04-12 15:09:06 +08:00
2025-07-31 10:38:34 +02:00
2024-06-20 18:20:12 +02:00
2024-08-02 10:06:20 -04:00
2024-09-22 19:11:29 -04:00
2024-07-26 10:17:39 -04:00
2026-01-31 08:51:40 +00:00
2024-06-30 12:40:24 +02:00
2025-01-22 17:22:39 +01:00
2025-06-19 07:38:01 +08:00
2025-06-12 15:10:12 +02:00
2024-12-23 09:40:38 +00:00
2024-07-17 13:34:18 +00:00
2025-06-19 07:38:01 +08:00
2025-06-12 15:10:12 +02:00
2024-12-23 20:23:57 +08:00
2025-06-10 23:31:05 +08:00
2025-06-19 07:38:01 +08:00
2025-06-19 07:38:01 +08:00
2025-06-12 15:10:12 +02:00
2024-07-17 13:34:18 +00:00
2025-06-12 15:10:12 +02:00
2024-07-25 11:08:07 -04:00
2025-06-19 07:38:01 +08:00
2024-07-29 08:26:52 +10:00
2025-06-19 07:38:01 +08:00
2025-06-12 15:10:12 +02:00
2025-06-12 15:10:12 +02:00
2025-12-24 06:41:44 +00:00
2024-10-22 19:43:22 +08:00
2025-06-12 15:10:12 +02:00
2025-06-19 07:38:01 +08:00
2026-02-17 16:51:44 +00:00
2025-01-22 12:26:50 +08:00
2025-06-19 07:38:01 +08:00
2025-06-12 15:10:12 +02:00
2025-02-07 01:41:54 +08:00
2025-12-31 15:15:28 +00:00
2025-08-06 23:59:47 +00:00
2025-12-13 16:30:32 +09:00
2024-06-26 11:44:23 -04:00
2024-12-23 09:40:25 +00:00
2025-06-12 15:10:12 +02:00
2025-07-10 13:55:04 +08:00
2025-07-30 00:39:43 -04:00
2025-07-10 13:55:04 +08:00
2025-07-18 12:02:43 +00:00
2024-07-22 23:21:59 +02:00
2024-07-23 11:47:11 +02:00
2024-07-18 16:27:34 -04:00
2025-08-11 23:31:07 +02:00
2024-10-27 21:23:28 -04:00
2024-07-19 12:27:47 -04:00
2025-07-31 10:38:34 +02:00
2025-09-26 08:14:25 +02:00
2025-07-22 14:28:48 +02:00
2025-11-05 14:28:16 +00:00
2025-06-12 15:10:12 +02:00
2024-08-06 11:03:18 -04:00
2024-08-06 11:03:18 -04:00
2024-10-10 15:02:47 +01:00
2024-07-29 08:26:52 +10:00
2025-06-12 15:10:12 +02:00
2024-06-26 13:32:30 -04:00
2024-06-25 14:27:43 -04:00
2024-07-22 13:25:39 -04:00
2025-10-24 16:20:29 +02:00
2025-10-24 16:20:29 +02:00
2024-07-19 12:27:47 -04:00
2024-08-10 18:06:10 +00:00
2024-05-28 11:41:53 -04:00
2024-07-18 16:27:34 -04:00
2024-07-18 09:28:30 -04:00
2025-06-12 15:10:12 +02:00
2024-07-18 09:28:30 -04:00
2025-06-12 15:10:12 +02:00
2025-06-12 15:10:12 +02:00
2024-06-19 14:39:09 -04:00
2025-06-12 15:10:12 +02:00
2025-06-16 23:04:33 +00:00
2024-06-25 12:46:58 -04:00
2026-02-17 21:26:39 +09:00
2025-07-30 00:39:43 -04:00
2025-06-12 15:10:12 +02:00
2026-01-13 19:47:06 +00:00
2024-05-31 21:30:08 +10:00
2024-06-11 09:53:31 -04:00
2024-07-17 13:34:18 +00:00
2025-06-19 07:38:01 +08:00
2024-09-22 11:40:00 +02:00
2025-08-04 17:05:20 -07:00
2025-07-08 16:40:10 +08:00
2025-09-06 00:21:04 +02:00
2025-06-12 15:10:12 +02:00
2025-09-21 21:13:15 +02:00
2025-06-19 07:38:01 +08:00
2025-06-19 07:38:01 +08:00
2024-07-19 12:27:46 -04:00
2025-07-10 13:55:04 +08:00
2025-06-19 07:38:01 +08:00
2025-06-12 15:10:12 +02:00
2025-07-10 13:55:04 +08:00
2025-06-24 09:06:49 +00:00
2025-06-19 07:38:01 +08:00
2025-12-08 21:57:17 +08:00
2025-06-19 07:38:01 +08:00
2024-05-14 17:02:20 -04:00
2024-08-04 02:57:18 +00:00
2024-06-22 17:06:47 +00:00
2024-07-29 08:26:52 +10:00
2024-06-07 11:12:24 +02:00
2025-06-12 15:10:12 +02:00
2025-06-19 07:38:01 +08:00
2025-06-12 15:10:12 +02:00
2024-07-29 08:26:52 +10:00
2025-06-12 15:10:12 +02:00
2024-10-09 20:58:27 +11:00
2025-07-16 23:40:49 +08:00
2024-07-17 13:34:18 +00:00
2024-07-17 13:34:18 +00:00
2025-04-12 15:09:06 +08:00
2024-06-17 14:37:49 -04:00
2024-06-29 11:55:30 +02:00
2025-06-12 15:10:12 +02:00
2025-11-05 14:28:16 +00:00
2024-06-07 11:12:24 +02:00
2025-06-12 15:10:12 +02:00
2025-06-12 15:10:12 +02:00
2024-07-05 12:47:19 -04:00
2025-06-12 15:10:12 +02:00
2024-07-19 12:27:47 -04:00
2024-06-25 12:46:58 -04:00
2024-09-10 17:23:05 +02:00
2025-08-13 09:42:46 +08:00
2025-02-23 21:23:36 +08:00
2024-10-09 20:58:27 +11:00
2024-10-09 20:58:27 +11:00
2025-06-12 15:10:12 +02:00
2025-08-13 09:42:46 +08:00
2025-08-13 09:42:46 +08:00
2025-09-22 11:29:54 +01:00
2025-09-22 11:29:54 +01:00
2024-07-17 13:34:18 +00:00
2024-07-17 13:34:18 +00:00
2024-06-26 11:44:11 -04:00
2025-06-12 15:10:12 +02:00
2024-08-26 18:20:32 +08:00
2026-01-12 23:46:22 +01:00
2025-04-01 18:29:39 +02:00
2025-07-10 13:55:04 +08:00
2025-12-05 14:27:52 +11:00
2024-11-02 23:39:29 +11:00
2024-08-26 18:20:32 +08:00
2024-08-26 18:20:32 +08:00
2024-05-31 21:30:08 +10:00
2025-06-19 07:38:01 +08:00
2024-07-16 15:34:04 -04:00
2025-07-10 13:55:04 +08:00
2024-08-05 10:11:53 -04:00
2025-06-16 23:04:33 +00:00
2024-07-12 16:41:28 -04:00
2025-02-26 19:09:51 +01:00
2025-02-26 19:09:51 +01:00
2025-02-26 19:09:51 +01:00
2025-07-10 13:55:04 +08:00
2025-07-10 13:55:04 +08:00
2025-08-08 09:17:35 -07:00
2025-07-10 13:55:04 +08:00
2024-06-25 15:02:19 -04:00
2024-06-08 13:10:55 +02:00
2024-08-10 18:06:10 +00:00
2024-06-20 16:09:39 -04:00
2025-06-19 07:38:01 +08:00
2026-01-24 15:33:21 +01:00
2025-12-13 21:21:59 +01:00
2025-12-13 21:21:59 +01:00
2025-12-22 19:44:13 +01:00
2024-12-23 09:40:38 +00:00
2025-06-19 07:38:01 +08:00
2026-01-23 13:10:21 +05:30
2025-06-23 14:34:08 -07:00
2024-08-29 10:15:17 -04:00
2025-06-12 15:10:12 +02:00
2024-06-30 12:40:24 +02:00
2024-07-19 12:27:26 -04:00
2024-07-17 13:34:18 +00:00
2025-07-10 13:55:04 +08:00
2025-06-19 07:38:01 +08:00
2024-08-10 18:06:10 +00:00
2024-07-04 10:05:56 -04:00
2024-08-10 18:06:10 +00:00
2025-07-08 09:21:35 +00:00
2026-01-26 12:08:04 +00:00
2025-07-08 09:04:21 +00:00
2025-07-08 09:04:21 +00:00
2025-07-08 09:04:21 +00:00
2026-01-20 14:36:30 +01:00
2025-06-19 07:38:01 +08:00
2024-07-18 11:14:07 -04:00
2025-12-03 15:48:05 -05:00
2025-10-16 07:47:02 -04:00
2025-08-15 10:26:03 -07:00
2025-10-05 11:13:05 +02:00
2025-06-19 07:38:01 +08:00
2025-06-19 07:38:01 +08:00
2025-11-21 09:22:59 +00:00
2025-06-19 07:38:01 +08:00
2025-10-28 16:35:12 -07:00
2025-12-05 21:00:14 -07:00
2025-11-24 19:10:43 +01:00
2025-06-19 07:38:01 +08:00
2025-06-19 07:38:01 +08:00
2025-10-31 11:16:00 -07:00
2025-10-29 14:54:54 -07:00
2025-11-05 14:28:16 +00:00
2025-10-29 14:54:54 -07:00
2025-10-29 14:54:54 -07:00
2025-10-29 14:54:54 -07:00
2025-10-29 14:54:54 -07:00
2025-10-29 14:54:54 -07:00
2025-09-03 09:09:18 -07:00
2024-09-22 19:11:29 -04:00
2025-11-03 11:13:06 +01:00
2026-01-26 12:08:04 +00:00
2025-05-08 15:24:05 +02:00
2025-06-19 07:38:01 +08:00
2025-11-13 11:53:58 +01:00
2025-06-19 07:38:01 +08:00
2025-06-19 07:38:01 +08:00
2025-06-19 07:38:01 +08:00
2025-06-19 07:38:01 +08:00
2025-06-12 15:10:12 +02:00
2025-08-21 16:08:00 +07:00
2025-08-21 16:08:00 +07:00
2025-08-21 16:08:00 +07:00
2024-09-05 08:43:38 +00:00
2025-09-03 15:24:49 +02:00
2025-06-19 07:38:01 +08:00
2024-05-17 11:49:20 -04:00
2026-02-16 22:56:47 +11:00
2024-07-17 13:34:18 +00:00
2025-12-14 17:03:51 +01:00
2025-12-13 21:21:59 +01:00
2025-06-12 15:10:12 +02:00
2025-07-10 13:55:04 +08:00
2024-07-17 15:33:07 -04:00
2025-06-18 18:39:25 +08:00
2024-05-31 21:30:08 +10:00
2025-06-12 15:10:12 +02:00
2025-06-12 15:10:12 +02:00
2025-07-10 13:55:04 +08:00
2025-06-19 07:38:01 +08:00
2024-07-08 09:59:08 -04:00
2025-06-19 07:38:01 +08:00
2025-06-19 07:38:01 +08:00
2025-04-12 15:09:06 +08:00
2024-07-29 08:26:52 +10:00
2025-11-12 12:48:27 +01:00
2025-07-10 13:55:04 +08:00
2025-08-06 18:01:07 +00:00
2025-06-12 15:10:12 +02:00
2024-09-16 21:31:41 +08:00
2024-09-16 21:31:41 +08:00
2024-09-16 21:31:41 +08:00
2026-01-12 10:52:14 +01:00
2025-03-24 11:33:56 +01:00
2026-01-26 12:08:04 +00:00
2024-08-26 18:20:32 +08:00
2024-07-19 16:48:21 -04:00
2024-07-02 11:37:59 -04:00
2025-06-21 13:16:57 -07:00
2025-11-28 20:47:03 +01:00
2024-10-09 20:58:27 +11:00
2026-02-07 10:30:42 +01:00
2025-06-12 15:10:12 +02:00
2025-06-12 15:10:12 +02:00
2025-06-17 10:53:11 +08:00
2025-06-17 10:53:11 +08:00
2024-07-17 16:11:11 -04:00
2025-06-12 15:10:12 +02:00
2025-07-13 14:28:49 +08:00
2024-06-28 16:28:57 -04:00
2025-06-27 10:03:29 +00:00
2025-05-27 11:12:15 +02:00
2025-03-01 22:11:02 +01:00
2024-07-29 08:26:52 +10:00
2024-07-29 08:26:52 +10:00
2024-07-29 08:26:52 +10:00
2026-02-04 10:57:00 -08:00
2025-11-17 14:11:07 +11:00
2025-02-08 22:12:13 +00:00
2024-07-29 08:26:52 +10:00
2024-08-02 11:54:20 -04:00
2025-08-12 12:07:14 +02:00
2024-07-29 08:26:52 +10:00
2024-07-19 10:27:14 -07:00
2024-07-29 08:26:52 +10:00
2024-07-29 08:26:52 +10:00
2024-07-29 08:26:52 +10:00
2025-08-15 15:48:46 +03:00
2024-07-29 08:26:52 +10:00
2024-07-29 08:26:52 +10:00
2024-06-28 20:32:31 +03:00
2024-06-07 11:12:24 +02:00
2024-07-29 08:26:52 +10:00
2024-08-04 02:57:17 +00:00
2025-03-02 05:56:56 +08:00