diff options
| author | Arthur Cohen <arthur.cohen@embecosm.com> | 2022-08-17 13:43:59 +0200 |
|---|---|---|
| committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2022-09-27 15:55:42 +0200 |
| commit | 0ab2c91a2d8fe770d9fc47f06545367bab8ea302 (patch) | |
| tree | e489a82eaf2676d5d7dd699d5fb61c9142feed23 /src | |
| parent | 57ee5cf5a93923dae9c98bffb11545fc3a31368d (diff) | |
| download | rust-0ab2c91a2d8fe770d9fc47f06545367bab8ea302.tar.gz rust-0ab2c91a2d8fe770d9fc47f06545367bab8ea302.zip | |
attributes: Add #[rustc_safe_intrinsic] builtin
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustdoc/clean/types.rs | 2 | ||||
| -rw-r--r-- | src/test/rustdoc/safe-intrinsic.rs | 2 | ||||
| -rw-r--r-- | src/test/ui/error-codes/E0308.rs | 2 | ||||
| -rw-r--r-- | src/test/ui/error-codes/E0308.stderr | 2 | ||||
| -rw-r--r-- | src/test/ui/intrinsics/intrinsics-integer.rs | 6 |
5 files changed, 12 insertions, 2 deletions
diff --git a/src/librustdoc/clean/types.rs b/src/librustdoc/clean/types.rs index e53e93c4def..80bf2f2fd90 100644 --- a/src/librustdoc/clean/types.rs +++ b/src/librustdoc/clean/types.rs @@ -689,7 +689,7 @@ impl Item { let abi = tcx.fn_sig(self.item_id.as_def_id().unwrap()).abi(); hir::FnHeader { unsafety: if abi == Abi::RustIntrinsic { - intrinsic_operation_unsafety(self.name.unwrap()) + intrinsic_operation_unsafety(tcx, self.item_id.as_def_id().unwrap()) } else { hir::Unsafety::Unsafe }, diff --git a/src/test/rustdoc/safe-intrinsic.rs b/src/test/rustdoc/safe-intrinsic.rs index d3bb8514b7e..d08abdaeb14 100644 --- a/src/test/rustdoc/safe-intrinsic.rs +++ b/src/test/rustdoc/safe-intrinsic.rs @@ -1,5 +1,6 @@ #![feature(intrinsics)] #![feature(no_core)] +#![feature(rustc_attrs)] #![no_core] #![crate_name = "foo"] @@ -7,6 +8,7 @@ extern "rust-intrinsic" { // @has 'foo/fn.abort.html' // @has - '//pre[@class="rust fn"]' 'pub extern "rust-intrinsic" fn abort() -> !' + #[rustc_safe_intrinsic] pub fn abort() -> !; // @has 'foo/fn.unreachable.html' // @has - '//pre[@class="rust fn"]' 'pub unsafe extern "rust-intrinsic" fn unreachable() -> !' diff --git a/src/test/ui/error-codes/E0308.rs b/src/test/ui/error-codes/E0308.rs index fa79bee570e..dd9e0b284ea 100644 --- a/src/test/ui/error-codes/E0308.rs +++ b/src/test/ui/error-codes/E0308.rs @@ -1,6 +1,8 @@ #![feature(intrinsics)] +#![feature(rustc_attrs)] extern "rust-intrinsic" { + #[rustc_safe_intrinsic] fn size_of<T>(); //~ ERROR E0308 } diff --git a/src/test/ui/error-codes/E0308.stderr b/src/test/ui/error-codes/E0308.stderr index b71fb95e706..187b775f92d 100644 --- a/src/test/ui/error-codes/E0308.stderr +++ b/src/test/ui/error-codes/E0308.stderr @@ -1,5 +1,5 @@ error[E0308]: intrinsic has wrong type - --> $DIR/E0308.rs:4:5 + --> $DIR/E0308.rs:6:5 | LL | fn size_of<T>(); | ^^^^^^^^^^^^^^^^ expected `()`, found `usize` diff --git a/src/test/ui/intrinsics/intrinsics-integer.rs b/src/test/ui/intrinsics/intrinsics-integer.rs index bac6c8d872b..88bf42b685f 100644 --- a/src/test/ui/intrinsics/intrinsics-integer.rs +++ b/src/test/ui/intrinsics/intrinsics-integer.rs @@ -1,15 +1,21 @@ // run-pass #![feature(intrinsics)] +#![feature(rustc_attrs)] mod rusti { extern "rust-intrinsic" { + #[rustc_safe_intrinsic] pub fn ctpop<T>(x: T) -> T; + #[rustc_safe_intrinsic] pub fn ctlz<T>(x: T) -> T; pub fn ctlz_nonzero<T>(x: T) -> T; + #[rustc_safe_intrinsic] pub fn cttz<T>(x: T) -> T; pub fn cttz_nonzero<T>(x: T) -> T; + #[rustc_safe_intrinsic] pub fn bswap<T>(x: T) -> T; + #[rustc_safe_intrinsic] pub fn bitreverse<T>(x: T) -> T; } } |
