From d9a5df669c45204daa5e10f5221ff82026fef9e6 Mon Sep 17 00:00:00 2001 From: Jacob Lifshay Date: Wed, 2 Jun 2021 15:47:15 -0700 Subject: [PATCH] test for more SIMD monomorphization errors build-fail test for simd type with an element type that's a wide pointer test for SIMD element type of optional nonnull ptr to extern type test that wide ptr simd element type of *mut [u8] fails --- ...ric-monomorphisation-extern-nonnull-ptr.rs | 23 +++++++++++++++++++ ...-type-generic-monomorphisation-wide-ptr.rs | 12 ++++++++++ ...e-generic-monomorphisation-wide-ptr.stderr | 4 ++++ src/test/ui/simd/simd-type-wide-ptr.rs | 12 ++++++++++ src/test/ui/simd/simd-type-wide-ptr.stderr | 4 ++++ 5 files changed, 55 insertions(+) create mode 100644 src/test/ui/simd/simd-type-generic-monomorphisation-extern-nonnull-ptr.rs create mode 100644 src/test/ui/simd/simd-type-generic-monomorphisation-wide-ptr.rs create mode 100644 src/test/ui/simd/simd-type-generic-monomorphisation-wide-ptr.stderr create mode 100644 src/test/ui/simd/simd-type-wide-ptr.rs create mode 100644 src/test/ui/simd/simd-type-wide-ptr.stderr diff --git a/src/test/ui/simd/simd-type-generic-monomorphisation-extern-nonnull-ptr.rs b/src/test/ui/simd/simd-type-generic-monomorphisation-extern-nonnull-ptr.rs new file mode 100644 index 0000000000000..ae321c974b9d9 --- /dev/null +++ b/src/test/ui/simd/simd-type-generic-monomorphisation-extern-nonnull-ptr.rs @@ -0,0 +1,23 @@ +// run-pass +// ignore-emscripten + +#![feature(extern_types)] +#![feature(repr_simd)] + +use std::ptr::NonNull; + +extern { + type Extern; +} + +#[repr(simd)] +struct S(T); + +#[inline(never)] +fn identity(v: T) -> T { + v +} + +fn main() { + let _v: S<[Option>; 4]> = identity(S([None; 4])); +} diff --git a/src/test/ui/simd/simd-type-generic-monomorphisation-wide-ptr.rs b/src/test/ui/simd/simd-type-generic-monomorphisation-wide-ptr.rs new file mode 100644 index 0000000000000..3e02b08ce5da2 --- /dev/null +++ b/src/test/ui/simd/simd-type-generic-monomorphisation-wide-ptr.rs @@ -0,0 +1,12 @@ +// build-fail + +#![feature(repr_simd)] + +// error-pattern:monomorphising SIMD type `S<[*mut [u8]; 4]>` with a non-primitive-scalar (integer/float/pointer) element type `*mut [u8]` + +#[repr(simd)] +struct S(T); + +fn main() { + let _v: Option> = None; +} diff --git a/src/test/ui/simd/simd-type-generic-monomorphisation-wide-ptr.stderr b/src/test/ui/simd/simd-type-generic-monomorphisation-wide-ptr.stderr new file mode 100644 index 0000000000000..3888e7a0f38f5 --- /dev/null +++ b/src/test/ui/simd/simd-type-generic-monomorphisation-wide-ptr.stderr @@ -0,0 +1,4 @@ +error: monomorphising SIMD type `S<[*mut [u8]; 4]>` with a non-primitive-scalar (integer/float/pointer) element type `*mut [u8]` + +error: aborting due to previous error + diff --git a/src/test/ui/simd/simd-type-wide-ptr.rs b/src/test/ui/simd/simd-type-wide-ptr.rs new file mode 100644 index 0000000000000..88f62a07ea0d8 --- /dev/null +++ b/src/test/ui/simd/simd-type-wide-ptr.rs @@ -0,0 +1,12 @@ +// build-fail + +#![feature(repr_simd)] + +// error-pattern:monomorphising SIMD type `S` with a non-primitive-scalar (integer/float/pointer) element type `*mut [u8]` + +#[repr(simd)] +struct S([*mut [u8]; 4]); + +fn main() { + let _v: Option = None; +} diff --git a/src/test/ui/simd/simd-type-wide-ptr.stderr b/src/test/ui/simd/simd-type-wide-ptr.stderr new file mode 100644 index 0000000000000..51d3c00507205 --- /dev/null +++ b/src/test/ui/simd/simd-type-wide-ptr.stderr @@ -0,0 +1,4 @@ +error: monomorphising SIMD type `S` with a non-primitive-scalar (integer/float/pointer) element type `*mut [u8]` + +error: aborting due to previous error +