diff --git a/rust-version b/rust-version index 3f00e3abe9..b517ff5b95 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -404c8471aba60c2d837fa728e7c729a0f52d5830 +c5ecc157043ba413568b09292001a4a74b541a4e diff --git a/src/shims/foreign_items.rs b/src/shims/foreign_items.rs index 4ec422cf1f..42d7958b26 100644 --- a/src/shims/foreign_items.rs +++ b/src/shims/foreign_items.rs @@ -176,7 +176,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx if let Some((original_instance, original_cnum)) = instance_and_crate { // Make sure we are consistent wrt what is 'first' and 'second'. let original_span = tcx.def_span(original_instance.def_id()).data(); - let span = tcx.def_span(def_id).data(); + let span = tcx.def_span(def_id).data(); if original_span < span { throw_machine_stop!(TerminationInfo::MultipleSymbolDefinitions { link_name, diff --git a/test-cargo-miri/build.rs b/test-cargo-miri/build.rs index 31d251bc67..72a4ee0de3 100644 --- a/test-cargo-miri/build.rs +++ b/test-cargo-miri/build.rs @@ -1,5 +1,3 @@ -#![feature(asm)] - use std::env; #[cfg(miri)] @@ -9,7 +7,7 @@ fn not_in_miri() -> i32 { // Inline assembly definitely does not work in Miri. let mut dummy = 42; unsafe { - asm!("/* {} */", in(reg) &mut dummy); + std::arch::asm!("/* {} */", in(reg) &mut dummy); } return dummy; } diff --git a/tests/run-pass/issue-91636.rs b/tests/run-pass/issue-91636.rs new file mode 100644 index 0000000000..21000bb68d --- /dev/null +++ b/tests/run-pass/issue-91636.rs @@ -0,0 +1,20 @@ +type BuiltIn = for<'a> fn(&str); + +struct Function { + inner: BuiltIn, +} + +impl Function { + fn new(subr: BuiltIn) -> Self { + Self { inner: subr } + } +} + +fn dummy(_: &str) {} + +fn main() { + let func1 = Function::new(dummy); + let func2 = Function::new(dummy); + let inner: fn(&'static _) -> _ = func1.inner; + assert!(inner == func2.inner); +}