I merged trunk at 188913 into lra branch. Some changes were required to make lra branch bootstrapped on x86/x86-64 and ppc.
2012-06-23 Vladimir Makarov<vmaka...@redhat.com> * lra.c (check_rtl): Add arg to insn_invalid_p call. * lra-assigns.c (init_regno_assign_info): Use ira_class_hard_regs_num instead of ira_available_class_regs. (reload_pseudo_compare_func): Ditto. * lra-constraints.c (extract_loc_address_regs): Set up disp_loc first. Transfer true for context_p only when base_reg_loc is defined. Add processing UNSPEC. (process_addr_reg): Reload always for non-reg. (equiv_address_substitution): Add arg to plus_constant calls. (curr_insn_transform): Don't process addresses for operators. Change duplication updates. (inherit_reload_reg): Use ira_class_hard_regs_num instead of ira_available_class_regs. * lra-eliminations.c (for_sum, lra_eliminate_regs_1): Add arg to plus_constant calls. (eliminate_regs_in_insn): Ditto. 2012-06-25 Vladimir Makarov<vmaka...@redhat.com> * output.h (alter_subreg): Add new argument. * sdbout.c (sdbout_symbol): Pass new argument to alter_subreg. * dbxout.c (dbxout_symbol_location): Ditto. * final.c (final_scan_insn, cleanup_subreg_operands): Ditto. (walk_alter_subreg, output_operand): Ditto. (alter_subreg): Add new argument. * emit-rtl.c (gen_rtx_REG): Add lra_in_progress. * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p): Always pass true to legitimate_constant_pool_address_p when lra_in_progress. (rs6000_legitimate_address_p): Ditto. * lra-int.h (lra_update_operator_dups): New. * lra.c (lra): Put lra_in_progress after lra_hard_reg_substitution. * lra-spills.c (lra_hard_reg_substitution): Pass new argument to alter_subreg. Call lra_update_operator_dups. * lra-eliminations.c (lra_eliminate_regs_1): Pass new argument to alter_subreg. * lra-constraints.c (simplify_operand_subreg): Ditto. (curr_insn_transform): Use lra_update_operator_dups.