about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2024-05-04 18:39:45 +0200
committerRalf Jung <post@ralfj.de>2024-05-04 18:40:02 +0200
commitc6e273cccde6fac190920077f20d133acdaa158b (patch)
tree8c7708c4d70ade5329c75c1b4e518fe1a2ce9dde
parent0c989293cefeaa23390aea4f4a4dec07447b8236 (diff)
downloadrust-c6e273cccde6fac190920077f20d133acdaa158b.tar.gz
rust-c6e273cccde6fac190920077f20d133acdaa158b.zip
bless and fmt
-rw-r--r--src/tools/miri/src/intrinsics/mod.rs15
-rw-r--r--src/tools/miri/tests/fail/intrinsic_fallback_checks_ub.stderr3
2 files changed, 13 insertions, 5 deletions
diff --git a/src/tools/miri/src/intrinsics/mod.rs b/src/tools/miri/src/intrinsics/mod.rs
index 8b078921fdf..05fcaa69e78 100644
--- a/src/tools/miri/src/intrinsics/mod.rs
+++ b/src/tools/miri/src/intrinsics/mod.rs
@@ -10,8 +10,8 @@ use rustc_middle::{
     mir,
     ty::{self, FloatTy},
 };
-use rustc_target::abi::Size;
 use rustc_span::{sym, Symbol};
+use rustc_target::abi::Size;
 
 use crate::*;
 use atomic::EvalContextExt as _;
@@ -70,13 +70,20 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
                 throw_unsup_format!("unimplemented intrinsic: `{intrinsic_name}`")
             }
             let intrinsic_fallback_checks_ub = Symbol::intern("intrinsic_fallback_checks_ub");
-            if this.tcx.get_attrs_by_path(instance.def_id(), &[sym::miri, intrinsic_fallback_checks_ub]).next().is_none() {
-                throw_unsup_format!("miri can only use intrinsic fallback bodies that check UB. After verifying that `{intrinsic_name}` does so, add the `#[miri::intrinsic_fallback_checks_ub]` attribute to it; also ping @rust-lang/miri when you do that");
+            if this
+                .tcx
+                .get_attrs_by_path(instance.def_id(), &[sym::miri, intrinsic_fallback_checks_ub])
+                .next()
+                .is_none()
+            {
+                throw_unsup_format!(
+                    "miri can only use intrinsic fallback bodies that check UB. After verifying that `{intrinsic_name}` does so, add the `#[miri::intrinsic_fallback_checks_ub]` attribute to it; also ping @rust-lang/miri when you do that"
+                );
             }
             return Ok(Some(ty::Instance {
                 def: ty::InstanceDef::Item(instance.def_id()),
                 args: instance.args,
-            }))
+            }));
         }
 
         trace!("{:?}", this.dump_place(&dest.clone().into()));
diff --git a/src/tools/miri/tests/fail/intrinsic_fallback_checks_ub.stderr b/src/tools/miri/tests/fail/intrinsic_fallback_checks_ub.stderr
index b37e05c62f9..5dd6520fe42 100644
--- a/src/tools/miri/tests/fail/intrinsic_fallback_checks_ub.stderr
+++ b/src/tools/miri/tests/fail/intrinsic_fallback_checks_ub.stderr
@@ -4,7 +4,8 @@ error: unsupported operation: miri can only use intrinsic fallback bodies that c
 LL |     ptr_guaranteed_cmp::<()>(std::ptr::null(), std::ptr::null());
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ miri can only use intrinsic fallback bodies that check UB. After verifying that `ptr_guaranteed_cmp` does so, add the `#[miri::intrinsic_fallback_checks_ub]` attribute to it; also ping @rust-lang/miri when you do that
    |
-   = help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support
+   = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
+   = help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
    = note: BACKTRACE:
    = note: inside `main` at $DIR/intrinsic_fallback_checks_ub.rs:LL:CC