aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2022-07-28 09:14:40 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2022-07-29 18:18:54 +0200
commitdf0dd17b89aaa16f19b3c72f4d49275757b7ea47 (patch)
tree33ba26f2fa5e9640d1c9bbad7f89071a58609e8c
parent2d824b796cde571d270f4c20af8183dbd93614d5 (diff)
downloadgcc-df0dd17b89aaa16f19b3c72f4d49275757b7ea47.zip
gcc-df0dd17b89aaa16f19b3c72f4d49275757b7ea47.tar.gz
gcc-df0dd17b89aaa16f19b3c72f4d49275757b7ea47.tar.bz2
testsuite: Calls to transmute are unsafe
-rw-r--r--gcc/testsuite/rust/compile/issue-1173.rs7
-rw-r--r--gcc/testsuite/rust/compile/torture/intrinsics-1.rs16
-rw-r--r--gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs2
-rw-r--r--gcc/testsuite/rust/compile/torture/transmute1.rs2
4 files changed, 18 insertions, 9 deletions
diff --git a/gcc/testsuite/rust/compile/issue-1173.rs b/gcc/testsuite/rust/compile/issue-1173.rs
index b08d720..5c2a917 100644
--- a/gcc/testsuite/rust/compile/issue-1173.rs
+++ b/gcc/testsuite/rust/compile/issue-1173.rs
@@ -1,14 +1,17 @@
// { dg-additional-options "-w" }
+
+#![feature(intrinsics)]
+
mod mem {
extern "rust-intrinsic" {
- fn transmute<U, V>(_: U) -> V;
+ pub fn transmute<U, V>(_: U) -> V;
}
}
pub trait Hasher {
fn write(&mut self, bytes: &[u8]);
fn write_u16(&mut self, i: u16) {
- self.write(&mem::transmute::<_, [u8; 2]>(i))
+ self.write(unsafe { &mem::transmute::<_, [u8; 2]>(i) })
}
}
diff --git a/gcc/testsuite/rust/compile/torture/intrinsics-1.rs b/gcc/testsuite/rust/compile/torture/intrinsics-1.rs
index 3c604df..6704c02 100644
--- a/gcc/testsuite/rust/compile/torture/intrinsics-1.rs
+++ b/gcc/testsuite/rust/compile/torture/intrinsics-1.rs
@@ -1,16 +1,22 @@
// { dg-additional-options -fdump-tree-original }
+#![feature(intrinsics)]
+
extern "rust-intrinsic" {
pub fn sqrtf32(x: f32) -> f32;
pub fn sinf32(x: f32) -> f32;
}
fn main() {
- let mut f32;
+ unsafe fn foo() {
+ let mut f32;
+
+ f32 = sqrtf32(5f32);
+ // { dg-final { scan-tree-dump-times {(?n)f32 = __builtin_sqrtf \(5\.0e\+0\);$} 1 original } }
- f32 = sqrtf32(5f32);
- // { dg-final { scan-tree-dump-times {(?n)f32 = __builtin_sqrtf \(5\.0e\+0\);$} 1 original } }
+ f32 = sinf32(39f32);
+ // { dg-final { scan-tree-dump-times {(?n)f32 = __builtin_sinf \(3\.9e\+1\);$} 1 original } }
+ }
- f32 = sinf32(39f32);
- // { dg-final { scan-tree-dump-times {(?n)f32 = __builtin_sinf \(3\.9e\+1\);$} 1 original } }
+ unsafe { foo() };
}
diff --git a/gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs b/gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs
index 1aef4d8..461a35d 100644
--- a/gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs
+++ b/gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs
@@ -7,5 +7,5 @@ mod mem {
fn main() {
let a = 123;
- let _b: [u32; mem::size_of::<i32>()] = mem::transmute(a);
+ let _b: [u32; mem::size_of::<i32>()] = unsafe { mem::transmute(a) };
}
diff --git a/gcc/testsuite/rust/compile/torture/transmute1.rs b/gcc/testsuite/rust/compile/torture/transmute1.rs
index 333fffe..af9a55d 100644
--- a/gcc/testsuite/rust/compile/torture/transmute1.rs
+++ b/gcc/testsuite/rust/compile/torture/transmute1.rs
@@ -7,5 +7,5 @@ mod mem {
fn main() {
let a = 123;
- let _b: [u8; mem::size_of::<i32>()] = mem::transmute(a);
+ let _b: [u8; mem::size_of::<i32>()] = unsafe { mem::transmute(a) };
}