On 01/07/14 09:16, Bernd Schmidt wrote:
This is PR56791. The address inside of an autoinc is reloaded, and the
autoinc is reloaded, but the reload insns are emitted in the wrong order.
As far as I can tell, this is because find_reloads_address_1 has two
methods of pushing a reload for an autoinc, one of them using the
previously identified type, and the other (better one) using
RELOAD_OTHER. If we previously reloaded an inner part of the address,
the use of RELOAD_OTHER is mismatched and leads to the wrong order of
insns.
This patch just remembers if we've pushed a reload, and forces the
optimization to be skipped in that case. Bootstrapped and tested on
x86_64-linux (with lra_p disabled but still somewhat pointlessly); John
Anglin said in the PR that it tests ok on PA. Will commit in a few days
if no objections.
No objections to the substance of the patch, though I think the comment
could be clearer.
Jeff