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

--- Comment #12 from Michael Matz <matz at gcc dot gnu.org> ---
But please note that Georg-Johanns question and its ensuing subthread is not
related to this specific m68k problem.  It rather deals with the situation of
what to do in the non-strict variant.

_Here_ we have a case where the target isn't even in the position to reject
an invalid address (or one that definitely _will_ become invalid), because
IRA/LRA don't make use of the strict predicates, and even if it were I don't
see any code dealing with the fall-out of the target saying that
'(plus (zero_extend(a0)) (d0))' would be invalid but 
'(plus (zero_extend(d0)) (a0))' would be valid.
(my hack rectifies this a bit in forcing LRA to just reload the whole
invalid address to another reg, but it doesn't fix all failures of this mode in
the testsuite)

That's why I struggle a bit, I lack the bigger picture, how LRA is envisioned
to deal with these situations given how targets are supposed (and still
documented)
to use the strict/nonstrict distinction of testing for legal operands.

Reply via email to