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]

Re: RFA: patch to solve PR38583


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.
>
>


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