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.