[llvm-commits] [llvm] r106662 - /llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp

Rafael Espindola espindola at google.com
Thu Jun 24 10:55:18 PDT 2010


> The limitation is imposed by the linker, not the compiler.  Yes,
> gcc-4.2 on darwin behaves the same way:  it does tail calls to
> functions defined in the same module, but not external calls.
>
> As Bob says, doing tail call on ARM-to-thumb calls is a loser, as can
> be seen from Rafael's example, which executes an extra instruction
> over doing the call normally.   However I would guess most external
> calls will not be cross-architecture in practice, so it might win
> pragmatically (apparently the GNU people think so, I wonder if they
> have any actual data behind this belief?).

No idea on that. If it is not a win to have the linker build stubs,
maybe we can put this behavior (not tail calling external functions)
behind  -mthumb-interwork or some other dedicated option?

Cheers,
-- 
Rafael Ávila de Espíndola




More information about the llvm-commits mailing list