On Tue, Apr 19, 2011 at 5:57 PM, Richard Guenther <richard.guent...@gmail.com> wrote: > On Tue, Apr 19, 2011 at 11:41 AM, Guozhi Wei <car...@google.com> wrote: >> Reload pass tries to determine the stack frame, so it needs to check the >> push/pop lr optimization opportunity. One of the criteria is if there is any >> far jump inside the function. Unfortunately at this time gcc can't decide >> each >> instruction's length and basic block layout, so it can't know the offset of >> a jump. To be conservative it assumes every jump is a far jump. So any jump >> in a function will prevent this push/pop lr optimization. >> >> To enable the push/pop lr optimization in reload pass, I compute the possible >> maximum length of the function body. If the length is not large enough, far >> jump is not necessary, so we can safely do push/pop lr optimization. > > What about hot/cold partitioning? That might cause jumps to different > sections. > > Richard. >
The hot/cold partitioning is disabled in arm backend. http://gcc.gnu.org/ml/gcc-cvs/2009-10/msg00671.html. thanks Carrot