This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/57865] Broken _save64gpr and _rest64gpr usage


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57865

Sebastian Huber <sebastian.huber@embedded-brains.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amodra at gmail dot com
      Known to work|                            |4.8.0

--- Comment #1 from Sebastian Huber <sebastian.huber@embedded-brains.de> ---
I performed a git bisect.  This problem was introduced with this commit:

cef20746448f8897180eed3a49a3f8c68b0147f2 is the first bad commit
commit cef20746448f8897180eed3a49a3f8c68b0147f2
Author: amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Wed Apr 25 02:32:56 2012 +0000

    gcc/
        * config/rs6000/rs6000 (SAVE_INLINE_VRS, REST_INLINE_VRS,
        V_SAVE_INLINE, SAVRES_LR, SAVRES_SAVE, SAVRES_REG,
        SAVRES_GPR, SAVRES_FPR, SAVRES_VR): Define.
        (no_global_regs_above): Delete.
        (no_global_regs): New function.
        (rs6000_savres_strategy): Handle vector regs.  Use proper lr_save_p
        value for load multiple test.
        (savres_routine_syms): Increase size.
        (rs6000_savres_routine_name, rs6000_savres_routine_sym,
        ptr_regno_for_savres, rs6000_emit_savres_rtx): Pass in int selector
        rather than a number of boolean flags.  Update all callers.
        (rs6000_savres_routine_name): Generate vector save/restore names.
        (rs6000_savres_routine_sym): Handle vector regs.  Delete forward decl.
        (ptr_regno_for_savres, rs6000_emit_savres_rtx): Likewise.
        (rs6000_emit_prologue): Delete saving_FPRs_inline, saving_GPRs_inline
        and using_store_multiple.  Expand uses.  Don't always use r11 as
        frame reg when needed for out-of-line saves.  Set up initial offset
        for out-of-line vector saves when buying stack frame.  Handle pointer
        reg setup for out-of-line fp save.  Emit call to out-of-line vector
        save function.  Choose r11 or r12 for vrsave reg when available for
        better scheduling.
        (rs6000_output_function_prologue): Don't emit .extern for ELF.
        (rs6000_emit_epilogue): Choose a better frame reg when restoring
        from back-chain to suit out-of-line vector restore functions.  Emit
        call to out-of-line vector restore function.  Adjust register used
        for cr restore.  Tweak pointer register setup for gpr restore.
        * config/rs6000/rs6000.h (FIRST_SAVED_GP_REGNO): Take into account
        FIXED_R13.
        * config/rs6000/sysv4.h (FP_SAVE_INLINE, GP_SAVE_INLINE): Simplify.
        (V_SAVE_INLINE): Define.
        * config/rs6000/altivec.md (save_vregs_*, restore_vregs_*): New insns.
    libgcc/
        * config/rs6000/crtsavevr.S: New file.
        * config/rs6000/crtrestvr.S: New file.
        * config/rs6000/t-savresfgpr: Build the above.
        * config/rs6000/t-netbsd: Likewise.



    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@186800
138bc75d-0d04-0410-961f-82ee72b054a4

:040000 040000 f8dd5a05848aed385c5d1a8ec6d6a6979ea3777c
c644e474189368b21c2c950e54c75ad2cada389c M      gcc
:040000 040000 4b65af83bd972aa70908f8d3f5efad7b22ac2ce2
51b8b2f6236f0261d920ff6b5823cfdb17d8871e M      libgcc


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]