https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68991
--- Comment #13 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to H.J. Lu from comment #12) > (In reply to H.J. Lu from comment #9) > > With Bm constraint on SSE *mov<mode>_internal, curr_insn_transform in > > lra-constraints.c generates an extra > > > > (insn 354 353 323 8 (set (reg:V4SF 192) > > (reg:V4SF 202 [192])) 1226 {*movv4sf_internal} > > (nil)) > > > > for input: > > > > (insn 353 322 354 8 (set (reg:V4SF 202 [192]) > > (reg:V4SF 201 [192])) 1226 {*movv4sf_internal} > > (nil)) > > > LRA is OK when Bm is properly defined as > > (define_memory_constraint "Bm" > "@internal Vector memory operand." > (match_operand 0 "vector_memory_operand")) It doesn't work since process_alt_operands in LRA will treat Bm as m: case CT_MEMORY: if (MEM_P (op) && satisfies_memory_constraint_p (op, cn)) win = true; else if (spilled_pseudo_p (op)) win = true; and ignores vector_memory_operand.