------- Comment #4 from rsandifo at gcc dot gnu dot org 2008-02-02 09:56 ------- Subject: Bug 34981
Author: rsandifo Date: Sat Feb 2 09:55:42 2008 New Revision: 132067 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=132067 Log: gcc/ PR target/34981 * config/mips/mips-protos.h (mips_expand_call): Return an rtx. (build_mips16_call_stub): Likewise. * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO to GOT_VERSION_REGNUM. (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0. (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_ABICALLS. * config/mips/mips.c (mips_emit_call_insn): New function. (mips_call_tls_get_addr): Call mips_expand_call directly. (mips_expand_call): Update the call to build_mips16_call_stub and remove a redundant condition. Assert that MIPS16 stubs do not use lazy binding. Use mips_emit_call_insn and return the call insn. (override_options): Allow SImode for GOT_VERSION_REGNUM. (build_mips16_call_stub): Use mips_emit_call_insn rather than emit_call_insn. Return the call insn or null. (mips_avoid_hazard): Remove hazard_set handling. (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if TARGET_ABICALLS. * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to... (UNSPEC_RESTORE_GP): ...this. (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants. (FAKE_CALL_REGNO): Rename to... (GOT_VERSION_REGNUM): ...this. (type): Add "ghost" value. Add an associated insn reservation. (hazard_set): Remove. (exception_receiver): Rename to... (restore_gp): ...this and update the unspec identifier accordingly. (exception_receiver, nonlocal_got_receiver): New expanders. (load_call<mode>): Use GOT_VERSION_REGNUM. Don't set FAKE_CALL_REGNO. Remove hazard_set attribute. (set_got_version, update_got_version): New patterns. gcc/testsuite/ PR target/34981 * gcc.target/mips/lazy-binding-1.c: New test. * gcc.target/mips/mips.exp (setup_mips_tests): Set mips_abi, mips_forced_gp, mips_forced_no_abicalls, mips_forced_no_shared and mips_forced_no_er. (dg-mips-options): Avoid using -mips16 -mhard-float for ABIs other than o32 and o64. Avoid using -mabicalls with an implicit -mabi=eabi. Avoid using small data with -mabicalls. Skip -mabi=*, -G*, -mabicalls, -mshared and -mexplicit-relocs tests if the multilib forces the an incompatible option. Added: branches/gcc-4_2-branch/gcc/testsuite/gcc.target/mips/lazy-binding-1.c Modified: branches/gcc-4_2-branch/gcc/ChangeLog branches/gcc-4_2-branch/gcc/config/mips/mips-protos.h branches/gcc-4_2-branch/gcc/config/mips/mips.c branches/gcc-4_2-branch/gcc/config/mips/mips.h branches/gcc-4_2-branch/gcc/config/mips/mips.md branches/gcc-4_2-branch/gcc/testsuite/ChangeLog branches/gcc-4_2-branch/gcc/testsuite/gcc.target/mips/mips.exp -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34981