diff options
| author | Stuart Cook <Zalathar@users.noreply.github.com> | 2025-07-31 18:52:10 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-31 18:52:10 +1000 |
| commit | 8cca6bce4ed595c4241ccda75cbfa627892ea4b9 (patch) | |
| tree | b0f64568e6a16b1a28f414be8d7b0638e1c26a90 /tests | |
| parent | 880113eff908e5d08ea5552f7bfd3ae86c601484 (diff) | |
| parent | fe08ba0bae44b870fdda45a98ac51f435ddfc044 (diff) | |
| download | rust-8cca6bce4ed595c4241ccda75cbfa627892ea4b9.tar.gz rust-8cca6bce4ed595c4241ccda75cbfa627892ea4b9.zip | |
Rollup merge of #144665 - scottmcm:restore-sroa-simd-check, r=compiler-errors
Re-block SRoA on SIMD types Fixes rust-lang/rust#144621
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/mir-opt/sroa/simd_sroa.foo.ScalarReplacementOfAggregates.diff | 32 | ||||
| -rw-r--r-- | tests/mir-opt/sroa/simd_sroa.rs | 18 |
2 files changed, 50 insertions, 0 deletions
diff --git a/tests/mir-opt/sroa/simd_sroa.foo.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/simd_sroa.foo.ScalarReplacementOfAggregates.diff new file mode 100644 index 00000000000..74403247108 --- /dev/null +++ b/tests/mir-opt/sroa/simd_sroa.foo.ScalarReplacementOfAggregates.diff @@ -0,0 +1,32 @@ +- // MIR for `foo` before ScalarReplacementOfAggregates ++ // MIR for `foo` after ScalarReplacementOfAggregates + + fn foo(_1: &[Simd<u8, 16>], _2: Simd<u8, 16>) -> () { + debug simds => _1; + debug _unused => _2; + let mut _0: (); + let _3: std::simd::Simd<u8, 16>; + let _4: usize; + let mut _5: usize; + let mut _6: bool; + scope 1 { + debug a => _3; + } + + bb0: { + StorageLive(_3); + StorageLive(_4); + _4 = const 0_usize; + _5 = PtrMetadata(copy _1); + _6 = Lt(copy _4, copy _5); + assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, copy _4) -> [success: bb1, unwind continue]; + } + + bb1: { + _3 = copy (*_1)[_4]; + StorageDead(_4); + StorageDead(_3); + return; + } + } + diff --git a/tests/mir-opt/sroa/simd_sroa.rs b/tests/mir-opt/sroa/simd_sroa.rs new file mode 100644 index 00000000000..1ae84d3f975 --- /dev/null +++ b/tests/mir-opt/sroa/simd_sroa.rs @@ -0,0 +1,18 @@ +//@ needs-unwind +#![feature(portable_simd)] + +// SRoA expands things even if they're unused +// <https://github.com/rust-lang/rust/issues/144621> + +use std::simd::Simd; + +// EMIT_MIR simd_sroa.foo.ScalarReplacementOfAggregates.diff +pub(crate) fn foo(simds: &[Simd<u8, 16>], _unused: Simd<u8, 16>) { + // CHECK-LABEL: fn foo + // CHECK-NOT: [u8; 16] + // CHECK: let [[SIMD:_.+]]: std::simd::Simd<u8, 16>; + // CHECK-NOT: [u8; 16] + // CHECK: [[SIMD]] = copy (*_1)[0 of 1]; + // CHECK-NOT: [u8; 16] + let a = simds[0]; +} |
