mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-27 09:14:20 +00:00
e489971902
A definition does not dominate a use in the same statement. For example in MIR generated for compound assignment x += a (when overflow checks are disabled).
20 lines
553 B
Rust
20 lines
553 B
Rust
// build-pass
|
|
// compile-flags: --crate-type=lib
|
|
#![feature(custom_mir, core_intrinsics)]
|
|
use std::intrinsics::mir::*;
|
|
|
|
#[custom_mir(dialect = "runtime", phase = "optimized")]
|
|
pub fn f(a: u32) -> u32 {
|
|
mir!(
|
|
let x: u32;
|
|
{
|
|
// Previously code generation failed with ICE "use of .. before def ..." because the
|
|
// definition of x was incorrectly identified as dominating the use of x located in the
|
|
// same statement:
|
|
x = x + a;
|
|
RET = x;
|
|
Return()
|
|
}
|
|
)
|
|
}
|