This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: RFA: patch to solve PR38583
- From: Kenneth Zadeck <zadeck at naturalbridge dot com>
- To: Vladimir Makarov <vmakarov at redhat dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>, Jeffrey Law <law at redhat dot com>, Kenneth Zadeck <Kenneth dot Zadeck at NaturalBridge dot com>
- Date: Mon, 05 Jan 2009 17:16:53 -0500
- Subject: Re: RFA: patch to solve PR38583
- References: <496265F9.10907@redhat.com>
Vladimir Makarov wrote:
> The following patch solves PR38583. The details of the problem can be
> found on
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38583
>
> In brief, gcc4.4 (with IRA or the old RA) needs more 9GB memory to
> compile the test in question in comparison with 2.5Gb for gcc4.3.
>
> Most memory is for conflict table and the patch don't build conflict
> table if it is going to be too big.
>
> The patch was successfully bootstrapped with and without --param
> ira-max-conflict-table-size=0 on i686 and x86_64.
>
> Ok to commit?
This is ok.
kenny
>
> 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.
>
>