blob: 5879b3f4f4f3fe97c9da5f0e59bd25a84d50c0b7 [file] [log] [blame]
//@ known-bug: #107975
//@ compile-flags: -Copt-level=2
//@ run-pass
//@ ignore-backends: gcc
// Derived from https://github.com/rust-lang/rust/issues/107975#issuecomment-1431758601
use std::ptr;
fn main() {
let a: usize = {
let v = 0u8;
ptr::from_ref(&v).addr()
};
let b: usize = {
let v = 0u8;
ptr::from_ref(&v).addr()
};
// So, are `a` and `b` equal?
// Let's check their difference.
let i: usize = a - b;
// It's not zero, which means `a` and `b` are not equal.
assert_ne!(i, 0);
// But it looks like zero...
assert_eq!(format!("{i}"), "0");
// ...and now it *is* zero?
assert_eq!(i, 0);
// So `a` and `b` are equal after all?
}