32 lines
773 B
Rust
32 lines
773 B
Rust
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
|
|
|
|
fn src(x: &&u8) -> bool {
|
|
// CHECK-LABEL: fn src(
|
|
// CHECK: debug y => [[Y:_.*]];
|
|
// CHECK: bb0:
|
|
// CHECK: [[BORROW_u8:_.*]] = copy (*_1);
|
|
// CHECK: [[Y]] = copy (*[[BORROW_u8]]);
|
|
// CHECK: bb1:
|
|
// BORROW_u8 outside its lifetime in bb1.
|
|
// CHECK-NOT: copy (*[[BORROW_u8]]);
|
|
// CHECK: copy (*_1);
|
|
// CHECK-NOT: _0 = const true;
|
|
// CHECK: _0 = Eq({{.*}}, {{.*}});
|
|
// CHECK-NOT: _0 = const true;
|
|
let y = **x;
|
|
unsafe { unknown() };
|
|
**x == y
|
|
}
|
|
|
|
#[inline(never)]
|
|
unsafe fn unknown() {
|
|
// CHECK-LABEL: fn unknown(
|
|
}
|
|
|
|
fn main() {
|
|
// CHECK-LABEL: fn main(
|
|
src(&&0);
|
|
}
|
|
|
|
// EMIT_MIR deref_nested_borrows.src.GVN.diff
|
|
// EMIT_MIR deref_nested_borrows.src.PreCodegen.after.mir
|