diff options
Diffstat (limited to 'tests/ui/codegen/equal-pointers-unequal/strict-provenance/inline2.rs')
| -rw-r--r-- | tests/ui/codegen/equal-pointers-unequal/strict-provenance/inline2.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/ui/codegen/equal-pointers-unequal/strict-provenance/inline2.rs b/tests/ui/codegen/equal-pointers-unequal/strict-provenance/inline2.rs new file mode 100644 index 00000000000..e628bb90faa --- /dev/null +++ b/tests/ui/codegen/equal-pointers-unequal/strict-provenance/inline2.rs @@ -0,0 +1,34 @@ +//@ known-bug: #107975 +//@ compile-flags: -Copt-level=2 +//@ run-pass + +// Based on https://github.com/rust-lang/rust/issues/107975#issuecomment-1432161340 + +#![feature(strict_provenance)] + +use std::ptr; + +#[inline(never)] +fn cmp(a: usize, b: usize) -> bool { + a == b +} + +#[inline(always)] +fn cmp_in(a: usize, b: usize) -> bool { + a == b +} + +fn main() { + let a: usize = { + let v = 0; + ptr::from_ref(&v).addr() + }; + let b: usize = { + let v = 0; + ptr::from_ref(&v).addr() + }; + assert_eq!(a.to_string(), b.to_string()); + assert_eq!(format!("{}", a == b), "true"); + assert_eq!(format!("{}", cmp_in(a, b)), "true"); + assert_eq!(format!("{}", cmp(a, b)), "true"); +} |
