http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46729
--- Comment #2 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2010-12-19 12:19:16 UTC --- Author: ebotcazou Date: Sun Dec 19 12:19:12 2010 New Revision: 168049 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=168049 Log: PR target/46729 * config/sparc/sparc.h (GLOBAL_OFFSET_TABLE_REGNUM): New macro. (PIC_OFFSET_TABLE_REGNUM): Rewrite in terms of above macro. * config/sparc/sparc.c (pic_helper_needed): Delete. (global_offset_table): Likewise. (pic_helper_symbol): Rename to... (got_helper_rtx): ...this. (global_offset_table_rtx): New global variable. (sparc_got_symbol): Likewise. (sparc_got): New static function. (check_pic): Use local variable and call sparc_got. (sparc_tls_symbol): Initialize to NULL_RTX. (sparc_tls_got): In non-PIC mode, reload the GOT register for Sun TLS and 32-bit ABI and copy the GOT symbol to a new register otherwise. (get_pc_thunk_name): Rename local variable. (gen_load_pcrel_sym): New wrapper around load_pcrel_sym{si,di}. (load_pic_register): Rename to... (load_got_register): ...this. Adjust and call gen_load_pcrel_sym. (sparc_expand_prologue): Do not test flag_pic. (sparc_output_mi_thunk): Use pic_offset_table_rtx directly. (sparc_file_end): Test got_helper_rtx instead of pic_helper_needed. Rename local variable and do not call get_pc_thunk_name again. * config/sparc/sparc.md (load_pcrel_sym): Add operand #3. Modified: trunk/gcc/ChangeLog trunk/gcc/config/sparc/sparc.c trunk/gcc/config/sparc/sparc.h trunk/gcc/config/sparc/sparc.md