633c92cd6d
as they can made to produce values whose types don't match their underlying layout types which can lead to ICEs on eval
22 lines
574 B
Rust
22 lines
574 B
Rust
// Regression test for #121534
|
|
// Tests that no ICE occurs in KnownPanicsLint when it
|
|
// evaluates an operation whose operands have different
|
|
// layout types even though they have the same type.
|
|
// This situation can be contrived through the use of
|
|
// unions as in this test
|
|
|
|
//@ build-pass
|
|
union Union {
|
|
u32_field: u32,
|
|
i32_field: i32,
|
|
}
|
|
|
|
pub fn main() {
|
|
let u32_variant = Union { u32_field: 2 };
|
|
let i32_variant = Union { i32_field: 3 };
|
|
let a = unsafe { u32_variant.u32_field };
|
|
let b = unsafe { i32_variant.u32_field };
|
|
|
|
let _diff = a - b;
|
|
}
|