This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ARM] Why MI thunks are always implemented in ARM code?


2008/5/23 Paul Brook <paul@codesourcery.com>:

> Recent gcc is capable of generating pure Thumb thunks (and always does so for
> Thumb-2).

I noticed that in top-of-trunk but I am working thumb, not thumb2.

> Thumb branches have extremely limited range, and you can't clobber any low
> registers.  A combination of these two means that it's extremely hard to
> perform the tailcall or to add large offsets.
> I'm fairly sure there's also no way to guarantee that the thunkee is Thumb
> code.

I thought the MI thunks are emitted with the thunkee.  The
unconditional branch in thumb has 2K range and it should be sufficient
in many situations.  Currently, g++ emits MI thunks right before the
thunkee.

I am hacking a prototype to do this in the linker as a relaxation pass
but recognizing the thunk code seems very hacky to me.  The good thing
about the linker is that it can guarantee the branch target is in
thumb mode and in with the 2K range.

-Doug


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]