https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88963
Devin Hussey <husseydevin at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |husseydevin at gmail dot com --- Comment #4 from Devin Hussey <husseydevin at gmail dot com> --- Strangely, this doesn't seem to affect the ARM or aarch64 backends, although I am on a December build (specifically Dec 29). 8.2 is also unaffected. arm-none-eabi-gcc -mfloat-abi=hard -mfpu=neon -march=armv7-a -O3 -S test.c test: vldmia r1, {d0-d7} vldmia r2, {d24-d31} vadd.i32 q8, q0, q12 vadd.i32 q9, q1, q13 vadd.i32 q10, q2, q14 vadd.i32 q11, q3, q15 vstmia r0, {d16-d23} bx lr aarch64-none-eabi-gcc -O3 -S test.c test: ld1 {v16.16b - v19.16b}, [x1] ld1 {v4.16b - v7.16b}, [x2] add v0.4s, v16.4s, v4.4s add v1.4s, v17.4s, v5.4s add v2.4s, v18.4s, v6.4s add v3.4s, v19.4s, v7.4s st1 {v0.16b - v3.16b}, [x0] ret Amusingly, Clang trunk for ARMv7-a has a similar issue (aarch64 is fine). test: .fnstart .save {r11, lr} push {r11, lr} add r3, r1, #48 mov lr, r1 mov r12, r2 vld1.64 {d20, d21}, [r3] add r3, r2, #48 add r1, r1, #32 vld1.32 {d16, d17}, [lr]! vld1.32 {d18, d19}, [r12]! vadd.i32 q8, q9, q8 vld1.64 {d22, d23}, [r3] vadd.i32 q10, q11, q10 vld1.64 {d26, d27}, [r1] add r1, r2, #32 vld1.64 {d28, d29}, [r1] add r1, r0, #48 vadd.i32 q11, q14, q13 vld1.64 {d24, d25}, [lr] vld1.64 {d18, d19}, [r12] vadd.i32 q9, q9, q12 vst1.64 {d20, d21}, [r1] add r1, r0, #32 vst1.32 {d16, d17}, [r0]! vst1.64 {d22, d23}, [r1] vst1.64 {d18, d19}, [r0] pop {r11, pc}