This is the mail archive of the gcc-patches@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]

patch for recent LRA changes -- another try


I'll already submitted analogous patch a few days ago. Unfortunately, it resulted in some libstdc++ test failures. This version of patch fixes the problem which was a wrong choice of insn alternatives resulted in using MMX regs.

  The patch was successfully bootstrapped on x86/x86-64.

  Committed as rev. 198344.

2013-04-26  Vladimir Makarov  <vmakarov@redhat.com>

        * rtl.h (struct rtx_def): Add comment for field jump.
        (LRA_SUBREG_P): New macro.
        * recog.c (register_operand): Check LRA_SUBREG_P.
        * lra.c (lra): Add note at the end of RTL code. Align non-empty
        stack frame.
        * lra-spills.c (lra_spill): Align stack after spilling pseudos.
        (lra_final_code_change): Skip subreg change for operators.
        * lra-eliminations.c (eliminate_regs_in_insn): Make return earlier
        if there are no operand changes.
        * lra-constraints.c (curr_insn_set): New.
        (match_reload): Set LRA_SUBREG_P.
        (emit_spill_move): Ditto.
        (check_and_process_move): Use curr_insn_set. Process only single
        set insns.  Don't initialize sec_mem_p and change_p.
        (simplify_operand_subreg): Use LRA_SUBREG_P.
        (reg_in_class_p): New function.
        (process_alt_operands): Use it.  Use #if HAVE_ATTR_enabled instead
        of #ifdef.  Add code to remove cycling.
        (process_address): Check EXTRA_CONSTRAINT_STR. Process even if
        non-null disp.  Reload inner instead of disp when base and index
        are null.  Try to put lo_sum into register.
        (EBB_PROBABILITY_CUTOFF): Redefine probability in percents.
        (check_and_process_move): Move code for move cost check to
        simple_move_p.  Remove equiv_substitution.
        (simple_move_p): New function.
        (curr_insn_transform): Initialize sec_mem_p and change_p.  Set up
        curr_insn_set.  Call check_and_process_move only for single set
        insns.  Use the new function.  Move call of check_and_process_move
        after operand equiv substitution and address process.


Attachment: lra-changes.patch
Description: Text document


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