From e91db9f03cc67287dff74300a7549695d2871028 Mon Sep 17 00:00:00 2001 From: Oli Scherer Date: Sat, 10 Sep 2022 13:56:05 +0000 Subject: [PATCH] Rustup --- rust-version | 2 +- src/shims/intrinsics/mod.rs | 13 +++++-------- tests/pass/pointers.rs | 4 ++-- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/rust-version b/rust-version index cbec52128d37..56acee2246c6 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -e7c7aa7288559f8e5ea7ce3543ff946b09783628 +5197c96c49fc3b7de3ce9a31f7cc62d2cbd1f70c diff --git a/src/shims/intrinsics/mod.rs b/src/shims/intrinsics/mod.rs index a930c4a96754..ac1642b00651 100644 --- a/src/shims/intrinsics/mod.rs +++ b/src/shims/intrinsics/mod.rs @@ -75,17 +75,14 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx match intrinsic_name { // Miri overwriting CTFE intrinsics. - "ptr_guaranteed_eq" => { + "ptr_guaranteed_cmp" => { let [left, right] = check_arg_count(args)?; let left = this.read_immediate(left)?; let right = this.read_immediate(right)?; - this.binop_ignore_overflow(mir::BinOp::Eq, &left, &right, dest)?; - } - "ptr_guaranteed_ne" => { - let [left, right] = check_arg_count(args)?; - let left = this.read_immediate(left)?; - let right = this.read_immediate(right)?; - this.binop_ignore_overflow(mir::BinOp::Ne, &left, &right, dest)?; + let (val, _overflowed, _ty) = + this.overflowing_binary_op(mir::BinOp::Eq, &left, &right)?; + // We're type punning a bool as an u8 here. + this.write_scalar(val, dest)?; } "const_allocate" => { // For now, for compatibility with the run-time implementation of this, we just return null. diff --git a/tests/pass/pointers.rs b/tests/pass/pointers.rs index b2e6f4556fa2..d1340a04e049 100644 --- a/tests/pass/pointers.rs +++ b/tests/pass/pointers.rs @@ -135,8 +135,8 @@ fn main() { // CTFE-specific equality tests, need to also work at runtime. let addr = &13 as *const i32; let addr2 = (addr as usize).wrapping_add(usize::MAX).wrapping_add(1); - assert!(addr.guaranteed_eq(addr2 as *const _)); - assert!(addr.guaranteed_ne(0x100 as *const _)); + assert_eq!(addr.guaranteed_eq(addr2 as *const _), Some(true)); + assert_eq!(addr.guaranteed_ne(0x100 as *const _), Some(true)); wide_ptr_ops(); metadata_vtable();