On Tue, May 12, 2015 at 10:17:01PM +0000, James Bowman wrote:
> It seems that with whenever a function's frame is bigger than 512 bytes,
> LRA loops.  Likely this causes a problem because there is no actual
> instruction for subtracting constants more than 512.  However, there is a
> "link" pattern that allows this. It is puzzling.

That "link" pattern does

        (minus (reg) (imm))

but that is not canonical RTL; it should be written

        (plus (reg) (-imm))


Compile with -da to get dump files, look at the .reload one (which is
for LRA if that is enabled), stare long and hard.  I recommend coffee.

> Do you think it would be easier to make the submission as is, then debug
> the LRA issues from that point? If so, I have attached the current patch set.

You should add a -mlra option so other people can easily enable it, too;
also handy later (when it defaults to on) when LRA blows up (you can
workaround with -mno-lra then).


Segher

Reply via email to