http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55672
--- Comment #9 from Vladimir Makarov <vmakarov at gcc dot gnu.org> 2012-12-21 21:28:51 UTC --- (In reply to comment #8) > > The difference is > > --- x.s 2012-12-18 12:24:17.072888139 -0800 > +++ no-lra.s 2012-12-18 12:30:11.419157548 -0800 > @@ -14,7 +14,7 @@ main: > subl $8236, %esp > orl $0, (%esp) > addl $8204, %esp > - cmpl $4, -40(%ebp) > + cmpl $4, (%esp) > je .L2 > call abort > .L2: > > I think LRA generated code is wrong. The reason we don't allow > converting software frame pointer to hardware frame pointer is > when stack alignment is needed, hardware frame pointer is used > to save stack pointer. We can no longer use it for software > frame pointer. H.J., thanks for the explanation. Now I know what to do. I'll start to work on the solution after my vacation in 2 weeks.