------- Comment #11 from rearnsha at gcc dot gnu dot org 2009-10-19 17:51 ------- (In reply to comment #9) > Subject: Re: FAIL: gcc.dg/tree-prof/bb-reorg.c compilation, > -fprofile-use -D_PROFILE_USE > > On Mon, 19 Oct 2009, rearnsha at gcc dot gnu dot org wrote: > > > I don't think there should be such notes on ARM due to the branch-range > > limitation. We can't arbitrarily jump between sections in Thumb state, for > > example > > Nowadays GNU ld supports generating long branch stubs on ARM. It's > intended for calls in large programs, but shouldn't it be possible to get > the compiler to generate jumps between sections within a function that the > linker can then make use the long branch stubs if necessary? (Given a > solution to the constant pools issue.) >
The compiler generated stubs are permitted to clobber registers that would not normally be affected (namely IP), so we'd need to build that knowledge into the compiler. Actually, the manual suggests the compiler can deal with this without the need for using the range-limited branches since it will generate indirect jumps. The literal-pool problem still needs to be solved though and that's non-trivial. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39247