https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68937
--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to H.J. Lu from comment #1)
> There is
>
> static bool
> ix86_function_ok_for_sibcall (tree decl, tree exp)
> {
> tree type, decl_or_type;
> rtx a, b;
>
> /* If we are generating position-independent code, we cannot sibcall
> optimize direct calls to global functions, as the PLT requires
> %ebx be live. (Darwin does not have a PLT.) */
> if (!TARGET_MACHO
> && !TARGET_64BIT
> && flag_pic
> && flag_plt
> && decl && !targetm.binds_local_p (decl))
> return false;
>
> Why dos RA pick callee-saved register as GOT base in jmp?
We should remove flag_plt here. I will submit a patch.