public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* LRA has been merged into trunk.
@ 2012-10-23 15:58 Vladimir Makarov
  2012-10-23 21:30 ` David Miller
                   ` (3 more replies)
  0 siblings, 4 replies; 27+ messages in thread
From: Vladimir Makarov @ 2012-10-23 15:58 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 7886 bytes --]

   Hi, I was going to merge LRA into trunk last Sunday.  It did not 
happen.  LRA was actively changed last 4 weeks by implementing 
reviewer's proposals which resulted in a lot of new LRA regressions on 
GCC testsuite in comparison with reload.  Finally, they were fixed and 
everything looks ok to me.

   So I've committed the patch into trunk as rev. 192719. The final 
patch is in the attachment.

2012-10-23  Vladimir Makarov  <vmakarov@redhat.com>

     * dbxout.c (dbxout_symbol_location): Pass new argument to
     alter_subreg.
     * dwarf2out.c: Include ira.h and lra.h.
     (based_loc_descr, compute_frame_pointer_to_fb_displacement): Use
     lra_eliminate_regs for LRA instead of eliminate_regs.
     * expr.c (emit_move_insn_1): Pass an additional argument to
     emit_move_via_integer.  Use emit_move_via_integer for LRA only if
     the insn is recognized.
     * emit-rtl.c (gen_rtx_REG): Add lra_in_progress.
     (validate_subreg): Don't check offset for LRA and floating point
     modes.
     * final.c (final_scan_insn, cleanup_subreg_operands): Pass new
     argument to alter_subreg.
     (walk_alter_subreg, output_operand): Ditto.
     (alter_subreg): Add new argument.
     * gcse.c (calculate_bb_reg_pressure): Add parameter to
     ira_setup_eliminable_regset call.
     * ira.c: Include lra.h.
     (ira_init_once, ira_init, ira_finish_once): Call lra_start_once,
     lra_init, lra_finish_once in anyway.
     (ira_setup_eliminable_regset): Add parameter.  Remove need_fp.
     Call lra_init_elimination and mark HARD_FRAME_POINTER_REGNUM as
     living forever if frame_pointer_needed.
     (setup_reg_class_relations): Set up ira_reg_class_subset.
     (ira_reg_equiv_invariant_p, ira_reg_equiv_const): Remove.
     (find_reg_equiv_invariant_const): Ditto.
     (setup_reg_renumber): Use ira_equiv_no_lvalue_p instead of
     ira_reg_equiv_invariant_p.  Skip caps for LRA.
     (setup_reg_equiv_init, ira_update_equiv_info_by_shuffle_insn): New
     functions.
     (ira_reg_equiv_len, ira_reg_equiv): New externals.
     (ira_reg_equiv): New.
     (ira_expand_reg_equiv, init_reg_equiv, finish_reg_equiv): New
     functions.
     (no_equiv, update_equiv_regs): Use ira_reg_equiv instead of
     reg_equiv_init.
     (setup_reg_equiv): New function.
     (ira_use_lra_p): New global.
     (ira): Set up lra_simple_p and ira_conflicts_p.  Set up and
     restore flag_caller_saves and flag_ira_region.  Move
     initialization of ira_obstack and ira_bitmap_obstack upper.  Call
     init_reg_equiv, setup_reg_equiv, and setup_reg_equiv_init instead
     of initialization of ira_reg_equiv_len, ira_reg_equiv_invariant_p,
     and ira_reg_equiv_const.  Call ira_setup_eliminable_regset with a
     new argument.  Don't flatten IRA IRA for LRA.  Don't reassign
     conflict allocnos for LRA. Call finish_reg_equiv.
         (do_reload): Prepare code for LRA call.  Call LRA.
     * ira.h (ira_use_lra_p): New external.
     (struct target_ira): Add members x_ira_class_subset_p
     x_ira_reg_class_subset, and x_ira_reg_classes_intersect_p.
     (ira_class_subset_p, ira_reg_class_subset): New macros.
     (ira_reg_classes_intersect_p): New macro.
     (struct ira_reg_equiv): New.
     (ira_setup_eliminable_regset): Add an argument.
     (ira_expand_reg_equiv, ira_update_equiv_info_by_shuffle_insn): New
     prototypes.
     * ira-color.c (color_pass, move_spill_restore, coalesce_allocnos):
     Use ira_equiv_no_lvalue_p.
     (coalesce_spill_slots, ira_sort_regnos_for_alter_reg): Ditto.
     * ira-emit.c (ira_create_new_reg): Call ira_expand_reg_equiv.
     (generate_edge_moves, change_loop) Use ira_equiv_no_lvalue_p.
     (emit_move_list): Simplify code.  Call
     ira_update_equiv_info_by_shuffle_insn.  Use ira_reg_equiv instead
     of ira_reg_equiv_invariant_p and ira_reg_equiv_const. Change
     assert.
     * ira-int.h (struct target_ira_int): Remove x_ira_class_subset_p
     and x_ira_reg_classes_intersect_p.
     (ira_class_subset_p, ira_reg_classes_intersect_p): Remove.
     (ira_reg_equiv_len, ira_reg_equiv_invariant_p): Ditto.
     (ira_reg_equiv_const): Ditto.
     (ira_equiv_no_lvalue_p): New function.
     * jump.c (true_regnum): Always use hard_regno for subreg_get_info
     when lra is in progress.
     * haifa-sched.c (sched_init): Pass new argument to
     ira_setup_eliminable_regset.
     * loop-invariant.c (calculate_loop_reg_pressure): Pass new
     argument to ira_setup_eliminable_regset.
     * lra.h: New.
     * lra-int.h: Ditto.
     * lra.c: Ditto.
     * lra-assigns.c: Ditto.
     * lra-constraints.c: Ditto.
     * lra-coalesce.c: Ditto.
     * lra-eliminations.c: Ditto.
     * lra-lives.c: Ditto.
     * lra-spills.c: Ditto.
     * Makefile.in (LRA_INT_H): New.
     (OBJS): Add lra.o, lra-assigns.o, lra-coalesce.o,
     lra-constraints.o, lra-eliminations.o, lra-lives.o, and
     lra-spills.o.
     (dwarf2out.o): Add dependence on ira.h and lra.h.
     (ira.o): Add dependence on lra.h.
     (lra.o, lra-assigns.o, lra-coalesce.o, lra-constraints.o): New
     entries.
     (lra-eliminations.o, lra-lives.o, lra-spills.o): Ditto.
     * output.h (alter_subreg): Add new argument.
     * rtlanal.c (simplify_subreg_regno): Permit mode changes for LRA.
     Permit ARG_POINTER_REGNUM and STACK_POINTER_REGNUM for LRA.
     * recog.c (general_operand, register_operand): Accept paradoxical
     FLOAT_MODE subregs for LRA.
     (scratch_operand): Accept pseudos for LRA.
     * rtl.h (lra_in_progress): New external.
     (debug_bb_n_slim, debug_bb_slim, print_value_slim): New
     prototypes.
     (debug_rtl_slim, debug_insn_slim): Ditto.
     * sdbout.c (sdbout_symbol): Pass new argument to alter_subreg.
     * sched-vis.c (print_value_slim): New.
     * target.def (lra_p): New hook.
     (register_priority): Ditto.
     (different_addr_displacement_p): Ditto.
     (spill_class): Ditto.
     * target-globals.h (this_target_lra_int): New external.
     (target_globals): New member lra_int.
     (restore_target_globals): Restore this_target_lra_int.
     * target-globals.c: Include lra-int.h.
     (default_target_globals): Add &default_target_lra_int.
     * targhooks.c (default_lra_p): New function.
     (default_register_priority): Ditto.
     (default_different_addr_displacement_p): Ditto.
     * targhooks.h (default_lra_p): Declare.
     (default_register_priority): Ditto.
     (default_different_addr_displacement_p): Ditto.
     * timevar.def (TV_LRA, TV_LRA_ELIMINATE, TV_LRA_INHERITANCE): New.
     (TV_LRA_CREATE_LIVE_RANGES, TV_LRA_ASSIGN, TV_LRA_COALESCE): New.
     * config/arm/arm.c (load_multiple_sequence): Pass new argument to^[OB
     alter_subreg.
     (store_multiple_sequence): Ditto.
     * config/i386/i386.h (enum ix86_tune_indices): Add
     X86_TUNE_GENERAL_REGS_SSE_SPILL.
     (TARGET_GENERAL_REGS_SSE_SPILL): New macro.
     * config/i386/i386.c (initial_ix86_tune_features): Set up
     X86_TUNE_GENERAL_REGS_SSE_SPILL for m_COREI7 and m_CORE2I7.
     (ix86_lra_p, ix86_register_priority): New functions.
     (ix86_secondary_reload): Add NON_Q_REGS, SIREG, DIREG.
     (inline_secondary_memory_needed): Change assert.
     (ix86_spill_class): New function.
     (TARGET_LRA_P, TARGET_REGISTER_BANK, TARGET_SPILL_CLASS): New
     macros.
     * config/m68k/m68k.c (emit_move_sequence): Pass new argument to
     alter_subreg.
     * config/m32r/m32r.c (gen_split_move_double): Ditto.
     * config/pa/pa.c (pa_emit_move_sequence): Ditto.
     * config/sh/sh.md: Ditto.
     * config/v850/v850.c (v850_reorg): Ditto.
     * config/xtensa/xtensa.c (fixup_subreg_mem): Ditto.
     * doc/md.texi: Add new interpretation of hint * for LRA.
     * doc/passes.texi: Describe LRA pass.
     * doc/tm.texi.in: Add TARGET_LRA_P, TARGET_REGISTER_PRIORITY,
     TARGET_DIFFERENT_ADDR_DISPLACEMENT_P, and TARGET_SPILL_CLASS.
     * doc/tm.texi: Update.



[-- Attachment #2: lra2.patch.gz --]
[-- Type: x-zip/application, Size: 125551 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread
* Re: LRA has been merged into trunk.
@ 2012-10-23 18:01 Uros Bizjak
  2012-10-23 18:45 ` Vladimir Makarov
  0 siblings, 1 reply; 27+ messages in thread
From: Uros Bizjak @ 2012-10-23 18:01 UTC (permalink / raw)
  To: gcc-patches; +Cc: Vladimir Makarov

Hello!

> Hi, I was going to merge LRA into trunk last Sunday. It did not happen. LRA was actively changed last 4 weeks by implementing reviewer's proposals which resulted in a lot of new LRA regressions on GCC testsuite in comparison with reload. Finally, they were fixed and everything looks ok to me.

> So I've committed the patch into trunk as rev. 192719. The final patch is in the attachment.

This commit introduced following testsuite failure on
x86_64-pc-linux-gnu with -m32:

FAIL: gfortran.fortran-torture/execute/intrinsic_nearest.f90,  -O2
(internal compiler error)
FAIL: gfortran.fortran-torture/execute/intrinsic_nearest.f90,  -O2
-fomit-frame-pointer -finline-functions  (internal compiler error)
FAIL: gfortran.fortran-torture/execute/intrinsic_nearest.f90,  -O2
-fomit-frame-pointer -finline-functions -funroll-loops  (internal
compiler error)
FAIL: gfortran.fortran-torture/execute/intrinsic_nearest.f90,  -O2
-fbounds-check  (internal compiler error)
FAIL: gfortran.fortran-torture/execute/intrinsic_nearest.f90,  -O3 -g
(internal compiler error)
FAIL: gfortran.fortran-torture/execute/intrinsic_nearest.f90,  -Os
(internal compiler error)
FAIL: gfortran.fortran-torture/execute/intrinsic_nearest.f90, -O2
-ftree-vectorize -msse2  (internal compiler error)

The error is:

/home/uros/gcc-svn/trunk/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_nearest.f90:
In function 'test_n':
/home/uros/gcc-svn/trunk/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_nearest.f90:77:0:
internal compiler error: in lra_assign, at lra-assigns.c:1361
0x8557e3 lra_assign()
	../../gcc-svn/trunk/gcc/lra-assigns.c:1361
0x8538bc lra(_IO_FILE*)
	../../gcc-svn/trunk/gcc/lra.c:2310
0x81bc46 do_reload
	../../gcc-svn/trunk/gcc/ira.c:4613
0x81bc46 rest_of_handle_reload
	../../gcc-svn/trunk/gcc/ira.c:4719
Please submit a full bug report,

Uros.

^ permalink raw reply	[flat|nested] 27+ messages in thread
* Re: LRA has been merged into trunk.
@ 2012-10-24 23:53 David Edelsohn
  2012-10-25  0:44 ` David Edelsohn
  0 siblings, 1 reply; 27+ messages in thread
From: David Edelsohn @ 2012-10-24 23:53 UTC (permalink / raw)
  To: Vladimir Makarov; +Cc: GCC Patches

This also causes PR bootstrap/55067 on AIX due to the use of typedef loc_t.

Thanks, David

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2012-10-26 12:07 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-23 15:58 LRA has been merged into trunk Vladimir Makarov
2012-10-23 21:30 ` David Miller
2012-10-23 23:49   ` Vladimir Makarov
2012-10-24  2:07     ` David Miller
2012-10-24  3:31       ` David Miller
2012-10-24  9:29         ` Richard Sandiford
2012-10-24  9:32           ` Jakub Jelinek
2012-10-24 10:09             ` Richard Sandiford
2012-10-25  8:14         ` David Miller
2012-10-25 15:57           ` Richard Sandiford
2012-10-25 18:26             ` David Miller
2012-10-24  8:01 ` Marc Glisse
2012-10-24  8:04   ` Matthias Klose
2012-10-24 10:21 ` Ramana Radhakrishnan
2012-10-24 10:35 ` H.J. Lu
2012-10-26  6:12   ` H.J. Lu
2012-10-26  6:21     ` David Miller
2012-10-26  6:24       ` H.J. Lu
2012-10-26  6:30         ` Jakub Jelinek
2012-10-26  6:41           ` H.J. Lu
2012-10-26 10:13             ` Richard Biener
2012-10-26 12:22               ` H.J. Lu
2012-10-23 18:01 Uros Bizjak
2012-10-23 18:45 ` Vladimir Makarov
2012-10-24 23:53 David Edelsohn
2012-10-25  0:44 ` David Edelsohn
2012-10-26  0:56   ` David Edelsohn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).