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: patch to fix PR63620


On Sun, Nov 9, 2014 at 8:47 AM, Vladimir Makarov <vmakarov@redhat.com> wrote:
> The following patch solves PR63620.  The details can be found
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63620
>
> The patch is more than just the problem solution.  It adds global live
> analysis for pseudos when it is necessary (live info change on a BB
> border triggers it).  The patch opens a door for global optimizations
> and transformations in LRA and it will be also useful for performance
> problems reported by people in coming LRA rematerialization.
>
> The impact on compiler time is insignificant about 0.3% on whole
> SPEC2000 compilation (and about the same on a compilation of 500K
> lines FORTRAN file).
>
> The patch was successfully bootstrapped on x86/x86-64, ppc64, and ARM and
> tested on x86/x86-64 and ppc64.
>
> Committed as rev. 217265.
>
>
> 2014-11-09  Vladimir Makarov  <vmakarov@redhat.com>
>
>         PR rtl-optimization/63620
>         * lra-constraints.c (substitute_pseudo): Add prefix lra_ to the
>         name.  Move to lra.c.  Make it external.
>         (substitute_pseudo_within_insn): Ditto.
>         (inherit_reload_reg, split_reg, remove_inheritance_pseudos): Use
>         the new names.
>         (undo_optional_reloads): Ditto.
>         * lra-int.h (lra_dump_bitmap_with_title, lra_substitute_pseudo):
>         New prototypes.
>         (lra_substitute_pseudo_within_insn): Ditto.
>         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): New.
>         (mark_regno_live): Add parameter.  Update bb_gen_pseudos.
>         (mark_regno_dead): Add parameter.  Update bb_gen_pseudos and
>         bb_killed_pseudos.
>         (struct bb_data, bb_data_t, bb_data): New.
>         (get_bb_data, get_bb_data_by_index): Ditto.
>         (all_hard_regs_bitmap): New.
>         (live_trans_fun, live_con_fun_0, live_con_fun_n, all_blocks): New.
>         (initiate_live_solver, finish_live_solver): New.
>         (process_bb_lives): Change return type.  Add code updating local
>         live data and removing dead insns.  Pass new argument to
>         mark_regno_live and mark_regno_dead.  Check changing bb pseudo
>         life info.  Return the result.
>         (lra_create_live_ranges): Add code to do global pseudo live
>         analysis.
>         (lra_live_ranges_init): Call initiate_live_solver.
>         (lra_live_ranges_finish): Call finish_live_solver.
>         * lra.c (lra_dump_bitmap_with_title): New.
>         (lra_substitute_pseudo, lra_substitute_pseudo_within_insn): Move
>         from lra-constraints.c.

It caused libjava failures:

FAIL: Array_3 execution - source compiled test
FAIL: Array_3 -findirect-dispatch execution - source compiled test
FAIL: Array_3 -O3 -findirect-dispatch execution - source compiled test
FAIL: Divide_2 execution - source compiled test
FAIL: Divide_2 -findirect-dispatch execution - source compiled test

on Linux/ia32.

-- 
H.J.


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