------- 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

Reply via email to