https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69667

--- Comment #8 from Vladimir Makarov <vmakarov at gcc dot gnu.org> ---
(In reply to Michael Meissner from comment #7)
> The error is LRA requires that every register that a constraint targets be a
> valid register for the mode.  In this case, the 3 move insns that target
> TFmode (i.e. long double using the 128-bit IBM extended double format) were
> using 'ws' and 'wm' constraints.  On power8 systems can match all of the VSX
> registers by default.  However TFmode/IFmode is restricted to being in the
> traditional floating point registers.  Reload did not have a problem if some
> of the registers mapped by the constraint were unavailable for a given mode,
> but LRA doesn't like it.

I'll work on it and probably can fix it in LRA.

I only can say that it is misleading approach to use wrong constraints.  Not
only LRA and reload work with them.  For example, pseudo costs calculations
takes constraints into account and does not check the mode.  It may results in
wrong cost calculation and an inefficient code.

Reply via email to