diff options
Diffstat (limited to 'gcc')
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) }; } |