about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compiler/rustc_typeck/src/check/check.rs9
-rw-r--r--src/test/ui/simd/simd-type-generic-monomorphisation-power-of-two.rs4
-rw-r--r--src/test/ui/simd/simd-type-generic-monomorphisation-power-of-two.stderr4
-rw-r--r--src/test/ui/simd/simd-type.rs2
-rw-r--r--src/test/ui/simd/simd-type.stderr2
5 files changed, 3 insertions, 18 deletions
diff --git a/compiler/rustc_typeck/src/check/check.rs b/compiler/rustc_typeck/src/check/check.rs
index 5d7f5bf1c7b..0010d59f710 100644
--- a/compiler/rustc_typeck/src/check/check.rs
+++ b/compiler/rustc_typeck/src/check/check.rs
@@ -1161,15 +1161,6 @@ pub fn check_simd(tcx: TyCtxt<'_>, sp: Span, def_id: LocalDefId) {
                 if len == 0 {
                     struct_span_err!(tcx.sess, sp, E0075, "SIMD vector cannot be empty").emit();
                     return;
-                } else if !len.is_power_of_two() {
-                    struct_span_err!(
-                        tcx.sess,
-                        sp,
-                        E0075,
-                        "SIMD vector length must be a power of two"
-                    )
-                    .emit();
-                    return;
                 } else if len > MAX_SIMD_LANES {
                     struct_span_err!(
                         tcx.sess,
diff --git a/src/test/ui/simd/simd-type-generic-monomorphisation-power-of-two.rs b/src/test/ui/simd/simd-type-generic-monomorphisation-power-of-two.rs
index 3a0b9e02663..9b645d363e9 100644
--- a/src/test/ui/simd/simd-type-generic-monomorphisation-power-of-two.rs
+++ b/src/test/ui/simd/simd-type-generic-monomorphisation-power-of-two.rs
@@ -1,9 +1,7 @@
-// build-fail
+// run-pass
 
 #![feature(repr_simd, platform_intrinsics)]
 
-// error-pattern:monomorphising SIMD type `Simd<3_usize>` of non-power-of-two length
-
 #[repr(simd)]
 struct Simd<const N: usize>([f32; N]);
 
diff --git a/src/test/ui/simd/simd-type-generic-monomorphisation-power-of-two.stderr b/src/test/ui/simd/simd-type-generic-monomorphisation-power-of-two.stderr
deleted file mode 100644
index 82cc0d8714a..00000000000
--- a/src/test/ui/simd/simd-type-generic-monomorphisation-power-of-two.stderr
+++ /dev/null
@@ -1,4 +0,0 @@
-error: monomorphising SIMD type `Simd<3_usize>` of non-power-of-two length
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/simd/simd-type.rs b/src/test/ui/simd/simd-type.rs
index cc7443d0485..73d032a0c8e 100644
--- a/src/test/ui/simd/simd-type.rs
+++ b/src/test/ui/simd/simd-type.rs
@@ -10,7 +10,7 @@ struct empty; //~ ERROR SIMD vector cannot be empty
 struct empty2([f32; 0]); //~ ERROR SIMD vector cannot be empty
 
 #[repr(simd)]
-struct pow2([f32; 7]); //~ ERROR SIMD vector length must be a power of two
+struct pow2([f32; 7]);
 
 #[repr(simd)]
 struct i64f64(i64, f64); //~ ERROR SIMD vector should be homogeneous
diff --git a/src/test/ui/simd/simd-type.stderr b/src/test/ui/simd/simd-type.stderr
index 00c953c5282..823f10f5daf 100644
--- a/src/test/ui/simd/simd-type.stderr
+++ b/src/test/ui/simd/simd-type.stderr
@@ -34,7 +34,7 @@ error[E0075]: SIMD vector cannot have more than 32768 elements
 LL | struct TooBig([f32; 65536]);
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-error: aborting due to 7 previous errors
+error: aborting due to 6 previous errors
 
 Some errors have detailed explanations: E0075, E0076, E0077.
 For more information about an error, try `rustc --explain E0075`.