On Wed, Nov 12, 2014 at 1:02 PM, Jakub Jelinek <ja...@redhat.com> wrote: > On Wed, Nov 12, 2014 at 12:43:17PM -0800, H.J. Lu wrote: >> @@ -42686,8 +42692,12 @@ x86_output_mi_thunk (FILE *file, tree, >> HOST_WIDE_INT delta, >> else >> { >> if (ix86_cmodel == CM_LARGE_PIC && SYMBOLIC_CONST (fnaddr)) >> - fnaddr = legitimize_pic_address (fnaddr, >> - gen_rtx_REG (Pmode, tmp_regno)); >> + { >> + SET_REGNO (pic_offset_table_rtx, R11_REG); > > If pic_offset_table_rtx has never been initialized, how you can use
It is a pseudo PIC register which is uninitialized: (gdb) call debug_rtx (this_target_rtl->x_pic_offset_table_rtx) (reg:DI 89) (gdb) > SET_REGNO on it? Shouldn't that be pic_offset_table_rtx = gen_raw_REG > (Pmode, R11_REG); I added the following comments and am checking it into trunk: // CM_LARGE_PIC always uses pseudo PIC register which is // uninitialized. Since FUNCTION is local and calling it // doesn't go through PLT, we use scratch register %r11 as // PIC register and initialize it here. -- H.J. -----