aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
AgeCommit message (Collapse)AuthorFilesLines
2012-12-21re PR inline-asm/55775 (ICE when building pari)Vladimir Makarov1-23/+4
2012-12-21 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/55775 * lra-assigns.c (improve_inheritance): Do nothing after LRA_MAX_INHERITANCE_PASSES pass. * lra-constraints.c (MAX_CONSTRAINT_ITERATION_NUMBER): Rename to LRA_MAX_CONSTRAINT_ITERATION_NUMBER. Move to lra-int.h. (MAX_INHERITANCE_PASSES): Rename to LRA_MAX_INHERITANCE_PASSES. Move to lra-int.h. * lra-int.h (LRA_MAX_CONSTRAINT_ITERATION_NUMBER): Move from lra-constraints.c. (LRA_MAX_INHERITANCE_PASSES): Ditto. 2012-12-21 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/55775 * gcc.target/i386/pr55775.c: New test. From-SVN: r194680
2012-12-11re PR rtl-optimization/55193 (ICE in in simplify_const_unary_operation, at ↵Jakub Jelinek1-4/+25
simplify-rtx.c:1659) PR rtl-optimization/55193 * lra-constraints.c (loc_equivalence_callback): New function. (lra_constraints): Call simplify_replace_fn_rtx instead of loc_equivalence_change_p on DEBUG_INSNs. From-SVN: r194405
2012-12-07re PR rtl-optimization/55141 (wrong code with -fno-split-wide-types)Vladimir Makarov1-1/+2
2012-12-07 Vladimir Makarov <vmakarov@redhat.com> testsuite/gcc.target/i386/pr55141.c * lra-constraints.c (lra_constraints): Use biggest mode for df_set_regs_ever_live. 2012-12-07 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55141 * gcc.target/i386/pr55141.c: New. From-SVN: r194308
2012-11-29re PR middle-end/55456 (454.calculix in SPEC CPU 2006 is miscompiled)Vladimir Makarov1-3/+7
2012-11-29 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/55456 * lra-int.h (lra_new_regno_start): New external. * lra.c (lra_new_regno_start): New global. (lra): Set up lra_new_regno_start. * lra-constraints.c (match_reload): Sync values only for original pseudos. From-SVN: r193948
2012-11-28re PR rtl-optimization/55512 (Various LRA ICEs with inline-asm)Vladimir Makarov1-1/+1
2012-11-28 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55512 * lra-assigns.c (assign_by_spills): Assigned arbitrary hard regs to failed reload pseudos instead of changing asm pattern. * lra-constraints.c (MAX_CONSTRAINT_ITERATION_NUMBER): Increase value. 2012-11-28 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55512 * gcc.target/i386/pr55512-[1234].c: New tests. From-SVN: r193901
2012-11-27rtl.h (debug_bb_n_slim, [...]): Remove prototypes.Steven Bosscher1-21/+16
* rtl.h (debug_bb_n_slim, debug_bb_slim, debug_insn_slim): Remove prototypes. (debug_rtl_slim): Rename to dump_rtl_slim. (print_value_slim): Rename to dump_value_slim. * ira.c (ira_update_equiv_info_by_shuffle_insn): Update print_value_slim user. * lra.c (lra_process_new_insns): Use dump_insn_slim to dump single insns. Use dump_rtl_slim for insn chains. * lra-constraints.c (get_reload_reg): Update print_value_slim user. (process_addr_reg): Likewise. (equiv_address_substitution): Likewise. (inherit_reload_reg): Likewise. Use dump_insn_slim to dump single insns. (check_and_process_move): Likewise. (lra_constraints): Likewise. (split_reg): Likewise. (update_ebb_live_info): Likewise. (remove_inheritance_pseudos): Likewise. * sched-vis.c: Don't include sched-int.h. Remove #ifdef INSN_SCHEDULING tests. (print_value_slim): Rename to dump_value_slim. Simplify a few cases using GET_RTX_NAME. (print_pattern): Do not handle UNSPEC and UNSPECV here, explain why. (print_insn): Reorganize code to be independent of INSN_SCHEDULING. Always print CALL_INSN patterns. Harmonize INSN_UID dumping template. Handle NOTE_INSN_CALL_ARG_LOCATION. (dump_rtl_slim): Copied from debug_rtl_slim. (debug_rtl_slim): Wrapper around dump_rtl_slim to stderr. * haifa-sched.c (schedule_insn): Update print_insn user. From-SVN: r193873
2012-11-26re PR target/55277 (ICE in assign_by_spills, at lra-assigns.c:1217)Vladimir Makarov1-1/+3
2012-11-26 Vladimir Makarov <vmakarov@redhat.com> PR target/55277 * gcc.target/i386/pr55227.c: New test. 2012-11-26 Vladimir Makarov <vmakarov@redhat.com> PR target/55277 * lra-constraints.c (in_class_p): Check reg class contents too. From-SVN: r193824
2012-11-23re PR middle-end/55430 (LRA miscompilation of ree.c)Vladimir Makarov1-2/+12
2012-11-22 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/55430 * lra.c: Move #include "hard-reg-set.h" before #include "rtl.h". (new_insn_reg): Update biggest_mode. (collect_non_operand_hard_regs): Check eliminable regs too. (initialize_lra_reg_info_element): Initialize biggest_mode. (add_regs_to_insn_regno_info): Ignore non-allocatable non-eliminable hard regs. (lra.c): Move setting lra_no_alloc_regs before init_insn_recog_data. * lra-constraints.c (simplify_operand_subreg): Add a comment. (lra_constraints): Ignore equivalent memory of regs occuring in paradoxical subregs. * lra-lives.c (lra_create_live_ranges): Add a comment. From-SVN: r193742
2012-11-21re PR rtl-optimization/55414 (spec2006 416.gamess compilation fails on LRA)Vladimir Makarov1-17/+34
2012-11-21 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55414 * lra-constraints.c (Index): New function. (lra_constraints): Check dead equiv init insns. From-SVN: r193712
2012-11-20re PR rtl-optimization/55396 (-O2 -m32 -fno-omit-frame-pointer: internal ↵Vladimir Makarov1-1/+1
compiler error: in check_rtl, at lra.c:2007) 2012-11-20 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55396 * lra-constraints.c (get_reload_reg): Change class if it is different from reg class. From-SVN: r193678
2012-11-20[multiple changes]Uros Bizjak1-0/+13
2012-11-20 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (fix_trunc<MODEF:mode><SWI48:mode>_sse): Macroize insn from fix_trunc<mode>{si,di}_sse using SWI48 mode iterator. (peephole2 to avoid vector decoded forms): Macroize peephole2 using MODEF mode iterator. Use SWI48 mode iterator instead of SWI48x. 2012-11-20 Uros Bizjak <ubizjak@gmail.com> PR target/19398 * config/i386/i386.md (peephole2 to shorten x87->SSE reload sequences): Remove peephole2. * config/i386/i386.h (enum ix86_tune_indices) <IX86_TUNE_SHORTEN_X87_SSE>: Remove. * config/i386/i386.h (initial_ix86_tune_features): Update. 2012-11-20 Vladimir Makarov <vmakarov@redhat.com> PR target/19398 * lra-constraints.c (process_alt_operands): Discourage reloads through secodnary memory. testsuite/ChangeLog: 2012-11-20 Uros Bizjak <ubizjak@gmail.com> PR target/19398 * gcc.target/i386/pr19398.c: New test. From-SVN: r193671
2012-11-16re PR rtl-optimization/55330 (ICE: Maximum number of LRA constraint passes ↵Vladimir Makarov1-1/+20
is achieved (15) on gfortran.dg/actual_array_constructor_1.f90) 2012-11-16 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55330 * lra-constraints.c (MAX_INHERITANCE_PASSES): New macro. (lra_inheritance, lra_undo_inheritance): Use it to limit number of the passes. 2012-11-16 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55330 * gfortran.dg/pr55330.f90: New test. From-SVN: r193567
2012-11-09re PR rtl-optimization/55154 (ICE: in curr_insn_transform, at ↵Vladimir Makarov1-25/+15
lra-constraints.c:2702 with custom flags) 2012-11-09 Vladimir Makarov <vmakarov@redhat.com> PR tree-optimization/55154 * lra-int.h (LRA_LOSER_COST_FACTOR, LRA_MAX_REJECT): New macros. * lra.c (setup_operand_alternative): Use them. * lra-constraints.c (LOSER_COST_FACTOR, MAX_OVERALL_COST_BOUND): Remove. (process_alt_operands): Use LRA_LOSER_COST_FACTOR and LRA_MAX_REJECT. Accumulate reject instead of setting for non-const. (curr_insn_transform): Initialize best_losers and best_overall by INT_MAX. 2012-11-09 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55154 * gcc.target/i386/pr55154.c: New test. From-SVN: r193364
2012-11-07re PR rtl-optimization/55122 (ICE: maximum number of LRA constraint passes ↵Vladimir Makarov1-0/+18
is achieved (15)) 2012-11-07 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55122 * lra-constraints.c (match_reload): Sync values for dead input pseudos. 2012-11-07 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55122 * gcc.dg/pr55122.c: New test. From-SVN: r193310
2012-11-05re PR rtl-optimization/55151 (ICE: in assign_by_spills, at ↵Vladimir Makarov1-5/+20
lra-assigns.c:1217 with -fPIC) 2012-11-05 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55151 * lra-constraints.c (process_alt_operands): Permit putting reg value into memory. Increase reject for this case. 2012-11-05 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55151 * gcc.dg/pr55151.c: New test. From-SVN: r193170
2012-11-02re PR middle-end/55130 (ICE in insn_rhs_dead_pseudo_p, at ↵Vladimir Makarov1-7/+17
lra-constraints.c:3224) 2012-11-02 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/55130 * lra-constraints.c (debug_loc_equivalence_change_p): Rename to loc_equivalence_change_p. (lra_constraints): Check equiv_insn_bitmap for debug insn. Call loc_equivalence_change_p for non-transformed insn. 2012-11-02 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/55150 * gcc.target/i386/pr55130.c: New test. From-SVN: r193096
2012-11-01re PR middle-end/55150 (Crash in copy_rtx)Vladimir Makarov1-3/+14
2012-11-01 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/55150 * lra-constraints.c (lra_constraints): Check only pseudos with equivalences. Add insns with equivalence pseudos. 2012-11-01 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/55150 * gcc.dg/pr55150.c: Rename to gcc.dg/pr55150-1.c. * gcc.dg/pr55150-2.c: New test. From-SVN: r193065
2012-10-31re PR middle-end/55150 (Crash in copy_rtx)Vladimir Makarov1-1/+4
2012-10-31 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/55150 * lra-constraints.c (lra_constraints): Update debug insn info after equivalence change. 2012-10-31 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/55150 * gcc.dg/pr55150.c: New test. From-SVN: r193042
2012-10-31lra-constraints.c (choose_split_class): Add ATTRIBUTE_UNUSED to hard_reg_class.Joern Rennecke1-1/+2
* lra-constraints.c (choose_split_class): Add ATTRIBUTE_UNUSED to hard_reg_class. From-SVN: r193012
2012-10-30lra-constrraints.c (check_secondary_memory_needed_p): Add ATTRIBUTE_UNUSED ↵Joern Rennecke1-1/+2
to parameters. * lra-constrraints.c (check_secondary_memory_needed_p): Add ATTRIBUTE_UNUSED to parameters. From-SVN: r192993
2012-10-30defaults.h (SLOW_UNALIGNED_ACCESS): Provide default definition.Richard Sandiford1-6/+1
gcc/ * defaults.h (SLOW_UNALIGNED_ACCESS): Provide default definition. * expmed.c (SLOW_UNALIGNED_ACCESS): Remove default definition. * expr.c (SLOW_UNALIGNED_ACCESS): Likewise. * lra-constraints.c (SLOW_UNALIGNED_ACCESS): Likewise. (simplify_operand_subreg): Don't check STRICT_ALIGNMENT here. From-SVN: r192992
2012-10-29Remove trailing white spacesH.J. Lu1-94/+94
* lra-assigns.c: Remove trailing white spaces. * lra-coalesce.c: Likewise. * lra-constraints.c: Likewise. * lra-eliminations.c: Likewise. * lra-int.h: Likewise. * lra-spills.c: Likewise. * lra.c: Likewise. From-SVN: r192966
2012-10-29re PR rtl-optimization/55106 (ice: Maximum number of LRA constraint passes ↵Vladimir Makarov1-5/+72
is achieved (15)) 2012-10-28 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55106 * lra-constraints.c (skip_usage_debug_insns): New function. (check_secondary_memory_needed_p): Ditto. (inherit_reload_reg): Use the new functions. Improve debug output. From-SVN: r192904
2012-10-28rtl.h (struct rtx_def): Add a comment for member unchanging.Vladimir Makarov1-3/+5
2012-10-28 Vladimir Makarov <vmakarov@redhat.com> * rtl.h (struct rtx_def): Add a comment for member unchanging. * lra-int.h (LRA_TEMP_CLOBBER_P): New macro. (lra_hard_reg_substitution): Rename to lra_final_code_change. * lra-constraints.c (match_reload): Mark temporary clobbers. * lra-spill.c (lra_hard_reg_substitution): Rename to lra_final_code_change. Remove temporary clobbers. * lra.c (lra): Rename to lra_final_code_change. From-SVN: r192897
2012-10-26re PR bootstrap/55049 (bootstrap failed with --with-multilib-list=m32,m64,mx32)Richard Sandiford1-480/+120
gcc/ PR bootstrap/55049 * Makefile.in (rtlanal.o): Add dependency on addresses.h. * rtl.h (address_info): New structure. (strip_address_mutations, decompose_address, decompose_lea_address) (decompose_mem_address, update_address, get_index_scale) (get_index_code): Declare. * rtlanal.c: Include addresses.h. (strip_address_mutations, must_be_base_p, must_be_index_p) (set_address_segment, set_address_base, set_address_index) (set_address_disp, decompose_incdec_address, decompose_automod_address) (extract_plus_operands, baseness, decompose_normal_address) (decompose_address, decompose_lea_address, decompose_mem_address) (update_address, get_index_scale, get_index_code): New functions. * lra-constraints.c (strip_subreg): New function. (address, extract_loc_address_regs, extract_address_regs) (get_index_scale): Delete. (process_addr_reg): Apply strip_subreg to the location. (uses_hard_regs_p): Use decompose_mem_address. (valid_address_p, base_plus_disp_to_reg, can_add_disp_p) (equiv_address_substitution): Take an address_info rather than an address. Remove other arguments. Avoid using Pmode. (process_address): Use decompose_mem_address and decompose_lea_address. Update calls to above functions. From-SVN: r192837
2012-10-26lra-constraints.c (process_address): Tighten arguments to base_reg_class.Richard Sandiford1-6/+6
gcc/ * lra-constraints.c (process_address): Tighten arguments to base_reg_class. Use simplify_gen_binary to generate PLUS rtxes. From-SVN: r192836
2012-10-26lra-constraints.c (get_index_scale, [...]): New functions.Richard Sandiford1-8/+61
gcc/ * lra-constraints.c (get_index_scale, can_add_disp_p): New functions. (equiv_address_substitution): Use them. From-SVN: r192835
2012-10-26lra-constraints.c (valid_address_p): New function, split out from...Richard Sandiford1-34/+37
gcc/ * lra-constraints.c (valid_address_p): New function, split out from... (process_address): ...here. From-SVN: r192834
2012-10-26lra-constraints.c (process_address): Describe the kinds of address that we ↵Richard Sandiford1-13/+39
might see. gcc/ * lra-constraints.c (process_address): Describe the kinds of address that we might see. From-SVN: r192833
2012-10-26lra-int.h (lra_assert): Redefine it gcc_checking_assert.Vladimir Makarov1-2/+0
2012-10-25 Vladimir Makarov <vmakarov@redhat.com> * lra-int.h (lra_assert): Redefine it gcc_checking_assert. * lra-constraints.c (check_and_process_move): Remove #if ENABLE_ASSERT_CHECKING. From-SVN: r192832
2012-10-24re PR bootstrap/55049 (bootstrap failed with --with-multilib-list=m32,m64,mx32)Vladimir Makarov1-0/+6
2012-10-24 Vladimir Makarov <vmakarov@redhat.com> PR bootstrap/55049 * lra-constraints.c (extract_loc_address_regs): Pass top_p for ZERO_EXTEND operand. From-SVN: r192771
2012-10-24re PR bootstrap/55048 (libjava bootstrap failure on trunk after LRA merge)Vladimir Makarov1-0/+4
2012-10-24 Vladimir Makarov <vmakarov@redhat.com> PR bootstrap/55048 * lra-constraints.c (update_ebb_live_info): Skip non-NOTE_INSN_BASIC_BLOCK notes. From-SVN: r192770
2012-10-23lra-constraints.c (update_ebb_live_info): Process empty blocks.Vladimir Makarov1-3/+1
2012-10-23 Vladimir Makarov <vmakarov@redhat.com> * lra-constraints.c (update_ebb_live_info): Process empty blocks. From-SVN: r192743
2012-10-23dbxout.c (dbxout_symbol_location): Pass new argument to alter_subreg.Vladimir Makarov1-0/+5130
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 toOB 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. From-SVN: r192719