I don't see any regressions in the libjava test suite on
x86_64-apple-darwin14 at r217265 for -m32/-m64 regression testing but
I also have...

https://gcc.gnu.org/bugzilla/attachment.cgi?id=33843 from
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63622#c3

to prevent alias creation on targets that don't support aliasing and

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63534#c50

to eliminate breakage of the asan tests at -m32 from
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63773 installed in my
tree.

On Sun, Nov 9, 2014 at 3:08 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
> On Sun, Nov 9, 2014 at 8:47 AM, Vladimir Makarov <vmaka...@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  <vmaka...@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.

Reply via email to