[Bug rtl-optimization/68991] -O3 generates misaligned xorv4si3
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Jan 5 05:31:00 GMT 2016
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.
More information about the Gcc-bugs
mailing list