https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118669
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
Last reconfirmed| |2025-01-27
Keywords| |internal-improvement
Summary|Misaligned store after |Misaligned store after
|after vectorization without |after vectorization without
|using misaligned type |using misaligned type with
| |SVE
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed.
(insn 29 28 0 (set (reg/f:DI 115 [ _55 ])
(reg:DI 101 [ ivtmp.19 ])) -1
(nil))
(insn 31 30 0 (set (mem:VNx4SI (reg/f:DI 115 [ _55 ]) [1 MEM <vector([4,4])
int> [(int *)_55]+0 S[16, 16] A128])
(unspec:VNx4SI [
(subreg:VNx4BI (reg:VNx16BI 127) 0)
(reg:VNx4SI 119 [ vect_vec_iv_.6 ])
] UNSPEC_PRED_X)) "/app/example.cpp":6:10 -1
(nil))
Definitely using the wrong alignment.
With -mstrict-align the alignment is correct.
Non SVE code looks correct:
;; MEM <vector(4) int> [(int *)_16] = vect_vec_iv_.8_13;
(insn 30 29 0 (set (mem:V4SI (reg:DI 101 [ ivtmp.15D.4513 ]) [1 MEM <vector(4)
intD.10> [(intD.10 *)_16]+0 S16 A32])
(reg:V4SI 109 [ vect_vec_iv_.8D.4506 ])) "/app/example.cpp":6:10 -1
(nil))