add: if (flag_pic >= 3) {   xops[0] = pic_offset_table_rtx;  if (do_rtl) {  emit_insn (gen_prologue_set_got_from_fs (xops[0])); } else { output_asm_insn (AS2 (mov%L0,%%fs:8,%0), xops); }  if (do_rtl) emit_insn (gen_blockage ()); return; }
context: load_pic_register (do_rtl)     int do_rtl;{  rtx xops[4];  if (TARGET_DEEP_BRANCH_PREDICTION)    {      xops[0] = pic_offset_table_rtx;      if (pic_label_rtx == 0)	{	  pic_label_rtx = gen_label_rtx ();	  ASM_GENERATE_INTERNAL_LABEL (pic_label_name, "LPR", pic_label_no++);	  LABEL_NAME (pic_label_rtx) = pic_label_name;	}      xops[1] = gen_rtx_MEM (QImode,			 gen_rtx (SYMBOL_REF, Pmode,				  LABEL_NAME (pic_label_rtx)));      if (do_rtl)	{	  emit_insn (gen_prologue_get_pc (xops[0], xops[1]));	  emit_insn (gen_prologue_set_got (xops[0],#ifdef YES_UNDERSCORES					   gen_rtx_SYMBOL_REF (Pmode,  					            "$__GLOBAL_OFFSET_TABLE_"),#else					   gen_rtx_SYMBOL_REF (Pmode,					            "$_GLOBAL_OFFSET_TABLE_"),#endif					   xops[1]));	}      else	{	  output_asm_insn (AS1 (call,%X1), xops);	  output_asm_insn ("addl $%__GLOBAL_OFFSET_TABLE_,%0", xops);	  pic_label_rtx = 0;	}    }  else    {      xops[0] = pic_offset_table_rtx;      xops[1] = gen_label_rtx ();      if (do_rtl)	{	  /* We can't put a raw CODE_LABEL into the RTL, and we can't emit	     a new CODE_LABEL after reload, so we need a single pattern to	     emit the 3 necessary instructions.  */	  emit_insn (gen_prologue_get_pc_and_set_got (xops[0]));	}      else	{	  output_asm_insn (AS1 (call,%P1), xops);	  ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L",				     CODE_LABEL_NUMBER (xops[1]));	  output_asm_insn (AS1 (pop%L0,%0), xops);	  output_asm_insn ("addl $%__GLOBAL_OFFSET_TABLE_+[.-%P1],%0", xops);	}    }  /* When -fpic, we must emit a scheduling barrier, so that the instruction     that restores %ebx (which is PIC_OFFSET_TABLE_REGNUM), does not get     moved before any instruction which implicitly uses the got.   */  if (do_rtl)    emit_insn (gen_blockage ());}