diff options
author | vmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-01-06 03:50:07 +0000 |
---|---|---|
committer | vmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-01-06 03:50:07 +0000 |
commit | 95c83f01dfe88f30b6b4b16dff9765e4e6314257 (patch) | |
tree | 3ab87fe84116bf920cb2e70b665eec2ced158fdf /gcc/global.c | |
parent | 23a0ce4330926bcd8c2968b92d477122c4831980 (diff) | |
download | gcc-95c83f01dfe88f30b6b4b16dff9765e4e6314257.tar.gz |
2009-01-05 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/38583
* params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
* params.def (ira-max-conflict-table-size): New.
* doc/invoke.texi (ira-max-conflict-table-size): Decribe.
* ira.h (ira_conflicts_p): New external definition.
* ira-conflicts.c (build_conflict_bit_table): Do not build too big
table. Report this. Return result of building.
(ira_build_conflicts): Use ira_conflicts_p. Check result of
building conflict table.
* ira-color.c (fast_allocation): Use num instead of
ira_allocnos_num.
(ira_color): Use ira_conflicts_p.
* global.c: Include ira.h.
(pseudo_for_reload_consideration_p, build_insn_chain): Use
ira_conflicts_p.
* Makefile.in (global.o): Add ira.h.
* ira-build.c (mark_all_loops_for_removal,
propagate_some_info_from_allocno): New.
(remove_unnecessary_allocnos): Call
propagate_some_info_from_allocno.
(remove_low_level_allocnos): New.
(remove_unnecessary_regions): Add parameter. Call
mark_all_loops_for_removal and remove_low_level_allocnos. Pass
parameter to remove_unnecessary_regions.
(ira_build): Remove all regions but root if the conflict table was
not built. Update conflict hard regs for allocnos crossing calls.
* ira.c (ira_conflicts_p): New global.
(ira): Define and use ira_conflicts_p.
* reload1.c (compute_use_by_pseudos, reload, count_pseudo,
count_spilled_pseudo, find_reg, alter_reg, finish_spills,
emit_input_reload_insns, delete_output_reload): Use
ira_conflicts_p.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143112 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/global.c')
-rw-r--r-- | gcc/global.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/global.c b/gcc/global.c index 824fcf0f702..abf070d91c2 100644 --- a/gcc/global.c +++ b/gcc/global.c @@ -42,6 +42,7 @@ along with GCC; see the file COPYING3. If not see #include "vecprim.h" #include "dbgcnt.h" #include "ra.h" +#include "ira.h" /* This pass of the compiler performs global register allocation. It assigns hard register numbers to all the pseudo registers @@ -1394,7 +1395,7 @@ pseudo_for_reload_consideration_p (int regno) /* Consider spilled pseudos too for IRA because they still have a chance to get hard-registers in the reload when IRA is used. */ return (reg_renumber[regno] >= 0 - || (flag_ira && optimize && flag_ira_share_spill_slots)); + || (flag_ira && ira_conflicts_p && flag_ira_share_spill_slots)); } /* Walk the insns of the current function and build reload_insn_chain, @@ -1483,7 +1484,7 @@ build_insn_chain (void) if ((regno < FIRST_PSEUDO_REGISTER || reg_renumber[regno] >= 0 - || (flag_ira && optimize)) + || (flag_ira && ira_conflicts_p)) && (!DF_REF_FLAGS_IS_SET (def, DF_REF_CONDITIONAL))) { rtx reg = DF_REF_REG (def); |