https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120782
--- Comment #8 from Robin Dapp <rdapp at gcc dot gnu.org> --- The vlse comes from a vec_duplicate:V2DI that has a reg pointing to a "real(kind=4)", so a float. What's interesting, though, is that the MEM is supposedly 64-bit aligned (see below, A64). (insn 285 282 287 13 (set (reg:V2DI 474) (vec_duplicate:V2DI (mem:DI (reg:DI 202 [ ivtmp.4273 ]) [0 MEM <unsigned long> [(real(kind=4) *)_173]+0 S8 A64]))) "module_ra_rrtm.fppized.f90":5172:83 3602 {*vec_duplicatev2di} (nil)) We expand the vec_duplicate as vlse64.v eventually. I audited several other uses of vlse for broadcast and they appear safe (at first sight) to me. There is one split where we create a new stack slot for broadcasting a 64-bit value on rv32 but even that should be ok. So just from this issue here I'd be wary to unconditionally require TARGET_VECTOR_MISALIGN_SUPPORTED for zero-stride broadcast. I'm not very accustomed with the alignment attributes of a MEM but shouldn't they be correct/reliable? Guess I need to dig some more but from my current understanding I wouldn't rule out a frontend/middle-end issue either.