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.