diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2013-04-26 18:11:35 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2013-04-26 18:11:35 +0000 |
commit | 2c62cbaaf13c78f10657e91efdb8352dc8898b0d (patch) | |
tree | 3ca7775383b87bc08216a65ca6a01c79db2de5b3 /gcc/lra.c | |
parent | e7d764f367fdd7b0e9c96ae8c5d8503dbc90c05e (diff) | |
download | gcc-2c62cbaaf13c78f10657e91efdb8352dc8898b0d.zip gcc-2c62cbaaf13c78f10657e91efdb8352dc8898b0d.tar.gz gcc-2c62cbaaf13c78f10657e91efdb8352dc8898b0d.tar.bz2 |
rtl.h (struct rtx_def): Add comment for field jump.
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.
From-SVN: r198344
Diffstat (limited to 'gcc/lra.c')
-rw-r--r-- | gcc/lra.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -2203,6 +2203,10 @@ lra (FILE *f) timevar_push (TV_LRA); + /* Make sure that the last insn is a note. Some subsequent passes + need it. */ + emit_note (NOTE_INSN_DELETED); + COPY_HARD_REG_SET (lra_no_alloc_regs, ira_no_alloc_regs); init_reg_info (); @@ -2259,6 +2263,11 @@ lra (FILE *f) bitmap_initialize (&lra_split_regs, ®_obstack); bitmap_initialize (&lra_optional_reload_pseudos, ®_obstack); live_p = false; + if (get_frame_size () != 0 && crtl->stack_alignment_needed) + /* If we have a stack frame, we must align it now. The stack size + may be a part of the offset computation for register + elimination. */ + assign_stack_local (BLKmode, 0, crtl->stack_alignment_needed); for (;;) { for (;;) |