rust/tests/mir-opt
bors 8bf5a8d12f Auto merge of #132833 - est31:stabilize_let_chains, r=fee1-dead
Stabilize let chains in the 2024 edition

# Stabilization report

This proposes the stabilization of `let_chains` ([tracking issue], [RFC 2497]) in the [2024 edition] of Rust.

[tracking issue]: https://github.com/rust-lang/rust/issues/53667
[RFC 2497]: https://github.com/rust-lang/rfcs/pull/2497
[2024 edition]: https://doc.rust-lang.org/nightly/edition-guide/rust-2024/index.html

## What is being stabilized

The ability to `&&`-chain `let` statements inside `if` and `while` is being stabilized, allowing intermixture with boolean expressions. The patterns inside the `let` sub-expressions can be irrefutable or refutable.

```Rust
struct FnCall<'a> {
    fn_name: &'a str,
    args: Vec<i32>,
}

fn is_legal_ident(s: &str) -> bool {
    s.chars()
        .all(|c| ('a'..='z').contains(&c) || ('A'..='Z').contains(&c))
}

impl<'a> FnCall<'a> {
    fn parse(s: &'a str) -> Option<Self> {
        if let Some((fn_name, after_name)) = s.split_once("(")
            && !fn_name.is_empty()
            && is_legal_ident(fn_name)
            && let Some((args_str, "")) = after_name.rsplit_once(")")
        {
            let args = args_str
                .split(',')
                .map(|arg| arg.parse())
                .collect::<Result<Vec<_>, _>>();
            args.ok().map(|args| FnCall { fn_name, args })
        } else {
            None
        }
    }
    fn exec(&self) -> Option<i32> {
        let iter = self.args.iter().copied();
        match self.fn_name {
            "sum" => Some(iter.sum()),
            "max" => iter.max(),
            "min" => iter.min(),
            _ => None,
        }
    }
}

fn main() {
    println!("{:?}", FnCall::parse("sum(1,2,3)").unwrap().exec());
    println!("{:?}", FnCall::parse("max(4,5)").unwrap().exec());
}
```

The feature will only be stabilized for the 2024 edition and future editions. Users of past editions will get an error with a hint to update the edition.

closes #53667

## Why 2024 edition?

Rust generally tries to ship new features to all editions. So even the oldest editions receive the newest features. However, sometimes a feature requires a breaking change so much that offering the feature without the breaking change makes no sense. This occurs rarely, but has happened in the 2018 edition already with `async` and `await` syntax. It required an edition boundary in order for `async`/`await` to become keywords, and the entire feature foots on those keywords.

In the instance of let chains, the issue is the drop order of `if let` chains. If we want `if let` chains to be compatible with `if let`, drop order makes it hard for us to [generate correct MIR]. It would be strange to have different behaviour for `if let ... {}` and `if true && let ... {}`. So it's better to [stay consistent with `if let`].

In edition 2024, [drop order changes] have been introduced to make `if let` temporaries be lived more shortly. These changes also affected `if let` chains. These changes make sense even if you don't take the `if let` chains MIR generation problem into account. But if we want to use them as the solution to the MIR generation problem, we need to restrict let chains to edition 2024 and beyond: for let chains, it's not just a change towards more sensible behaviour, but one required for correct function.

[generate correct MIR]: https://github.com/rust-lang/rust/issues/104843
[stay consistent with `if let`]: https://github.com/rust-lang/rust/pull/103293#issuecomment-1293408574
[drop order changes]: https://github.com/rust-lang/rust/issues/124085

## Introduction considerations

As edition 2024 is very new, this stabilization PR only makes it possible to use let chains on 2024 without that feature gate, it doesn't mark that feature gate as stable/removed. I would propose to continue offering the `let_chains` feature (behind a feature gate) for a limited time (maybe 3 months after stabilization?) on older editions to allow nightly users to adopt edition 2024 at their own pace. After that, the feature gate shall be marked as *stabilized*, not removed, and replaced by an error on editions 2021 and below.

## Implementation history

* History from before March 14, 2022 can be found in the [original stabilization PR] that was reverted.
* https://github.com/rust-lang/rust/pull/94927
* https://github.com/rust-lang/rust/pull/94951
* https://github.com/rust-lang/rust/pull/94974
* https://github.com/rust-lang/rust/pull/95008
* https://github.com/rust-lang/rust/pull/97295
* https://github.com/rust-lang/rust/pull/98633
* https://github.com/rust-lang/rust/pull/99731
* https://github.com/rust-lang/rust/pull/102394
* https://github.com/rust-lang/rust/pull/100526
* https://github.com/rust-lang/rust/pull/100538
* https://github.com/rust-lang/rust/pull/102998
* https://github.com/rust-lang/rust/pull/103405
* https://github.com/rust-lang/rust/pull/103293
* https://github.com/rust-lang/rust/pull/107251
* https://github.com/rust-lang/rust/pull/110568
* https://github.com/rust-lang/rust/pull/115677
* https://github.com/rust-lang/rust/pull/117743
* https://github.com/rust-lang/rust/pull/117770
* https://github.com/rust-lang/rust/pull/118191
* https://github.com/rust-lang/rust/pull/119554
* https://github.com/rust-lang/rust/pull/129394
* https://github.com/rust-lang/rust/pull/132828
* https://github.com/rust-lang/reference/pull/1179
* https://github.com/rust-lang/reference/pull/1251
* https://github.com/rust-lang/rustfmt/pull/5910

[original stabilization PR]: https://github.com/rust-lang/rust/pull/94927

## Adoption history

### In the compiler

* History before March 14, 2022 can be found in the [original stabilization PR].
* https://github.com/rust-lang/rust/pull/115983
* https://github.com/rust-lang/rust/pull/116549
* https://github.com/rust-lang/rust/pull/116688

### Outside of the compiler

* https://github.com/rust-lang/rust-clippy/pull/11750
* [rspack](https://github.com/web-infra-dev/rspack)
* [risingwave](https://github.com/risingwavelabs/risingwave)
* [dylint](https://github.com/trailofbits/dylint)
* [convex-backend](https://github.com/get-convex/convex-backend)
* [tikv](https://github.com/tikv/tikv)
* [Daft](https://github.com/Eventual-Inc/Daft)
* [greptimedb](https://github.com/GreptimeTeam/greptimedb)

## Tests

<details>

### Intentional restrictions

[`partially-macro-expanded.rs`](4adafcf40a/tests/ui/rfcs/rfc-2294-if-let-guard/partially-macro-expanded.rs), [`macro-expanded.rs`](4adafcf40a/tests/ui/rfcs/rfc-2294-if-let-guard/macro-expanded.rs): it is possible to use macros to expand to both the pattern and the expression inside a let chain, but not to the entire `let pat = expr` operand.
[`parens.rs`](4adafcf40a/tests/ui/rfcs/rfc-2294-if-let-guard/parens.rs): `if (let pat = expr)` is not allowed in chains
[`ensure-that-let-else-does-not-interact-with-let-chains.rs`](4adafcf40a/tests/ui/rfcs/rfc-2497-if-let-chains/ensure-that-let-else-does-not-interact-with-let-chains.rs): `let...else` doesn't support chaining.

### Overlap with match guards

[`move-guard-if-let-chain.rs`](4adafcf40a/tests/ui/rfcs/rfc-2294-if-let-guard/move-guard-if-let-chain.rs): test for the `use moved value` error working well in match guards. could maybe be extended with let chains that have more than one `let`
[`shadowing.rs`](4adafcf40a/tests/ui/rfcs/rfc-2294-if-let-guard/shadowing.rs): shadowing in if let guards works as expected
[`ast-validate-guards.rs`](4adafcf40a/tests/ui/rfcs/rfc-2497-if-let-chains/ast-validate-guards.rs): let chains in match guards require the match guards feature gate

### Simple cases from the early days

PR #88642 has added some tests with very simple usages of `let else`, mostly as regression tests to early bugs.

[`then-else-blocks.rs`](4adafcf40a/tests/ui/rfcs/rfc-2497-if-let-chains/then-else-blocks.rs)
[`ast-lowering-does-not-wrap-let-chains.rs`](4adafcf40a/tests/ui/rfcs/rfc-2497-if-let-chains/ast-lowering-does-not-wrap-let-chains.rs)
[`issue-90722.rs`](4adafcf40a/tests/ui/rfcs/rfc-2497-if-let-chains/issue-90722.rs)
[`issue-92145.rs`](4adafcf40a/tests/ui/rfcs/rfc-2497-if-let-chains/issue-92145.rs)

### Drop order/MIR scoping tests

[`issue-100276.rs`](4adafcf40a/tests/ui/drop/issue-100276.rs): let expressions on RHS aren't terminating scopes
[`drop_order.rs`](4adafcf40a/tests/ui/drop/drop_order.rs): exhaustive temporary drop order test for various Rust constructs, including let chains
[`scope.rs`](4adafcf40a/tests/ui/rfcs/rfc-2294-if-let-guard/scope.rs): match guard scoping test
[`drop-scope.rs`](4adafcf40a/tests/ui/rfcs/rfc-2294-if-let-guard/drop-scope.rs): another match guard scoping test, ensuring that temporaries in if-let guards live for the arm
[`drop_order_if_let_rescope.rs`](4adafcf40a/tests/ui/drop/drop_order_if_let_rescope.rs): if let rescoping on edition 2024, including chains
[`mir_let_chains_drop_order.rs`](4adafcf40a/tests/ui/mir/mir_let_chains_drop_order.rs): comprehensive drop order test for let chains, distinguishes editions 2021 and 2024.
[`issue-99938.rs`](4adafcf40a/tests/ui/rfcs/rfc-2497-if-let-chains/issue-99938.rs), [`issue-99852.rs`](4adafcf40a/tests/ui/mir/issue-99852.rs) both bad MIR ICEs fixed by #102394

### Linting

[`irrefutable-lets.rs`](4adafcf40a/tests/ui/rfcs/rfc-2497-if-let-chains/irrefutable-lets.rs): trailing and leading irrefutable let patterns get linted for, others don't. The lint is turned off for `else if`.
[`issue-121070-let-range.rs`](4adafcf40a/tests/ui/lint/issue-121070-let-range.rs): regression test for false positive of the unused parens lint, precedence requires the `()`s here

### Parser: intentional restrictions

[`disallowed-positions.rs`](2128d8df0e/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.rs): `let` in expression context is rejected everywhere except at the top level
[`invalid-let-in-a-valid-let-context.rs`](4adafcf40a/tests/ui/rfcs/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.rs): nested `let` is not allowed (let's are no legal expressions just because they are allowed in `if` and `while`).

### Parser: recovery

[`issue-103381.rs`](4adafcf40a/tests/ui/parser/issues/issue-103381.rs): Graceful recovery of incorrect chaining of `if` and `if let`
[`semi-in-let-chain.rs`](4adafcf40a/tests/ui/parser/semi-in-let-chain.rs): Ensure that stray `;`s in let chains give nice errors (`if_chain!` users might be accustomed to `;`s)
[`deli-ident-issue-1.rs`](4adafcf40a/tests/ui/parser/deli-ident-issue-1.rs), [`brace-in-let-chain.rs`](4adafcf40a/tests/ui/parser/brace-in-let-chain.rs): Ensure that stray unclosed `{`s in let chains give nice errors and hints

### Misc

[`conflicting_bindings.rs`](4adafcf40a/tests/ui/pattern/usefulness/conflicting_bindings.rs): the conflicting bindings check also works in let chains. Personally, I'd extend it to chains with multiple let's as well.
[`let-chains-attr.rs`](4adafcf40a/tests/ui/expr/if/attrs/let-chains-attr.rs): attributes work on let chains

### Tangential tests with `#![feature(let_chains)]`

[`if-let.rs`](4adafcf40a/tests/coverage/branch/if-let.rs): MC/DC coverage tests for let chains
[`logical_or_in_conditional.rs`](4adafcf40a/tests/mir-opt/building/logical_or_in_conditional.rs): not really about let chains, more about dropping/scoping behaviour of `||`
[`stringify.rs`](4adafcf40a/tests/ui/macros/stringify.rs): exhaustive test of the `stringify` macro
[`expanded-interpolation.rs`](4adafcf40a/tests/ui/unpretty/expanded-interpolation.rs), [`expanded-exhaustive.rs`](4adafcf40a/tests/ui/unpretty/expanded-exhaustive.rs): Exhaustive test of `-Zunpretty`
[`diverges-not.rs`](4adafcf40a/tests/ui/rfcs/rfc-0000-never_patterns/diverges-not.rs): Never type, mostly tangential to let chains

</details>

## Possible future work

* There is proposals to allow `if let Pat(bindings) = expr {}` to be written as `if expr is Pat(bindings) {}` ([RFC 3573]). `if let` chains are a natural extension of the already existing `if let` syntax, and I'd argue orthogonal towards `is` syntax.
  * https://github.com/rust-lang/lang-team/issues/297
* One could have similar chaining inside `let ... else` statements. There is no proposed RFC for this however, nor is it implemented on nightly.
* Match guards have the `if` keyword as well, but on stable Rust, they don't support `let`. The functionality is available via an unstable feature ([`if_let_guard` tracking issue]). Stabilization of let chains affects this feature in so far as match guards containing let chains now only need the `if_let_guard` feature gate be present instead of also the `let_chains` feature (NOTE: this PR doesn't implement this simplification, it's left for future work).

[RFC 3573]: https://github.com/rust-lang/rfcs/pull/3573
[`if_let_guard` tracking issue]: https://github.com/rust-lang/rust/issues/51114

## Open questions / blockers

- [ ] bad recovery if you don't put a `let` (I don't think this is a blocker): [#117977](https://github.com/rust-lang/rust/issues/117977)
- [x] An instance where a temporary lives shorter than with nested ifs, breaking compilation: [#103476](https://github.com/rust-lang/rust/issues/103476). Personally I don't think this is a blocker either, as it's an edge case. Edit: turns out to not reproduce in edition 2025 any more, due to let rescoping. regression test added in #133093
- [x] One should probably extend the tests for `move-guard-if-let-chain.rs` and `conflicting_bindings.rs` to have chains with multiple let's: done in 133093
- [x] Parsing rejection tests: addressed by https://github.com/rust-lang/rust/pull/132828
- [x] [Style](https://rust-lang.zulipchat.com/#narrow/channel/346005-t-style/topic/let.20chains.20stabilization.20and.20formatting): https://github.com/rust-lang/rust/pull/139456
- [x] https://github.com/rust-lang/rust/issues/86730 explicitly mentions `let_else`. I think we can live with `let pat = expr` not evaluating as `expr` for macro_rules macros, especially given that `let pat = expr` is not a legal expression anywhere except inside `if` and `while`.
- [x] Documentation in the reference: https://github.com/rust-lang/reference/pull/1740
- [x] Add chapter to the Rust 2024 [edition guide]: https://github.com/rust-lang/edition-guide/pull/337
- [x] Resolve open questions on desired drop order.

[original reference PR]: https://github.com/rust-lang/reference/pull/1179
[edition guide]: https://github.com/rust-lang/edition-guide
2025-04-22 07:54:10 +00:00
..
building Auto merge of #132833 - est31:stabilize_let_chains, r=fee1-dead 2025-04-22 07:54:10 +00:00
const_prop Allow GVN to produce places and not just locals. 2025-04-04 10:55:36 +00:00
copy-prop Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
coverage coverage: Shrink call spans to just the function name 2025-04-01 13:07:33 +11:00
dataflow-const-prop Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
dead-store-elimination Do not optimize out SwitchInt before borrowck, or if Zmir-preserve-ub 2025-04-08 21:05:20 +00:00
dest-prop Invalid dereferences for all non-local mutations 2025-04-03 21:59:49 +08:00
ergonomic-clones Add mir opt tests to be sure we generate copy, clones and moves when corresponds 2025-04-07 16:53:11 -03:00
inline Update tests. 2025-04-15 11:14:23 +02:00
instsimplify Migrate core to Rust 2024 2025-03-11 09:46:34 -07:00
issues Inline FnOnce once again 2025-03-03 23:30:18 +00:00
nll Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
pre-codegen Allow GVN to produce places and not just locals. 2025-04-04 10:55:36 +00:00
sroa be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
address_of.address_of_reborrow.SimplifyCfg-initial.after.mir bless mir-opt tests 2024-10-17 10:22:55 +02:00
address_of.borrow_and_cast.SimplifyCfg-initial.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
address_of.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
array_index_is_temporary.rs Update mir-opt filechecks 2024-08-18 15:52:23 -07:00
asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir Add and adapt tests 2024-09-27 14:40:38 +01:00
asm_unwind_panic_abort.rs Add and adapt tests 2024-09-27 14:40:38 +01:00
async_closure_fake_read_for_by_move.foo-{closure#0}-{closure#0}.built.after.mir Remove fake borrows of refs that are converted into non-refs in MakeByMoveBody 2025-03-14 19:38:29 +00:00
async_closure_fake_read_for_by_move.foo-{closure#0}-{synthetic#0}.built.after.mir Encode synthetic by-move coroutine body with a different DefPathData 2025-03-30 22:53:21 +00:00
async_closure_fake_read_for_by_move.rs Encode synthetic by-move coroutine body with a different DefPathData 2025-03-30 22:53:21 +00:00
async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.built.after.mir Stabilize async closures 2024-12-13 00:04:56 +00:00
async_closure_shims.main-{closure#0}-{closure#0}-{synthetic#0}.built.after.mir Encode synthetic by-move coroutine body with a different DefPathData 2025-03-30 22:53:21 +00:00
async_closure_shims.main-{closure#0}-{closure#0}.coroutine_closure_by_move.0.mir Stabilize async closures 2024-12-13 00:04:56 +00:00
async_closure_shims.main-{closure#0}-{closure#1}-{closure#0}.built.after.mir Stabilize async closures 2024-12-13 00:04:56 +00:00
async_closure_shims.main-{closure#0}-{closure#1}-{synthetic#0}.built.after.mir Encode synthetic by-move coroutine body with a different DefPathData 2025-03-30 22:53:21 +00:00
async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_move.0.mir Stabilize async closures 2024-12-13 00:04:56 +00:00
async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.mir Stabilize async closures 2024-12-13 00:04:56 +00:00
async_closure_shims.rs Encode synthetic by-move coroutine body with a different DefPathData 2025-03-30 22:53:21 +00:00
basic_assignment.main.ElaborateDrops.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
basic_assignment.main.SimplifyCfg-initial.after.mir bless mir-opt tests 2024-10-17 10:22:55 +02:00
basic_assignment.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
box_expr.main.ElaborateDrops.diff Don't project into NonNull when dropping a Box 2025-02-15 23:20:52 -08:00
box_expr.rs Transmute from NonNull to pointer when elaborating a box deref (MCP807) 2025-01-06 18:43:40 -08:00
box_partial_move.maybe_move.ElaborateDrops.diff Don't project into NonNull when dropping a Box 2025-02-15 23:20:52 -08:00
box_partial_move.rs Don't project into NonNull when dropping a Box 2025-02-15 23:20:52 -08:00
build_correct_coerce.main.built.after.mir be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
build_correct_coerce.rs Test showing previous behavior 2024-08-13 16:23:18 -04:00
byte_slice.main.SimplifyCfg-pre-optimizations.after.mir simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
byte_slice.rs simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
c_unwind_terminate.rs Add and adapt tests 2024-09-27 14:40:38 +01:00
c_unwind_terminate.test.AbortUnwindingCalls.after.mir Add and adapt tests 2024-09-27 14:40:38 +01:00
const_allocation.main.GVN.after.32bit.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
const_allocation.main.GVN.after.64bit.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
const_allocation.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
const_allocation2.main.GVN.after.32bit.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
const_allocation2.main.GVN.after.64bit.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
const_allocation2.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
const_allocation3.main.GVN.after.32bit.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
const_allocation3.main.GVN.after.64bit.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
const_allocation3.rs don't inhibit random field reordering on repr(packed(1)) 2024-05-21 19:22:04 +02:00
const_debuginfo.main.SingleUseConsts.diff Bless mir-opt for excluded alloc bytes 2024-06-26 15:30:47 -07:00
const_debuginfo.rs Use -Zdump-mir-exclude-alloc-bytes in some mir-opt tests 2024-06-26 15:05:01 -07:00
const_goto_const_eval_fail.f.JumpThreading.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
const_goto_const_eval_fail.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-pre-optimizations.after.mir Fix cycle error only occurring with -Zdump-mir 2025-01-10 08:57:54 +00:00
const_promotion_extern_static.BAR.PromoteTemps.diff Fix cycle error only occurring with -Zdump-mir 2025-01-10 08:57:54 +00:00
const_promotion_extern_static.BOP.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-pre-optimizations.after.mir simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
const_promotion_extern_static.FOO.PromoteTemps.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
const_promotion_extern_static.rs simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
coroutine_drop_cleanup.main-{closure#0}.coroutine_drop.0.panic-abort.mir Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
coroutine_drop_cleanup.main-{closure#0}.coroutine_drop.0.panic-unwind.mir Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
coroutine_drop_cleanup.rs Make coroutine_drop_cleanup 2024 edition compatible 2025-04-01 14:49:15 +00:00
coroutine_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-abort.mir Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
coroutine_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-unwind.mir Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
coroutine_storage_dead_unwind.rs Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
coroutine_tiny.main-{closure#0}.coroutine_resume.0.mir Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
coroutine_tiny.rs Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
dataflow.main.maybe_init.borrowck.dot Add test for -Zdump-mir-dataflow. 2024-12-02 16:19:17 +11:00
dataflow.rs Add test for -Zdump-mir-dataflow. 2024-12-02 16:19:17 +11:00
derefer_complex_case.main.Derefer.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
derefer_complex_case.main.Derefer.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
derefer_complex_case.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
derefer_inline_test.main.Derefer.panic-abort.diff make MIR less verbose 2023-08-24 14:26:26 +02:00
derefer_inline_test.main.Derefer.panic-unwind.diff make MIR less verbose 2023-08-24 14:26:26 +02:00
derefer_inline_test.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
derefer_terminator_test.main.Derefer.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
derefer_terminator_test.main.Derefer.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
derefer_terminator_test.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
derefer_test.main.Derefer.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
derefer_test.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
derefer_test_multiple.main.Derefer.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
derefer_test_multiple.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
dont_inline_type_id.call.Inline.diff Don't resolve generic instances if they may be shadowed by dyn 2023-09-19 05:42:23 +00:00
dont_inline_type_id.rs Reformat use declarations. 2024-07-29 08:26:52 +10:00
dont_reset_cast_kind_without_updating_operand.rs Emit MIR for each bit with on dont_reset_cast_kind_without_updating_operand 2025-02-13 23:36:51 -05:00
dont_reset_cast_kind_without_updating_operand.test.GVN.32bit.panic-abort.diff Allow GVN to produce places and not just locals. 2025-04-04 10:55:36 +00:00
dont_reset_cast_kind_without_updating_operand.test.GVN.32bit.panic-unwind.diff Allow GVN to produce places and not just locals. 2025-04-04 10:55:36 +00:00
dont_reset_cast_kind_without_updating_operand.test.GVN.64bit.panic-abort.diff Allow GVN to produce places and not just locals. 2025-04-04 10:55:36 +00:00
dont_reset_cast_kind_without_updating_operand.test.GVN.64bit.panic-unwind.diff Allow GVN to produce places and not just locals. 2025-04-04 10:55:36 +00:00
early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
early_otherwise_branch.opt4.EarlyOtherwiseBranch.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
early_otherwise_branch.opt5.EarlyOtherwiseBranch.diff Reapply "Auto merge of #129047 - DianQK:early_otherwise_branch_scalar, r=cjgillot" 2024-12-18 20:43:54 +08:00
early_otherwise_branch.opt5_failed.EarlyOtherwiseBranch.diff Reapply "Auto merge of #129047 - DianQK:early_otherwise_branch_scalar, r=cjgillot" 2024-12-18 20:43:54 +08:00
early_otherwise_branch.opt5_failed_type.EarlyOtherwiseBranch.diff Reapply "Auto merge of #129047 - DianQK:early_otherwise_branch_scalar, r=cjgillot" 2024-12-18 20:43:54 +08:00
early_otherwise_branch.rs Reapply "Auto merge of #129047 - DianQK:early_otherwise_branch_scalar, r=cjgillot" 2024-12-18 20:43:54 +08:00
early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
early_otherwise_branch_3_element_tuple.opt2.EarlyOtherwiseBranch.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
early_otherwise_branch_3_element_tuple.rs Update mir-opt filechecks 2024-08-18 15:52:23 -07:00
early_otherwise_branch_68867.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
early_otherwise_branch_noopt.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff Resolve unsound hoisting of discriminant in EarlyOtherwiseBranch 2024-04-07 21:14:26 +08:00
early_otherwise_branch_soundness.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
early_otherwise_branch_unwind.poll.EarlyOtherwiseBranch.diff mir-opt: Do not handle the cleanup BB in the EarlyOtherwiseBranch 2024-12-18 20:43:55 +08:00
early_otherwise_branch_unwind.rs mir-opt: Do not handle the cleanup BB in the EarlyOtherwiseBranch 2024-12-18 20:43:55 +08:00
early_otherwise_branch_unwind.unwind.EarlyOtherwiseBranch.diff mir-opt: Do not handle the cleanup BB in the EarlyOtherwiseBranch 2024-12-18 20:43:55 +08:00
elaborate_box_deref_in_debuginfo.pointee.ElaborateBoxDerefs.diff Stop doing weird index stuff in ElaborateBoxDerefs 2024-08-02 17:45:55 -04:00
elaborate_box_deref_in_debuginfo.rs Stop doing weird index stuff in ElaborateBoxDerefs 2024-08-02 17:45:55 -04:00
enum_opt.cand.EnumSizeOpt.32bit.diff Use MirPatch in EnumSizeOpt. 2025-02-18 12:52:56 +11:00
enum_opt.cand.EnumSizeOpt.64bit.diff Use MirPatch in EnumSizeOpt. 2025-02-18 12:52:56 +11:00
enum_opt.invalid.EnumSizeOpt.32bit.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
enum_opt.invalid.EnumSizeOpt.64bit.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
enum_opt.rs Use -Zdump-mir-exclude-alloc-bytes in some mir-opt tests 2024-06-26 15:05:01 -07:00
enum_opt.trunc.EnumSizeOpt.32bit.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
enum_opt.trunc.EnumSizeOpt.64bit.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
enum_opt.unin.EnumSizeOpt.32bit.diff Use MirPatch in EnumSizeOpt. 2025-02-18 12:52:56 +11:00
enum_opt.unin.EnumSizeOpt.64bit.diff Use MirPatch in EnumSizeOpt. 2025-02-18 12:52:56 +11:00
fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir Auto merge of #112307 - lcnr:operand-ref, r=compiler-errors 2023-06-28 00:41:37 +00:00
fn_ptr_shim.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
funky_arms.float_to_exponential_common.GVN.32bit.panic-abort.diff Update tests. 2025-03-12 16:32:11 +01:00
funky_arms.float_to_exponential_common.GVN.32bit.panic-unwind.diff Update tests. 2025-03-12 16:32:11 +01:00
funky_arms.float_to_exponential_common.GVN.64bit.panic-abort.diff Update tests. 2025-03-12 16:32:11 +01:00
funky_arms.float_to_exponential_common.GVN.64bit.panic-unwind.diff Update tests. 2025-03-12 16:32:11 +01:00
funky_arms.rs Update tests. 2025-03-10 12:20:05 +01:00
global_asm.rs fix ICE in pretty-printing global_asm! 2025-03-10 14:46:01 +01:00
global_asm.{global_asm#0}.SimplifyLocals-final.after.mir fix ICE in pretty-printing global_asm! 2025-03-10 14:46:01 +01:00
graphviz.main.built.after.dot
graphviz.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
gvn.aggregate_struct_then_transmute.GVN.panic-abort.diff Make the aggregate-then-transmute handling more general 2025-01-08 18:46:31 -08:00
gvn.aggregate_struct_then_transmute.GVN.panic-unwind.diff Make the aggregate-then-transmute handling more general 2025-01-08 18:46:31 -08:00
gvn.arithmetic.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.arithmetic.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.arithmetic_checked.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.arithmetic_checked.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.arithmetic_float.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.arithmetic_float.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.array_len.GVN.panic-abort.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
gvn.array_len.GVN.panic-unwind.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
gvn.borrowed.GVN.panic-abort.diff Bless tests 2025-04-02 19:59:26 +08:00
gvn.borrowed.GVN.panic-unwind.diff Bless tests 2025-04-02 19:59:26 +08:00
gvn.cast.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.cast.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.cast_pointer_eq.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.cast_pointer_eq.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.cast_pointer_then_transmute.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.cast_pointer_then_transmute.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.casts_before_aggregate_raw_ptr.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.casts_before_aggregate_raw_ptr.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.comparison.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.comparison.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.constant_index_overflow.GVN.panic-abort.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
gvn.constant_index_overflow.GVN.panic-unwind.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
gvn.dedup_multiple_bounds_checks_lengths.GVN.panic-abort.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
gvn.dedup_multiple_bounds_checks_lengths.GVN.panic-unwind.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
gvn.dereferences.GVN.panic-abort.diff Do not unify dereferences in GVN. 2024-11-25 20:19:08 +01:00
gvn.dereferences.GVN.panic-unwind.diff Do not unify dereferences in GVN. 2024-11-25 20:19:08 +01:00
gvn.duplicate_slice.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.duplicate_slice.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.fn_pointers.GVN.panic-abort.diff Revert "comment out the old tests instead of adjusting them" 2025-04-02 19:59:26 +08:00
gvn.fn_pointers.GVN.panic-unwind.diff Revert "comment out the old tests instead of adjusting them" 2025-04-02 19:59:26 +08:00
gvn.generic_cast_metadata.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.generic_cast_metadata.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.indirect_static.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.indirect_static.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.manual_slice_mut_len.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.manual_slice_mut_len.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.meta_of_ref_to_slice.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.meta_of_ref_to_slice.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.multiple_branches.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.multiple_branches.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.non_freeze.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.non_freeze.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.references.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.references.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.remove_casts_must_change_both_sides.GVN.panic-abort.diff Only introduce stable projections. 2025-04-04 10:55:42 +00:00
gvn.remove_casts_must_change_both_sides.GVN.panic-unwind.diff Only introduce stable projections. 2025-04-04 10:55:42 +00:00
gvn.repeat.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.repeat.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.repeated_index.GVN.panic-abort.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
gvn.repeated_index.GVN.panic-unwind.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
gvn.rs Only introduce stable projections. 2025-04-04 10:55:42 +00:00
gvn.slice_const_length.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.slice_const_length.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.slice_from_raw_parts_as_ptr.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.slice_from_raw_parts_as_ptr.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.slices.GVN.panic-abort.diff Bless tests 2025-04-02 19:59:26 +08:00
gvn.slices.GVN.panic-unwind.diff Bless tests 2025-04-02 19:59:26 +08:00
gvn.subexpression_elimination.GVN.panic-abort.diff Do not unify dereferences in GVN. 2024-11-25 20:19:08 +01:00
gvn.subexpression_elimination.GVN.panic-unwind.diff Do not unify dereferences in GVN. 2024-11-25 20:19:08 +01:00
gvn.transmute_then_cast_pointer.GVN.panic-abort.diff [mir-opt] GVN some more transmute cases 2025-01-08 18:46:30 -08:00
gvn.transmute_then_cast_pointer.GVN.panic-unwind.diff [mir-opt] GVN some more transmute cases 2025-01-08 18:46:30 -08:00
gvn.transmute_then_transmute_again.GVN.panic-abort.diff Refactor the cast-then-cast cases together, and support transmute-then-transmute 2025-01-08 18:46:30 -08:00
gvn.transmute_then_transmute_again.GVN.panic-unwind.diff Refactor the cast-then-cast cases together, and support transmute-then-transmute 2025-01-08 18:46:30 -08:00
gvn.unary.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.unary.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.wide_ptr_integer.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.wide_ptr_integer.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.wide_ptr_provenance.GVN.panic-abort.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
gvn.wide_ptr_provenance.GVN.panic-unwind.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
gvn.wide_ptr_same_provenance.GVN.panic-abort.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
gvn.wide_ptr_same_provenance.GVN.panic-unwind.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
gvn.wrap_unwrap.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn.wrap_unwrap.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn_clone.rs Remove unsound-mir-opts for simplify_aggregate_to_copy 2025-04-03 21:59:43 +08:00
gvn_clone.{impl#0}-clone.GVN.diff Remove unsound-mir-opts for simplify_aggregate_to_copy 2025-04-03 21:59:43 +08:00
gvn_copy_aggregate.all_copy.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.all_copy_2.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.all_copy_different_type.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.all_copy_has_changed.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.all_copy_move.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.all_copy_ret_2.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.all_copy_use_changed.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.all_copy_use_changed_2.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.enum_different_variant.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.enum_identical_variant.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.nest_copy.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.remove_storage_dead.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.remove_storage_dead_from_index.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_aggregate.rs Remove unsound-mir-opts for simplify_aggregate_to_copy 2025-04-03 21:59:43 +08:00
gvn_copy_aggregate.same_type_different_index.GVN.diff Simplify the canonical clone method to copy 2024-09-14 13:30:35 +08:00
gvn_copy_constant_projection.compare_constant_index.GVN.panic-abort.diff Allow GVN to produce places and not just locals. 2025-04-04 10:55:36 +00:00
gvn_copy_constant_projection.compare_constant_index.GVN.panic-unwind.diff Allow GVN to produce places and not just locals. 2025-04-04 10:55:36 +00:00
gvn_copy_constant_projection.rs Allow GVN to produce places and not just locals. 2025-04-04 10:55:36 +00:00
gvn_copy_moves.fn0.GVN.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
gvn_copy_moves.rs Update mir-opt filechecks 2024-08-18 15:52:23 -07:00
gvn_on_unsafe_binder.propagate.GVN.diff Don't drop Rvalue::WrapUnsafeBinder during GVN 2025-03-15 18:10:55 +00:00
gvn_on_unsafe_binder.rs Don't drop Rvalue::WrapUnsafeBinder during GVN 2025-03-15 18:10:55 +00:00
gvn_on_unsafe_binder.test.GVN.diff Don't drop Rvalue::WrapUnsafeBinder during GVN 2025-03-15 18:10:55 +00:00
gvn_ptr_eq_with_constant.main.GVN.diff Update tests for std::simd subtree sync 2025-01-18 21:44:41 -05:00
gvn_ptr_eq_with_constant.rs move strict provenance lints to new feature gate, remove old feature gates 2024-10-21 15:22:17 +01:00
gvn_type_id_polymorphic.cursed_is_i32.GVN.diff fix ensure_monomorphic_enough 2025-02-11 01:15:08 +01:00
gvn_type_id_polymorphic.rs fix ensure_monomorphic_enough 2025-02-11 01:15:08 +01:00
gvn_uninhabited.f.GVN.panic-abort.diff Bless tests 2025-04-02 19:59:26 +08:00
gvn_uninhabited.f.GVN.panic-unwind.diff Bless tests 2025-04-02 19:59:26 +08:00
gvn_uninhabited.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
if_condition_int.opt_char.SimplifyComparisonIntegral.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
if_condition_int.opt_i8.SimplifyComparisonIntegral.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
if_condition_int.opt_negative.SimplifyComparisonIntegral.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
if_condition_int.opt_u32.SimplifyComparisonIntegral.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
if_condition_int.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
impossible_predicates.impossible_predicate.ImpossiblePredicates.diff Make MIR cleanup for functions with impossible predicates into a real MIR pass 2025-01-11 20:50:39 +00:00
impossible_predicates.rs Make MIR cleanup for functions with impossible predicates into a real MIR pass 2025-01-11 20:50:39 +00:00
inline_coroutine_body.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
inline_coroutine_body.run2-{closure#0}.Inline.panic-abort.diff Update tests. 2025-04-15 11:14:23 +02:00
inline_coroutine_body.run2-{closure#0}.Inline.panic-unwind.diff Update tests. 2025-04-15 11:14:23 +02:00
inline_fn_call_for_fn_def.rs Inline FnOnce once again 2025-03-03 23:30:18 +00:00
inline_fn_call_for_fn_def.test.Inline.diff Inline FnOnce once again 2025-03-03 23:30:18 +00:00
inline_generically_if_sized.call.Inline.diff At debuginfo=0, don't inline debuginfo when inlining 2024-04-18 09:35:35 -07:00
inline_generically_if_sized.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
issue_38669.main.SimplifyCfg-initial.after.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_38669.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
issue_41110.main.ElaborateDrops.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_41110.main.ElaborateDrops.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_41110.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
issue_41110.test.ElaborateDrops.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_41110.test.ElaborateDrops.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_41697.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
issue_41888.main.ElaborateDrops.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_41888.main.ElaborateDrops.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_41888.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
issue_62289.rs turn rustc_box into an intrinsic 2025-01-03 12:01:31 +01:00
issue_62289.test.ElaborateDrops.before.panic-abort.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_62289.test.ElaborateDrops.before.panic-unwind.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_72181.bar.built.after.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_72181.foo.built.after.mir Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
issue_72181.main.built.after.mir Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
issue_72181.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
issue_72181_1.f.built.after.mir Return the otherwise_block instead of passing it as argument 2024-07-09 22:47:35 +02:00
issue_72181_1.main.built.after.mir bless mir-opt tests 2024-10-17 10:22:55 +02:00
issue_72181_1.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
issue_76432.rs Replace NormalizeArrayLen with GVN 2024-06-20 22:16:59 -07:00
issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff Revert "Auto merge of #134330 - scottmcm:no-more-rvalue-len, r=matthewjasper" 2025-01-18 22:09:34 +00:00
issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff Revert "Auto merge of #134330 - scottmcm:no-more-rvalue-len, r=matthewjasper" 2025-01-18 22:09:34 +00:00
issue_78192.f.InstSimplify-after-simplifycfg.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_78192.rs Perform instsimplify before inline to eliminate some trivial calls 2024-07-29 18:14:35 +08:00
issue_91633.bar.built.after.mir Return the otherwise_block instead of passing it as argument 2024-07-09 22:47:35 +02:00
issue_91633.foo.built.after.mir Represent the raw pointer for a array length check as a new kind of fake borrow 2025-01-28 00:00:33 +00:00
issue_91633.fun.built.after.mir Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
issue_91633.hey.built.after.mir Return the otherwise_block instead of passing it as argument 2024-07-09 22:47:35 +02:00
issue_91633.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
issue_99325.main.built.after.32bit.mir bless mir-opt tests 2024-10-17 10:22:55 +02:00
issue_99325.main.built.after.64bit.mir bless mir-opt tests 2024-10-17 10:22:55 +02:00
issue_99325.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
issue_101973.inner.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_101973.inner.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
issue_101973.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-abort.mir Remove MIR unsafe check 2024-04-03 08:50:12 +00:00
issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-unwind.mir Remove MIR unsafe check 2024-04-03 08:50:12 +00:00
issue_104451_unwindable_intrinsics.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
issue_120925_unsafefncast.rs Add test. 2024-02-13 17:21:53 +00:00
jump_threading.aggregate.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.aggregate.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.aggregate_copy.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.aggregate_copy.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.assume.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.assume.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.bitwise_not.JumpThreading.panic-abort.diff JumpThreading: Re-enable and fix Not ops on non-booleans 2025-04-13 20:29:49 +00:00
jump_threading.bitwise_not.JumpThreading.panic-unwind.diff JumpThreading: Re-enable and fix Not ops on non-booleans 2025-04-13 20:29:49 +00:00
jump_threading.custom_discr.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.custom_discr.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.dfa.JumpThreading.panic-abort.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
jump_threading.dfa.JumpThreading.panic-unwind.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
jump_threading.disappearing_bb.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.disappearing_bb.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.duplicate_chain.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.duplicate_chain.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.floats.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.floats.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.identity.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.identity.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.logical_not.JumpThreading.panic-abort.diff JumpThreading: Re-enable and fix Not ops on non-booleans 2025-04-13 20:29:49 +00:00
jump_threading.logical_not.JumpThreading.panic-unwind.diff JumpThreading: Re-enable and fix Not ops on non-booleans 2025-04-13 20:29:49 +00:00
jump_threading.multiple_match.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.multiple_match.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.mutable_ref.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.mutable_ref.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.mutate_discriminant.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.mutate_discriminant.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.renumbered_bb.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.renumbered_bb.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.rs JumpThreading: Re-enable and fix Not ops on non-booleans 2025-04-13 20:29:49 +00:00
jump_threading.too_complex.JumpThreading.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
jump_threading.too_complex.JumpThreading.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
loop_test.main.SimplifyCfg-promote-consts.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
loop_test.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
lower_array_len.array_bound.GVN.panic-abort.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
lower_array_len.array_bound.GVN.panic-unwind.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
lower_array_len.array_bound_mut.GVN.panic-abort.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
lower_array_len.array_bound_mut.GVN.panic-unwind.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
lower_array_len.array_len.GVN.panic-abort.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
lower_array_len.array_len.GVN.panic-unwind.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
lower_array_len.array_len_by_value.GVN.panic-abort.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
lower_array_len.array_len_by_value.GVN.panic-unwind.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
lower_array_len.array_len_raw.GVN.panic-abort.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
lower_array_len.array_len_raw.GVN.panic-unwind.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
lower_array_len.array_len_reborrow.GVN.panic-abort.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
lower_array_len.array_len_reborrow.GVN.panic-unwind.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
lower_array_len.rs Update mir-opt filechecks 2024-08-18 15:52:23 -07:00
lower_intrinsics.align_of.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.align_of.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.assume.LowerIntrinsics.panic-abort.diff Remove MIR unsafe check 2024-04-03 08:50:12 +00:00
lower_intrinsics.assume.LowerIntrinsics.panic-unwind.diff Remove MIR unsafe check 2024-04-03 08:50:12 +00:00
lower_intrinsics.discriminant.LowerIntrinsics.panic-abort.diff MIR printing: print the path of uneval'd const; refer to promoteds in a consistent way 2024-03-10 14:59:41 +01:00
lower_intrinsics.discriminant.LowerIntrinsics.panic-unwind.diff MIR printing: print the path of uneval'd const; refer to promoteds in a consistent way 2024-03-10 14:59:41 +01:00
lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.forget.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.forget.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.get_metadata.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.get_metadata.LowerIntrinsics.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.make_pointers.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.make_pointers.LowerIntrinsics.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.rs update/bless tests 2025-04-06 21:41:47 +02:00
lower_intrinsics.size_of.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.size_of.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-unwind.diff Use BinOp::Cmp for iNN::signum 2025-03-01 13:06:51 -08:00
lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-unwind.diff Use BinOp::Cmp for iNN::signum 2025-03-01 13:06:51 -08:00
lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-unwind.diff Use BinOp::Cmp for iNN::signum 2025-03-01 13:06:51 -08:00
lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff document & impl the transmutation modeled by BikeshedIntrinsicFrom 2024-08-23 14:37:36 +00:00
lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff document & impl the transmutation modeled by BikeshedIntrinsicFrom 2024-08-23 14:37:36 +00:00
lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff document & impl the transmutation modeled by BikeshedIntrinsicFrom 2024-08-23 14:37:36 +00:00
lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff document & impl the transmutation modeled by BikeshedIntrinsicFrom 2024-08-23 14:37:36 +00:00
lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff Transmute from NonNull to pointer when elaborating a box deref (MCP807) 2025-01-06 18:43:40 -08:00
lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff Transmute from NonNull to pointer when elaborating a box deref (MCP807) 2025-01-06 18:43:40 -08:00
lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-abort.diff document & impl the transmutation modeled by BikeshedIntrinsicFrom 2024-08-23 14:37:36 +00:00
lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-unwind.diff document & impl the transmutation modeled by BikeshedIntrinsicFrom 2024-08-23 14:37:36 +00:00
lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-abort.diff document & impl the transmutation modeled by BikeshedIntrinsicFrom 2024-08-23 14:37:36 +00:00
lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-unwind.diff document & impl the transmutation modeled by BikeshedIntrinsicFrom 2024-08-23 14:37:36 +00:00
lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff document & impl the transmutation modeled by BikeshedIntrinsicFrom 2024-08-23 14:37:36 +00:00
lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff document & impl the transmutation modeled by BikeshedIntrinsicFrom 2024-08-23 14:37:36 +00:00
lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.unreachable.LowerIntrinsics.panic-abort.diff Remove MIR unsafe check 2024-04-03 08:50:12 +00:00
lower_intrinsics.unreachable.LowerIntrinsics.panic-unwind.diff Remove MIR unsafe check 2024-04-03 08:50:12 +00:00
lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-abort.diff Remove MIR unsafe check 2024-04-03 08:50:12 +00:00
lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-unwind.diff Remove MIR unsafe check 2024-04-03 08:50:12 +00:00
lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
lower_slice_len.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
match_arm_scopes.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
matches_reduce_branches.bar.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.foo.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_i128_u128.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_sext_i8_i16.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_sext_i8_i16_failed.MatchBranchSimplification.diff Simplify match based on the cast result of IntToInt. 2024-08-03 10:55:43 +08:00
matches_reduce_branches.match_sext_i8_u16.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_sext_i8_u16_failed.MatchBranchSimplification.diff Simplify match based on the cast result of IntToInt. 2024-08-03 10:55:43 +08:00
matches_reduce_branches.match_trunc_i16_i8.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_trunc_i16_i8_failed.MatchBranchSimplification.diff Simplify match based on the cast result of IntToInt. 2024-08-03 10:55:43 +08:00
matches_reduce_branches.match_trunc_i16_u8.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_trunc_i16_u8_failed.MatchBranchSimplification.diff Simplify match based on the cast result of IntToInt. 2024-08-03 10:55:43 +08:00
matches_reduce_branches.match_trunc_u16_i8.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_trunc_u16_i8_failed.MatchBranchSimplification.diff Simplify match based on the cast result of IntToInt. 2024-08-03 10:55:43 +08:00
matches_reduce_branches.match_trunc_u16_u8.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_trunc_u16_u8_failed.MatchBranchSimplification.diff Simplify match based on the cast result of IntToInt. 2024-08-03 10:55:43 +08:00
matches_reduce_branches.match_u8_i8.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_u8_i8_2.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_u8_i8_2_failed.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_u8_i8_failed.MatchBranchSimplification.diff Simplify match based on the cast result of IntToInt. 2024-08-03 10:55:43 +08:00
matches_reduce_branches.match_u8_i8_failed_len_1.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_u8_i8_failed_len_2.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_u8_i8_fallback.MatchBranchSimplification.diff Simplify match based on the cast result of IntToInt. 2024-08-03 10:55:43 +08:00
matches_reduce_branches.match_zext_u8_i16.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_zext_u8_i16_failed.MatchBranchSimplification.diff Simplify match based on the cast result of IntToInt. 2024-08-03 10:55:43 +08:00
matches_reduce_branches.match_zext_u8_u16.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_reduce_branches.match_zext_u8_u16_failed.MatchBranchSimplification.diff Simplify match based on the cast result of IntToInt. 2024-08-03 10:55:43 +08:00
matches_reduce_branches.my_is_some.MatchBranchSimplification.diff MatchBranchSimplification: Consider empty-unreachable otherwise branch 2024-12-27 10:57:46 +00:00
matches_reduce_branches.rs MatchBranchSimplification: Consider empty-unreachable otherwise branch 2024-12-27 10:57:46 +00:00
matches_u8.exhaustive_match.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
matches_u8.rs Re-enable SimplifyToExp in match_branches. 2024-08-03 10:55:46 +08:00
multiple_return_terminators.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
multiple_return_terminators.test.MultipleReturnTerminators.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
no_drop_for_inactive_variant.rs simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
no_drop_for_inactive_variant.unwrap.SimplifyCfg-pre-optimizations.after.panic-abort.mir simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
no_drop_for_inactive_variant.unwrap.SimplifyCfg-pre-optimizations.after.panic-unwind.mir simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
no_spurious_drop_after_call.main.ElaborateDrops.before.panic-abort.mir make MIR less verbose 2023-08-24 14:26:26 +02:00
no_spurious_drop_after_call.main.ElaborateDrops.before.panic-unwind.mir make MIR less verbose 2023-08-24 14:26:26 +02:00
no_spurious_drop_after_call.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
nrvo_miscompile_111005.rs Reformat mir! macro invocations to use braces. 2024-06-03 13:24:44 +10:00
nrvo_miscompile_111005.wrong.RenameReturnPlace.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
nrvo_simple.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
null_check_references.rs Insert null checks for pointer dereferences when debug assertions are enabled 2025-01-31 11:13:34 +00:00
optimize_none.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
or_pattern.rs Add tests 2024-06-16 18:23:48 +02:00
or_pattern.shortcut_second_or.SimplifyCfg-initial.after.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
or_pattern.single_switchint.SimplifyCfg-initial.after.mir Do not optimize out SwitchInt before borrowck, or if Zmir-preserve-ub 2025-04-08 21:05:20 +00:00
packed_struct_drop_aligned.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
packed_struct_drop_aligned.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
packed_struct_drop_aligned.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
pattern_types.main.PreCodegen.after.mir Hide the end of ranges in pretty printing if it's also the maximum of the type 2025-03-06 10:50:23 +00:00
pattern_types.rs Hide the end of ranges in pretty printing if it's also the maximum of the type 2025-03-06 10:50:23 +00:00
read_from_trivial_switch.main.SimplifyCfg-initial.diff Do not optimize out SwitchInt before borrowck, or if Zmir-preserve-ub 2025-04-08 21:05:20 +00:00
read_from_trivial_switch.rs Do not optimize out SwitchInt before borrowck, or if Zmir-preserve-ub 2025-04-08 21:05:20 +00:00
README.md mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
reference_prop.debuginfo.ReferencePropagation.diff Revert "Auto merge of #134330 - scottmcm:no-more-rvalue-len, r=matthewjasper" 2025-01-18 22:09:34 +00:00
reference_prop.dominate_storage.ReferencePropagation.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
reference_prop.maybe_dead.ReferencePropagation.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
reference_prop.multiple_storage.ReferencePropagation.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
reference_prop.read_through_raw.ReferencePropagation.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
reference_prop.reference_propagation.ReferencePropagation.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
reference_prop.reference_propagation_mut.ReferencePropagation.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
reference_prop.rs Auto merge of #122551 - RayMuir:copy_fmt, r=saethlin 2024-08-19 23:10:46 +00:00
reference_prop.unique_with_copies.ReferencePropagation.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
remove_fake_borrows.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
remove_never_const.no_codegen.PreCodegen.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_never_const.rs Run Miri and mir-opt tests without a target linker 2024-01-06 14:17:33 -05:00
remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
remove_storage_markers.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-abort.diff At debuginfo=0, don't inline debuginfo when inlining 2024-04-18 09:35:35 -07:00
remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-unwind.diff At debuginfo=0, don't inline debuginfo when inlining 2024-04-18 09:35:35 -07:00
remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-abort.diff At debuginfo=0, don't inline debuginfo when inlining 2024-04-18 09:35:35 -07:00
remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-unwind.diff At debuginfo=0, don't inline debuginfo when inlining 2024-04-18 09:35:35 -07:00
remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
remove_unneeded_drops.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
remove_zsts.get_union.RemoveZsts.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_zsts.remove_generic_array.RemoveZsts.diff Address PR feedback 2025-01-11 15:56:58 -08:00
remove_zsts.rs Address PR feedback 2025-01-11 15:56:58 -08:00
retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-abort.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-unwind.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-abort.mir Transmute from NonNull to pointer when elaborating a box deref (MCP807) 2025-01-06 18:43:40 -08:00
retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-unwind.mir Transmute from NonNull to pointer when elaborating a box deref (MCP807) 2025-01-06 18:43:40 -08:00
retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-unwind.mir Bless tests 2023-06-23 18:36:25 +01:00
retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-abort.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-unwind.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
retag.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
retag.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
retag.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
retag.{impl#0}-foo.SimplifyCfg-pre-optimizations.after.panic-abort.mir simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
retag.{impl#0}-foo.SimplifyCfg-pre-optimizations.after.panic-unwind.mir simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-abort.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-unwind.mir Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
return_an_array.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
separate_const_switch.identity.JumpThreading.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
separate_const_switch.rs Remove feature(control_flow_enum) in tests 2024-09-25 19:00:19 -07:00
separate_const_switch.too_complex.JumpThreading.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
set_no_discriminant.f.JumpThreading.diff Variants::Single: do not use invalid VariantIdx for uninhabited enums 2024-12-18 11:00:21 +01:00
set_no_discriminant.generic.JumpThreading.diff Variants::Single: do not use invalid VariantIdx for uninhabited enums 2024-12-18 11:00:21 +01:00
set_no_discriminant.rs Variants::Single: do not use invalid VariantIdx for uninhabited enums 2024-12-18 11:00:21 +01:00
simplify_aggregate_to_copy_miscompile.foo.GVN.diff Invalid dereferences for all non-local mutations 2025-04-03 21:59:49 +08:00
simplify_aggregate_to_copy_miscompile.rs Invalid dereferences for all non-local mutations 2025-04-03 21:59:49 +08:00
simplify_aggregate_to_copy_miscompile.set_discriminant.GVN.diff Invalid dereferences for all non-local mutations 2025-04-03 21:59:49 +08:00
simplify_cfg.main.SimplifyCfg-initial.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_cfg.main.SimplifyCfg-post-analysis.diff simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
simplify_cfg.rs simplify_cfg: rename some passes so that they make more sense 2024-03-17 19:59:15 +01:00
simplify_dead_blocks.assert_nonzero_nonmax.SimplifyCfg-after-unreachable-enum-branching.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
simplify_dead_blocks.rs Update mir-opt filechecks 2024-08-18 15:52:23 -07:00
simplify_if.main.SimplifyConstCondition-after-const-prop.panic-abort.diff Reorder early post-inlining passes. 2024-01-07 01:42:57 +00:00
simplify_if.main.SimplifyConstCondition-after-const-prop.panic-unwind.diff Reorder early post-inlining passes. 2024-01-07 01:42:57 +00:00
simplify_if.rs Enable simplify MIR-opt test 2024-01-28 13:50:20 -06:00
simplify_locals.c.SimplifyLocals-before-const-prop.diff be even more precise about "cast" vs "coercion" 2024-09-24 23:12:02 +02:00
simplify_locals.d1.SimplifyLocals-before-const-prop.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals.d2.SimplifyLocals-before-const-prop.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals.expose_provenance.SimplifyLocals-before-const-prop.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
simplify_locals.r.SimplifyLocals-before-const-prop.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
simplify_locals.t1.SimplifyLocals-before-const-prop.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
simplify_locals.t2.SimplifyLocals-before-const-prop.diff Remove MIR unsafe check 2024-04-03 08:50:12 +00:00
simplify_locals.t3.SimplifyLocals-before-const-prop.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
simplify_locals.t4.SimplifyLocals-before-const-prop.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
simplify_locals_fixedpoint.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
simplify_locals_removes_unused_consts.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff Start blocks eagerly 2024-02-12 17:37:05 +01:00
simplify_locals_removes_unused_discriminant_reads.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
simplify_match.main.GVN.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
simplify_match.main.GVN.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
simplify_match.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
single_use_consts.assign_const_to_return.SingleUseConsts.panic-abort.diff Add SingleUseConsts mir-opt pass 2024-06-10 00:06:02 -07:00
single_use_consts.assign_const_to_return.SingleUseConsts.panic-unwind.diff Add SingleUseConsts mir-opt pass 2024-06-10 00:06:02 -07:00
single_use_consts.if_const.SingleUseConsts.panic-abort.diff Add SingleUseConsts mir-opt pass 2024-06-10 00:06:02 -07:00
single_use_consts.if_const.SingleUseConsts.panic-unwind.diff Add SingleUseConsts mir-opt pass 2024-06-10 00:06:02 -07:00
single_use_consts.if_const_debug.SingleUseConsts.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
single_use_consts.if_const_debug.SingleUseConsts.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
single_use_consts.keep_parameter.SingleUseConsts.panic-abort.diff Add SingleUseConsts mir-opt pass 2024-06-10 00:06:02 -07:00
single_use_consts.keep_parameter.SingleUseConsts.panic-unwind.diff Add SingleUseConsts mir-opt pass 2024-06-10 00:06:02 -07:00
single_use_consts.match_const.SingleUseConsts.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
single_use_consts.match_const.SingleUseConsts.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
single_use_consts.match_const_debug.SingleUseConsts.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
single_use_consts.match_const_debug.SingleUseConsts.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
single_use_consts.never_used_debug.SingleUseConsts.panic-abort.diff Add SingleUseConsts mir-opt pass 2024-06-10 00:06:02 -07:00
single_use_consts.never_used_debug.SingleUseConsts.panic-unwind.diff Add SingleUseConsts mir-opt pass 2024-06-10 00:06:02 -07:00
single_use_consts.rs Add SingleUseConsts mir-opt pass 2024-06-10 00:06:02 -07:00
slice_drop_shim.core.ptr-drop_in_place.[String;42].AddMovesForPackedDrops.before.mir Use PtrMetadata instead of Len in slice drop shims 2024-12-14 21:29:45 -08:00
slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir Use PtrMetadata instead of Len in slice drop shims 2024-12-14 21:29:45 -08:00
slice_drop_shim.rs Add a mir-opt test for drop shims of arrays 2024-12-14 21:27:23 -08:00
ssa_unreachable_116212.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
storage_ranges.main.nll.0.mir add borrows to NLL MIR dumps 2024-08-30 07:14:31 +00:00
storage_ranges.rs Allow to run filecheck in mir-opt tests. 2023-10-19 15:51:52 +00:00
strip_debuginfo.rs We don't need NonNull::as_ptr debuginfo 2024-12-10 01:29:43 -08:00
switch_to_self.rs Reformat mir! macro invocations to use braces. 2024-06-03 13:24:44 +10:00
switch_to_self.test.MatchBranchSimplification.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
tail_call_drops.f.built.after.panic-abort.mir don't drop types with no drop glue when tailcalling 2025-01-24 06:45:19 +01:00
tail_call_drops.f.built.after.panic-unwind.mir don't drop types with no drop glue when tailcalling 2025-01-24 06:45:19 +01:00
tail_call_drops.f.ElaborateDrops.panic-abort.diff don't drop types with no drop glue when tailcalling 2025-01-24 06:45:19 +01:00
tail_call_drops.f.ElaborateDrops.panic-unwind.diff don't drop types with no drop glue when tailcalling 2025-01-24 06:45:19 +01:00
tail_call_drops.f_with_arg.built.after.panic-abort.mir don't drop types with no drop glue when tailcalling 2025-01-24 06:45:19 +01:00
tail_call_drops.f_with_arg.built.after.panic-unwind.mir don't drop types with no drop glue when tailcalling 2025-01-24 06:45:19 +01:00
tail_call_drops.f_with_arg.ElaborateDrops.panic-abort.diff don't drop types with no drop glue when tailcalling 2025-01-24 06:45:19 +01:00
tail_call_drops.f_with_arg.ElaborateDrops.panic-unwind.diff don't drop types with no drop glue when tailcalling 2025-01-24 06:45:19 +01:00
tail_call_drops.rs Properly handle drops for tail calls 2024-07-07 17:11:05 +02:00
tail_expr_drop_order_unwind.method_1.ElaborateDrops.after.panic-abort.mir Visit place in BackwardIncompatibleDropHint statement 2025-04-13 22:01:54 +00:00
tail_expr_drop_order_unwind.method_1.ElaborateDrops.after.panic-unwind.mir Visit place in BackwardIncompatibleDropHint statement 2025-04-13 22:01:54 +00:00
tail_expr_drop_order_unwind.rs Separate DropKind::ForLint 2024-12-18 21:58:39 +00:00
tls_access.main.PreCodegen.after.mir Remove MIR unsafe check 2024-04-03 08:50:12 +00:00
tls_access.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
uninhabited_enum.process_never.SimplifyLocals-final.after.mir Be far more strict about what we consider to be a read of never 2024-10-05 19:10:47 -04:00
uninhabited_enum.process_void.SimplifyLocals-final.after.mir Be far more strict about what we consider to be a read of never 2024-10-05 19:10:47 -04:00
uninhabited_enum.rs Be far more strict about what we consider to be a read of never 2024-10-05 19:10:47 -04:00
uninhabited_fallthrough_elimination.eliminate_fallthrough.UnreachableEnumBranching.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
uninhabited_fallthrough_elimination.keep_fallthrough.UnreachableEnumBranching.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
uninhabited_fallthrough_elimination.rs Rename UninhabitedEnumBranching to UnreachableEnumBranching 2024-03-09 14:32:27 +08:00
uninhabited_not_read.main.SimplifyLocals-final.after.mir Fix up tests 2024-10-05 18:36:47 -04:00
uninhabited_not_read.rs Document things a bit more carefully, also account for coercion in check_expr_has_type_or_error 2024-10-05 18:36:47 -04:00
unreachable.as_match.UnreachablePropagation.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
unreachable.as_match.UnreachablePropagation.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
unreachable.if_let.UnreachablePropagation.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
unreachable.if_let.UnreachablePropagation.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
unreachable.rs Update tests 2024-08-10 12:07:17 +02:00
unreachable_diverging.main.UnreachablePropagation.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
unreachable_diverging.rs mir-opt tests: rename unit-test -> test-mir-pass 2024-04-20 13:19:34 +02:00
unreachable_enum_branching.byref.UnreachableEnumBranching.panic-abort.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
unreachable_enum_branching.byref.UnreachableEnumBranching.panic-unwind.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
unreachable_enum_branching.custom_discriminant.UnreachableEnumBranching.panic-abort.diff Rename UninhabitedEnumBranching to UnreachableEnumBranching 2024-03-09 14:32:27 +08:00
unreachable_enum_branching.custom_discriminant.UnreachableEnumBranching.panic-unwind.diff Rename UninhabitedEnumBranching to UnreachableEnumBranching 2024-03-09 14:32:27 +08:00
unreachable_enum_branching.otherwise_t1.UnreachableEnumBranching.panic-abort.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
unreachable_enum_branching.otherwise_t1.UnreachableEnumBranching.panic-unwind.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
unreachable_enum_branching.otherwise_t2.UnreachableEnumBranching.panic-abort.diff Rename UninhabitedEnumBranching to UnreachableEnumBranching 2024-03-09 14:32:27 +08:00
unreachable_enum_branching.otherwise_t2.UnreachableEnumBranching.panic-unwind.diff Rename UninhabitedEnumBranching to UnreachableEnumBranching 2024-03-09 14:32:27 +08:00
unreachable_enum_branching.otherwise_t3.UnreachableEnumBranching.panic-abort.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
unreachable_enum_branching.otherwise_t3.UnreachableEnumBranching.panic-unwind.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
unreachable_enum_branching.otherwise_t4.UnreachableEnumBranching.panic-abort.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
unreachable_enum_branching.otherwise_t4.UnreachableEnumBranching.panic-unwind.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
unreachable_enum_branching.otherwise_t4_unreachable_default.UnreachableEnumBranching.panic-abort.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
unreachable_enum_branching.otherwise_t4_unreachable_default.UnreachableEnumBranching.panic-unwind.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-abort.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-unwind.diff Bless *all* the mir-opt tests 2024-08-18 16:07:33 -07:00
unreachable_enum_branching.otherwise_t5_unreachable_default.UnreachableEnumBranching.panic-abort.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
unreachable_enum_branching.otherwise_t5_unreachable_default.UnreachableEnumBranching.panic-unwind.diff Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
unreachable_enum_branching.rs Update tests 2024-08-10 12:07:17 +02:00
unreachable_enum_branching.simple.UnreachableEnumBranching.panic-abort.diff Update tests 2024-08-10 12:07:17 +02:00
unreachable_enum_branching.simple.UnreachableEnumBranching.panic-unwind.diff Update tests 2024-08-10 12:07:17 +02:00
unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir make MIR less verbose 2023-08-24 14:26:26 +02:00
unusual_item_types.E-V-{constant#0}.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
unusual_item_types.rs rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00
unusual_item_types.Test-X-{constructor#0}.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir rustfmt tests/mir-opt. 2024-06-03 14:17:16 +10:00

This folder contains tests for MIR optimizations.

The mir-opt test format emits MIR to extra files that you can automatically update by specifying --bless on the command line (just like ui tests updating .stderr files).

--blessable test format

By default 32 bit and 64 bit targets use the same dump files, which can be problematic in the presence of pointers in constants or other bit width dependent things. In that case you can add

// EMIT_MIR_FOR_EACH_BIT_WIDTH

to your test, causing separate files to be generated for 32bit and 64bit systems.

Testing a particular MIR pass

If you are only testing the behavior of a particular mir-opt pass on some specific input (as is usually the case), you should add

//@ test-mir-pass: PassName

to the top of the file. This makes sure that other passes don't run which means you'll get the input you expected and your test won't break when other code changes. This also lets you test passes that are disabled by default.

Emit a diff of the mir for a specific optimization

This is what you want most often when you want to see how an optimization changes the MIR.

// EMIT_MIR $file_name_of_some_mir_dump.diff

Emit mir after a specific optimization

Use this if you are just interested in the final state after an optimization.

// EMIT_MIR $file_name_of_some_mir_dump.after.mir

Emit mir before a specific optimization

This exists mainly for completeness and is rarely useful.

// EMIT_MIR $file_name_of_some_mir_dump.before.mir

FileCheck directives

The LLVM FileCheck tool is used to verify the contents of output MIR against CHECK directives present in the test file. This works on the runtime MIR, generated by --emit=mir, and not on the output of a individual passes.

Use // skip-filecheck to prevent FileCheck from running.

To check MIR for function foo, start with a // CHECK-LABEL fn foo( directive.

{{regex}} syntax allows to match regex.

[[name:regex]] syntax allows to bind name to a string matching regex, and refer to it as [[name]] in later directives, regex should be written not to match a leading space. Use [[my_local:_.*]] to name a local, and [[my_bb:bb.*]] to name a block.

Documentation for FileCheck is available here: https://www.llvm.org/docs/CommandGuide/FileCheck.html