OSDN Git Service

2009-09-18 Neil Vachharajani <nvachhar@google.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index f423067..a3602ab 100644 (file)
+2009-09-18  Neil Vachharajani  <nvachhar@google.com>
+
+       * value-prof.c (interesting_stringop_to_profile_p): Added output
+       argument to indicate which parameter is the size parameter.
+       * value-prof.c (gimple_stringop_fixed_value): Use
+       INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
+       * value-prof.c (gimple_stringops_transform): Update call sites to
+       INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
+       * testsuite/gcc.dg/tree-prof/val-prof-7.c: Added test case.
+
+2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/38288
+       From David Binderman <dcb314@hotmail.com>:
+       * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
+       local variable f.  Remove stale comments.
+       (ix86_compute_frame_layout): Remove useless local variable total_size.
+       Remove #if 0'd code.
+       (legitimate_address_p): Remove useless local variables
+       reason_rtx and reason.
+       (ix86_split_copysign_const): Remove useless local variable op1.
+       (scale_counter): Remove useless local variable piece_size_mask.
+
+2009-09-18  Jakub Jelinek  <jakub@redhat.com>
+
+       * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
+       output decl.
+
+2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
+
+       PR target/40913
+       * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
+
+2009-09-17  Jakub Jelinek  <jakub@redhat.com>
+
+       * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
+       TYPE_STUB_DECL.
+
+2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
+
+       * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
+       DW_OP_implicit_value even without dwarf_version 4.
+
+2009-09-17  Jan Hubicka  <jh@suse.cz>
+
+       * dwarf2out.c: Include tree-pass.h and gimple.h.
+       (loc_list_plus_const): New function.
+       (loc_descriptor_from_tree_1): Rename to ...
+       (loc_descriptor_from_tree): ... remove original.
+       (loc_list_from_tree): New function.
+       (add_AT_location_description): Accept location list.
+       (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
+       (concatn_mem_loc_descriptor): Remove.
+       (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
+       returning NULL.
+       (secname_for_decl): Move up.
+       (hidden_reference_p): New function; break out from ...
+       (loc_by_refernece): ... here; move up.
+       (dw_loc_list): New function.
+       (single_element_loc_list): New function.
+       (single_element_loc_list_p): New function.
+       (add_loc_descr_to_each): New function.
+       (add_loc_list): New function.
+       (loc_descr_from_tree): Make wraper of loc_list_from_tree.
+       (loc_list_from_tree): Reroganized from loc_descr_from_tree;
+       add diagnostics why expansion failed.
+       (add_location_or_const_value_attribute): Support location lists.
+       (add_bound_info): Likewise.
+       (descr_info_loc): Update call of loc_descriptor_from_tree.
+       (gen_variable_die): Work on location lists.
+       * final.c (pass_final): Add dump file.
+       * Makefile.in (dwarf2out.o): Add new dependencies.
+
+2009-09-17  Janis Johnson  <janis187@us.ibm.com>
+
+       PR c/41049
+       * real.c decimal_from_integer, decimal_integer_string): New.
+       (real_from_integer): Use them as special case for decimal float.
+       * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
+       (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
+       Do not append zero after the decimal point in string to convert.
+
+2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
+
+       * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
+       for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
+
+2009-09-17  Martin Jambor  <mjambor@suse.cz>
+
+       * common.opt (fipa-sra): New switch.
+       * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
+       * timevar.def (TV_IPA_SRA): New timevar.
+       * params.def (ipa-sra-ptr-growth-factor): New parameter.
+       * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
+       * tree-sra.c: Include cgraph.c.
+       (enum sra_mode): Added SRA_MODE_EARLY_IPA.
+       (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
+       and grp_not_necessarilly_dereferenced.
+       (func_param_count): New variable.
+       (encountered_apply_args): New variable.
+       (bb_dereferences): New variable.
+       (final_bbs): New variable.
+       (no_accesses_representant): New variable.
+       (no_accesses_p): New function.
+       (dump_access): Dump the new fields.
+       (sra_initialize): Set encountered_apply_args to false.
+       (get_ssa_base_param): New function.
+       (mark_parm_dereference): New function.
+       (create_access): Caring for INIDRECT_REFs and different handling of
+       varialble length accesses in early IPA SRA.  Store the stmt - a new
+       parameter - to the new access.
+       (build_access_from_expr_1): New parameter stmt, passed to
+       create_access.  Handle INDIRECT_REFs.
+       (build_access_from_expr): Pass the current statement to
+       build_access_from_expr_1.
+       (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
+       passes.
+       (build_accesses_from_assign): Pass the current statement to
+       build_access_from_expr_1.  Do not create assign links in IPA-SRA.
+       (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
+       final_bbs when necessary.  Check for calls to __builtin_apply_args.
+       Fixup EH info if anythng was changed.
+       (is_unused_scalar_param): New function.
+       (ptr_parm_has_direct_uses): New function.
+       (find_param_candidates): New function.
+       (mark_maybe_modified): New function.
+       (analyze_modified_params): New function.
+       (propagate_dereference_distances): New function.
+       (dump_dereferences_table): New function.
+       (analyze_caller_dereference_legality): New function.
+       (unmodified_by_ref_scalar_representative): New function.
+       (splice_param_accesses): New function.
+       (decide_one_param_reduction): New function.
+       (enum ipa_splicing_result): New type.
+       (splice_all_param_accesses): New function.
+       (get_param_index): New function.
+       (turn_representatives_into_adjustments): New function.
+       (analyze_all_param_acesses): New function.
+       (get_replaced_param_substitute): New function.
+       (get_adjustment_for_base): New function.
+       (replace_removed_params_ssa_names): New function.
+       (sra_ipa_reset_debug_stmts): New function.
+       (sra_ipa_modify_expr): New function.
+       (sra_ipa_modify_assign): New function.
+       (convert_callers): New function.
+       (modify_function): New function.
+       (ipa_sra_preliminary_function_checks): New function.
+       (ipa_early_sra): New function.
+       (ipa_early_sra_gate): New function.
+       (pass_early_ipa_sra): New variable.
+       * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
+
+2009-09-17  Michael Matz  <matz@suse.de>
+
+       PR middle-end/41347
+       * tree.c (build_type_attribute_qual_variant): Export.
+       * tree.h (build_type_attribute_qual_variant): Declare.
+       * tree-inline.c (remap_type_1): Use it to build variants with
+       the original qualifiers and attributes.
+
+2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+       * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
+       without a fallthrough edge.
+
+2009-09-16  DJ Delorie  <dj@redhat.com>
+
+       * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
+       chip and ignore the "fast_interrupt" attribute if so.
+
+2009-09-16  Richard Henderson  <rth@redhat.com>
+
+       PR middle-end/41360
+       * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
+       barrier fix.
+
+2009-09-16  Richard Henderson  <rth@redhat.com>
+
+       PR target/41246
+       * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
+       is set only if DECL_NO_STATIC_CHAIN is unset.
+       * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
+       (FOR_EACH_NEST_INFO): New.
+       (walk_all_functions): Use it.
+       (finalize_nesting_tree): Likewise.
+       (unnest_nesting_tree): Likewise.
+       (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
+       (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
+       (convert_gimple_call): Early out if gimple_call_chain already set.
+       (convert_all_function_calls): Iterate until no new functions
+       require a static chain.
+       (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
+       when building a trampoline.  Use dump_function_to_file instead
+       of dump_function.
+       (lower_nested_functions): Open dump_file.  Validate that decls
+       that have DECL_NO_STATIC_CHAIN from the front end don't have that
+       bit reset by this pass.
+
+2009-09-16  Michael Matz  <matz@suse.de>
+
+       PR fortran/41212
+       * tree.h (struct tree_decl_common): Add decl_restricted_flag,
+       shorten decl_common_unused.
+       (DECL_RESTRICTED_P): New accessor.
+       * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
+       to disambiguate marked decls and restrict pointers.
+
+2009-09-16  Richard Henderson  <rth@redhat.com>
+
+       PR middle-end/41360
+       * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
+
+2009-09-16  Jakub Jelinek  <jakub@redhat.com>
+
+       * integrate.c (set_block_abstract_flags): Call
+       set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
+
+2009-09-16  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/34011
+       * tree-flow-inline.h (may_be_aliased): Compute readonly variables
+       as non-aliased.
+
+2009-09-16  DJ Delorie  <dj@redhat.com>
+           Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
+       (sh_expand_prologue): Update calls to output_stack_adjust.
+       (sh_expand_epilogue): Likewise.
+
+2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
+
+       PR bootstrap/41349
+       * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
+       trying to limit the extent of searches in the insn stream.
+
+2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
+           Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/41175
+       PR target/40677
+       * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
+       problem.
+       (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
+       SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
+       (rs6000_savres_strategy): Always save FP registers inline if the
+       target doesn't support hardware double-precision.  Set the above
+       bits in return value when needed.
+       (rs6000_savres_routine_sym): Fix computation for cache selector.
+       Mark the generated symbol as a function.  Rename exitp argument to
+       lr.  Move code for determining the name of the symbol...
+       (rs6000_savres_routine_name): ...here.  New function.  Add cases for
+       getting the names right on AIX and 64-bit Linux.
+       (savres_routine_name): New variable.
+       (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
+       lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
+       on what the target routine uses as a base register.  If savep && lr
+       describe saving of r0 into memory slot.
+       (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
+       line calls for AIX ABI.
+       (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
+       determine FP save/restore functions.
+       (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
+       frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
+       gen_addsi3.
+       (rs6000_emit_epilogue): Adjust computation of restore_lr.
+       Duplicate restoration of LR and execute the appropriate one
+       depending on whether GPRs are being restored inline.  Set r11 from
+       offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
+       r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
+       Fix out of line calls for AIX ABI.
+       * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
+       New insn.
+       * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
+       register 11.
+       (*restore_gpregs_spe): Likewise.
+       (*return_and_restore_gpregs_spe): Likewise.
+       * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
+       Define to empty string unconditionally.
+       * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
+       Define to empty string unconditionally.
+       (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
+       !TARGET_64BIT.
+
+2009-09-15  Jan Hubicka  <jh@suse.cz>
+
+       * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
+       * params.def (inline-insns-auto): Likewise.
+
+2009-09-15  Martin Jambor  <mjambor@suse.cz>
+
+       * ipa-inline.c (estimate_function_body_sizes): Dump info about
+       individual statements only at TDF_DETAILS dump level.  Format
+       source for 80 characters per line.
+
+2009-09-15  Christian Bruel  <christian.bruel@st.com>
+
+       * regrename.c (do_replace): Update REG_DEAD notes.
+
+2009-09-15  Revital Eres  <eres@il.ibm.com>
+
+       * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
+       * targhooks.c (default_builtin_support_vector_misalignment):
+       New builtin function.
+       * targhooks.h (default_builtin_support_vector_misalignment):
+       Declare.
+       * target.h (builtin_support_vector_misalignment):
+       New field in struct gcc_target.
+       * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
+       new builtin function.
+       * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
+       Define.
+       * config/rs6000/rs6000.c
+       (rs6000_builtin_support_vector_misalignment): New function.
+       (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
+
+2009-09-15  Jie Zhang  <jie.zhang@analog.com>
+
+       * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
+       instead of INSN_P.
+       (bfin_optimize_loop): Likewise.
+       (bfin_gen_bundles): Likewise.
+       (workaround_speculation): Likewise.
+       (find_load): Return NULL_RTX for debug_insn.
+
+2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
+       (sminsf3): Ditto.
+
+2009-09-14  DJ Delorie  <dj@redhat.com>
+
+       * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
+       * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
+       VLIW mode.
+
+2009-09-14  Richard Henderson  <rth@redhat.com>
+           Jakub Jelinek  <jakub@redhat.com>
+
+       * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
+       * cfgbuild.c (make_edges): Handle asm goto.
+       * cfglayout.c (fixup_reorder_chain): Likewise.
+       * cfgrtl.c (patch_jump_insn): Likewise.
+       * gimple-pretty-print.c (dump_gimple_asm): Likewise.
+       * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
+       (gimple_build_asm_vec): Add and use labels parameter.
+       (gimple_build_asm): Remove.
+       (walk_gimple_asm): Walk labels too.
+       * gimple.def (GIMPLE_ASM): Update docs.
+       * gimple.h: Update decls.
+       (struct gimple_statement_asm): Change nc to use unsigned char;
+       add nl member.
+       (gimple_asm_nlabels): New.
+       (gimple_asm_label_op, gimple_asm_set_label_op): New.
+       * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
+       into gimple_build_asm_vec.
+       * jump.c (mark_jump_label_asm): New.
+       (mark_jump_label): Use it.
+       (redirect_jump_1): Handle asm goto.
+       (invert_jump_1): Soft fail if X is null.
+       * recog.c (extract_asm_operands): New.
+       (asm_noperands): Use it; handle asm labels.
+       (decode_asm_operands): Use extract_asm_operands.
+       (asm_operand_ok): Properly handle empty string.
+       * reg-stack.c (get_asm_operands_in_out): Rename from
+       get_asm_operand_n_inputs; use extract_asm_operands; return both
+       inputs and outputs by reference; update all callers.
+       * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
+       * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
+       (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
+       (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
+       (extract_asm_operands): Declare.
+       * stmt.c (expand_asm_operands): Add and use labels parameter.
+       (check_unique_operand_names): Likewise.
+       (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
+       (expand_asm_stmt): Handle asm labels.
+       * tree-cfg.c (make_gimple_asm_edges): New.
+       (make_edges): Use it.
+       (cleanup_dead_labels): Handle asm labels.
+       (is_ctrl_altering_stmt): Likewise.
+       (gimple_redirect_edge_and_branch): Likewise.
+       * tree.def (ASM_EXPR): Add 5th operand.
+       * tree.h (ASM_LABELS): New.
+       (resolve_asm_operand_names): Update decl.
+
+       * c-parser.c (c_parser_asm_statement): Parse asm goto.
+       (c_parser_asm_goto_operands): New.
+       * c-tree.h (build_asm_expr): Update decl.
+       * c-typeck.c (build_asm_expr): Add and use labels parameter.
+       * doc/extend.texi: Document asm goto.
+
+2009-09-14  Richard Henderson  <rth@redhat.com>
+
+       * except.h: Update declarations.
+       (struct pointer_map_t): Forward declare.
+       (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
+       (struct eh_landing_pad_d, eh_landing_pad): New.
+       (struct eh_catch_d, eh_catch): New.
+       (struct eh_region_d): Remove next_region_sharing_label, aka,
+       label, tree_label, landing_pad, post_landing_pad, resume,
+       may_contain_throw.  Rename region_number to index.  Remove
+       u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
+       Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
+       (VEC(eh_landing_pad,gc)): New.
+       (struct eh_status): Remove last_region_number.  Add lp_array,
+       throw_stmt_table, ttype_data, ehspec_data.
+       (ehr_next, FOR_ALL_EH_REGION_AT): New.
+       (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
+       * except.c (lang_protect_cleanup_actions): Return tree.
+       (struct ehl_map_entry): Remove.
+       (init_eh_for_function): Push zero entries for region and lp_array.
+       (gen_eh_region): Add to region_array immediately.
+       (gen_eh_region_catch): Operate on eh_catch objects.
+       (gen_eh_landing_pad): New.
+       (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
+       (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
+       (get_eh_region_from_number, get_eh_region_from_number_fn): New.
+       (get_eh_landing_pad_from_number_fn): New.
+       (get_eh_landing_pad_from_number): New.
+       (get_eh_region_from_lp_number_fn): New.
+       (get_eh_region_from_lp_number): New.
+       (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
+       (get_exception_pointer, get_exception_filter): Remove.
+       (collect_eh_region_array, can_be_reached_by_runtime): Remove.
+       (current_function_has_exception_handlers): Simplify.
+       (bring_to_root, eh_region_replaceable_by_p): Remove.
+       (replace_region, hash_type_list, hash_eh_region): Remove.
+       (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
+       (label_to_region_map, num_eh_regions): Remove.
+       (get_next_region_sharing_label, must_not_throw_labels): Remove.
+       (find_exception_handler_labels): Remove.
+       (duplicate_eh_regions_0, find_prev_try): Remove.
+       (struct duplicate_eh_regions_data): New.
+       (duplicate_eh_regions_1): Rewrite.
+       (duplicate_eh_regions): Return a pointer map instead of an
+       integer offset.
+       (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
+       (redirect_eh_edge_to_label): Remove.
+       (eh_region_outermost): Rewrite using eh_region pointers
+       instead of integers.
+       (add_ttypes_entry): Update for ttype_data move to eh_status.
+       (add_ehspec_entry): Rewrite with VEC instead of varray.
+       (assign_filter_values): Likewise.  Export.
+       (build_post_landing_pads, connect_post_landing_pads): Remove.
+       (dw2_build_landing_pads): Rewrite to use lp_array.
+       (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
+       (sjlj_assign_call_site_values): Rewrite to use lp_array.
+       (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
+       (sjlj_mark_call_sites): Update for landing pad numbers.
+       (finish_eh_generation): Rewrite.
+       (gate_handle_eh): Do nothing for no eh tree.
+       (pass_rtl_eh): Move up near finish_eh_generation.
+       (remove_eh_landing_pad): New.
+       (remove_eh_handler): Export.
+       (remove_eh_region, remove_eh_handler_and_replace): Remove.
+       (for_each_eh_label): Rewrite to use lp_array.
+       (make_reg_eh_region_note): New.
+       (make_reg_eh_region_note_nothrow_nononlocal): New.
+       (insn_could_throw_p): New.
+       (copy_reg_eh_region_note_forward): New.
+       (copy_reg_eh_region_note_backward): New.
+       (check_handled, add_reachable_handler): Remove.
+       (reachable_next_level, foreach_reachable_handler): Remove.
+       (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
+       (get_eh_region_and_lp_from_rtx): New.
+       (get_eh_region_from_rtx): New.
+       (can_throw_internal_1, can_throw_external_1): Remove.
+       (can_throw_internal): Use get_eh_region_from_rtx.
+       (can_throw_external): Use get_eh_region_and_lp_from_rtx.
+       (insn_nothrow_p, can_nonlocal_goto): New.
+       (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
+       (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
+       (add_action_record): Use VEC not varray.
+       (collect_one_action_chain): Update for eh_region changes.
+       (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
+       Use get_eh_region_and_lp_from_rtx.
+       (gate_convert_to_eh_region_ranges): New.
+       (pass_convert_to_eh_region_ranges): Use it.
+       (push_uleb128, push_sleb128): Use VEC not varray.
+       (output_one_function_exception_table): Likewise.
+       (dump_eh_tree): Update for eh_region changes.
+       (verify_eh_tree): Likewise.
+       (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
+       * tree-eh.c: Include target.h.
+       (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
+       Don't disallow GIMPLE_RESX; adjust argument check.
+       (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
+       (record_stmt_eh_region): Update for landing pad numbers;
+       generate a landing pad if necessary.
+       (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
+       (remove_stmt_from_eh_lp_fn): Similarly.
+       (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
+       Update for lp numbers; don't special case missing throw_stmt_table.
+       (lookup_expr_eh_lp): Similarly.
+       (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
+       (eh_seq, eh_region_may_contain_throw): New.
+       (struct leh_state): Add ehp_region.
+       (struct leh_tf_state): Remove eh_label.
+       (emit_post_landing_pad): New.
+       (emit_resx, emit_eh_dispatch): New.
+       (note_eh_region_may_contain_throw): New.
+       (frob_into_branch_around): Take eh_region not eh label;
+       emit eh code into eh_seq.
+       (honor_protect_cleanup_actions): Early exit for no actions.  Don't
+       handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
+       lower_eh_must_not_throw.  Emit code to eh_seq.
+       (lower_try_finally_nofallthru): Emit eh code to eh_seq.
+       (lower_try_finally_onedest): Likewise.
+       (lower_try_finally_copy): Likewise.
+       (lower_try_finally_switch): Likewise.
+       (lower_try_finally): Initialize ehp_region.
+       (lower_catch): Update for eh_catch objects.
+       (lower_eh_filter): Don't handle must_not_throw.
+       (lower_eh_must_not_throw): New.
+       (lower_cleanup): Don't set eh_label.
+       (lower_eh_constructs_2): Resolve eh builtins.
+       Handle GIMPLE_EH_MUST_NOT_THROW.
+       (lower_eh_constructs): Initialize eh_region_may_contain_throw.
+       Add eh_seq to the end of the function body.
+       (make_eh_dispatch_edges): New.
+       (make_eh_edge): Remove.
+       (make_eh_edges): Simplify for landing pads.
+       (redirect_eh_edge_1): New.
+       (redirect_eh_edge): Use it.
+       (redirect_eh_dispatch_edge): New.
+       (stmt_could_throw_p): Use a switch.  Allow RESX.
+       (stmt_can_throw_external): Use lookup_stmt_eh_lp.
+       (stmt_can_throw_internal): Likewise.
+       (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
+       (maybe_clean_or_replace_eh_stmt): Update for landing pads.
+       (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
+       (gate_refactor_eh): New.
+       (pass_refactor_eh): Use it.
+       (lower_resx, execute_lower_resx, pass_lower_resx): New.
+       (lower_eh_dispatch, execute_lower_eh_dispatch): New.
+       (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
+       (remove_unreachable_handlers): Rename from
+       tree_remove_unreachable_handlers; rewrite for landing pads;
+       call remove_eh_handler directly.
+       (remove_unreachable_handlers_no_lp): New.
+       (unsplit_eh, unsplit_all_eh): New.
+       (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
+       (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
+       (cleanup_empty_eh_unsplit): New.
+       (cleanup_empty_eh): Rewrite.
+       (cleanup_all_empty_eh): New.
+       (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
+       handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
+       (gate_cleanup_eh): New.
+       (pass_cleanup_eh): Use it.
+       (verify_eh_edges): Move later in file.  Expect one EH edge.
+       (verify_eh_dispatch_edge): New.
+
+       * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
+       (gtype-desc.o): Add TARGET_H.
+       (tree.o): Use EXCEPT_H, not except.h.
+       (cfgbuild.o): Add EXPR_H.
+       (GTFILES): Add vecprim.h.
+       * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
+       BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
+       * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
+       BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
+       * calls.c (emit_call_1): Use make_reg_eh_region_note.
+       * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
+       calls to can_throw_internal.
+       (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
+       (make_edges): Don't handle RESX; use can_nonlocal_goto.
+       * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
+       (expand_gimple_stmt): Use make_reg_eh_region_note.
+       (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
+       (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
+       or find_exception_handler_labels.
+       * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
+       there is exacly one EH edge.  Use can_nonlocal_goto and
+       can_throw_internal.
+       * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
+       (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
+       * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
+       * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
+       * dce.c (deletable_insn_p_1): Don't test may_trap_p.
+       (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
+       * dse.c (scan_insn): Use insn_could_throw_p.
+       * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
+       * expr.c (expand_expr_real): Use make_reg_eh_region_note.
+       (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
+       * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
+       EXC_PTR_EXPR or FILTER_EXPR.
+       (tree_expr_nonzero_warnv_p): Likewise.
+       * function.h: Include vecprim.h, not varray.h
+       (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
+       move ttype_data and ehspec_data members to struct eh_status; change
+       action_record_data member to a VEC.
+       * gcse.c (hash_scan_set): Use can_throw_internal.
+       * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
+       * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
+       * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
+       (block_may_fallthru): Don't handle RESX_EXPR.
+       * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
+       (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
+       (dump_gimple_stmt): Dump landing pad information with TDF_EH;
+       handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
+       * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
+       GIMPLE_EH_DISPATCH, GIMPLE_RESX.
+       (gimple_size): Likewise.
+       (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
+       (gimple_build_resx): Use gimple_build_with_ops.
+       (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
+       (is_gimple_val): Likewise.
+       (is_gimple_stmt): Remove RESX_EXPR.
+       * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
+       (GIMPLE_RESX): Reorder with other EH constructs.
+       * gimple.h (struct gimple_statement_eh_mnt): New.
+       (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
+       (gimple_eh_filter_must_not_throw): Remove.
+       (gimple_eh_filter_set_must_not_throw): Remove.
+       (gimple_eh_must_not_throw_fndecl): New.
+       (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
+       (is_gimple_resx): New.
+       * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
+       Don't copy EH_FILTER_MUST_NOT_THROW.
+       * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
+       * ipa-inline.c (estimate_function_body_sizes): Don't try to
+       handle must_not_throw_labels specially.
+       * ipa-pure-const.c (check_call): Update debug statement for LP.
+       * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
+       * ipa-utils.c (get_base_var): Likewise.
+       * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
+       * lower-subreg.c (move_eh_region_note): Remove.
+       (resolve_simple_move): Use copy_reg_eh_region_note_forward.
+       * omp-low.c (new_omp_context): Update for eh_lp_nr.
+       (create_task_copyfn): Likewise.
+       (maybe_catch_exception): Use gimple_build_eh_filter.
+       * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
+       REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
+       * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
+       and pass_lower_resx.
+       * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
+       * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
+       can_throw_internal, can_nonlocal_goto.
+       * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
+       copy_reg_eh_region_note_forward.
+       (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
+       (emit_output_reload_insns): Likewise.
+       (copy_eh_notes): Remove.
+       * rtl.def (RESX): Remove.
+       * rtl.h: Update declarations.
+       * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
+       * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
+       (update_eh_label): Remove.
+       (cleanup_dead_labels_eh): New.
+       (cleanup_deal_labels): Use it instead of update_eh_label.
+       (gimple_merge_blocks): Update landing pad data structure when
+       removing a landing pad label.
+       (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
+       test; handle GIMPLE_EH_MUST_NOT_THROW.
+       (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
+       (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
+       (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
+       (verify_stmt): Likewise.  Verify landing pads.
+       (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
+       (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
+       (struct move_stmt_d): Add eh_map.
+       (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
+       (move_stmt_r): Remap eh region numbers in builtin calls,
+       resx and eh_dispatch.
+       (move_block_to_fn): Remove eh_offset parameter.  Use
+       maybe_duplicate_eh_stmt_fn.
+       (find_outermost_region_in_block): Operate on eh_region pointers
+       instead of region numbers.
+       (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
+       duplicate_eh_regions.
+       * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
+       test earlier.  Disallow EH landing pads.
+       * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
+       * tree-flow.h: Update declarations.
+       (struct tree_ann_common_d): Replace rn with lp_nr.
+       * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
+       (remap_eh_region_nr, remap_eh_region_tree_nr): New.
+       (remap_gimple_stmt): Remap eh region numbers in builtin calls,
+       resx and eh_dispatch.
+       (copy_bb): Use maybe_duplicate_eh_stmt_fn.
+       (copy_edges_for_bb): Use make_eh_dispatch_edges.
+       (copy_cfg_body): Expect eh_map instead of eh_region_offset
+       from duplicate_eh_regions.
+       (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
+       update RESX; handle EH_DISPATCH.
+       (expand_call_inline): Set eh_lp_nr, not eh_region.
+       (maybe_inline_call_in_expr): Likewise.
+       * tree-inline.h (struct copy_body_data): Replace eh_region with
+       eh_lp_nr, eh_region_offset with eh_map.
+       * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
+       * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
+       * tree-pretty-print.c (dump_generic_node): Don't handle
+       EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
+       * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
+       * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
+       EXC_PTR_EXPR, FILTER_EXPR.
+       * tree-ssa-operands.c (get_expr_operands): Likewise.
+       * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
+       * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
+       (ao_ref_init_from_vn_reference): Likewise.
+       * tree-ssa-sink.c (statement_sink_location): Likewise.
+       * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
+       (mark_virtual_phi_result_for_renaming): Export.  Tidy.
+       * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
+       EXC_PTR_EXPR, FILTER_EXPR.
+       (is_exception_related): Remove.
+       (compute_avail): Don't call it.
+       * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
+       * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
+       (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
+       (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
+       Build EH builtins.
+       (build_resx): Remove.
+       * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
+       * tree.h: Update declarations.
+       (EH_FILTER_MUST_NOT_THROW): Remove.
+       (struct tree_label_decl): Add eh_landing_pad_nr.
+       (EH_LANDING_PAD_NR): New.
+       * value-prof.c (gimple_ic): Tidy variable names.  Update for
+       landing pad numbers.
+       (gimple_stringop_fixed_value): Tidy variable names.  Assert
+       that neither call stmt can throw.
+       * vecprim.h (uchar): New.
+       (VEC(uchar,heap), VEC(uchar,gc)): New.
+
+       * c-common.c (c_define_builtins): Update call to
+       build_common_builtin_nodes.
+       * c-parser.c (c_parse_file): Don't call
+       default_init_unwind_resume_libfunc.
+
+2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
+       (mips_cprestore_address_p): Likewise.
+       (mips_save_gp_to_cprestore_slot): Likewise.
+       (mips_restore_gp): Rename to...
+       (mips_restore_gp_from_cprestore_slot): ...this.
+       (mips_must_initialize_gp_p): Declare.
+       (mips_emit_save_slot_move): Likewise.
+       (mips_output_load_label): Return nothing.
+       (mips_eh_uses): Declare.
+       * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
+       (TARGET_CPRESTORE_DIRECTIVE): New macro.
+       (TARGET_ABSOLUTE_JUMPS): Likewise.
+       (EH_USES): Likewise.
+       (FIRST_PSEUDO_REGISTER): Update comment.
+       (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
+       (MIPS_CALL): ...here.
+       (REGISTER_NAMES): Add $cprestore.
+       * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
+       Add load_label_length, has_inflexible_gp_insn_p,
+       has_flexible_gp_insn_p, must_initialize_gp_p and
+       must_restore_gp_when_clobbered_p.
+       (mips_expand_call): Don't generate split instructions here.
+       (mips_split_call): Update the call to mips_restore_gp after
+       the above name change.
+       (mips16_cfun_returns_in_fpr_p): Move earlier in file.
+       (mips_find_gp_ref): New function.
+       (mips_insn_has_inflexible_gp_ref_p): Likewise.
+       (mips_cfun_has_inflexible_gp_ref_p): Likewise.
+       (mips_insn_has_flexible_gp_ref_p): Likewise.
+       (mips_cfun_has_flexible_gp_ref_p): Likewise.
+       (mips_function_has_gp_insn): Delete.
+       (mips_global_pointer): Drop the df_regs_ever_live_p check.
+       Use the new functions above.  Only return INVALID_REGNUM
+       for TARGET_ABSOLUTE_JUMPS.
+       (mips_must_initialize_gp_p): New function.
+       (mips_get_cprestore_base_and_offset): New function, extracted from...
+       (mips_cprestore_slot): ...here.  Take a bool parameter.
+       (mips_cfun_has_cprestore_slot_p): New function.
+       (mips_cprestore_address_p): Likewise.
+       (mips_save_gp_to_cprestore_slot): Likewise.
+       (mips_restore_gp): Rename to...
+       (mips_restore_gp_from_cprestore_slot): ...this.  Assert
+       epilogue_completed.  Update the call to mips_cprestore_slot.
+       Test cfun->machine->must_restore_gp_when_clobbered_p.
+       (mips_direct_save_slot_move_p): New function.
+       (mips_emit_save_slot_move): Likewise.
+       (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
+       of cfun->machine->global_pointer.
+       (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
+       (mips_save_reg): Use mips_emit_save_slot_move.
+       (mips_expand_prologue): Set must_initialize_gp_p.
+       Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
+       for all cprestore saves.  Emit a use_cprestore instruction after
+       setting up the cprestore slot.
+       (mips_restore_reg): Use mips_emit_save_slot_move.
+       (mips_process_load_label): New function.
+       (mips_load_label_length): Likewise.
+       (mips_output_load_label): Don't return asm: output it here instead.
+       Use mips_process_load_label.
+       (mips_adjust_insn_length): Adjust the length of branch instructions
+       that have length MAX_PIC_BRANCH_LENGTH.
+       (mips_output_conditional_branch): Update the call to
+       mips_output_load_label.  Assume the branch target is OPERANDS[0]
+       rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
+       (mips_output_order_conditional_branch): Swap the meaning of
+       OPERANDS[0] and OPERANDS[1].
+       (mips_variable_issue): Don't count ghost instructions.
+       (mips_expand_ghost_gp_insns): New function.
+       (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
+       (mips_output_mi_thunk): Set must_initialize_gp_p.
+       (mips_eh_uses): New function.
+       * config/mips/predicates.md (cprestore_save_slot_operand)
+       (cprestore_load_slot_operand): New predicates.
+       * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
+       (UNSPEC_MOVE_GP): Likewise.
+       (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
+       (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
+       (CPRESTORE_SLOT_REGNUM): New register.
+       (MAX_PIC_BRANCH_LENGTH): New constant.
+       (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
+       (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
+       branches.  Fix commentary.
+       (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
+       Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
+       Change type to "ghost".
+       (loadgp_absolute_<mode>): Likewise.
+       (loadgp_rtp_<mode>): Likewise.
+       (copygp_mips16): Likewise.
+       (loadgp_blockage): Remove redundant mode attribute.
+       (potential_cprestore): New instruction.
+       (cprestore): Turn into an unspec set.
+       (use_cprestore): New instruction.
+       (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
+       (*branch_fp_inverted): Likewise.
+       (*branch_order<mode>): Likewise.
+       (*branch_order<mode>_inverted): Likewise.
+       (*branch_equality<mode>): Likewise.
+       (*branch_equality<mode>_inverted): Likewise.
+       (*branch_bit<bbv><mode>): Likewise.
+       (*branch_bit<bbv><mode>_inverted): Likewise.
+       (*branch_equality<mode>_mips16): Remove redundant mode.
+       (jump): Turn into a define_expand.
+       (*jump_absolute): New instruction.
+       (*jump_pic): Likewise.
+       (*jump_mips16): Rename previously-unnamed pattern.  Remove
+       redundant mode attribute.
+       (restore_gp): Split on epilogue_completed rather than
+       reload_completed.  Change type to "ghost".
+       (move_gp<mode>): New instruction.
+       * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
+       Remove redundant mode attribute.
+       * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
+       (bc1any4f, bc1any2t, bc1any2f): Likewise.
+       (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
+
+2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       PR target/41210
+       * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
+       are returned in the same register (vs34 or v2) that Altivec vector
+       types are returned in.
+       (rs6000_libcall_value): Ditto.
+
+       PR target/41331
+       * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
+       instead of explicit addsi3/adddi3 calls.
+       (rs6000_split_multireg_move): Ditto.
+       (rs6000_emit_allocate_stack): Ditto.
+       (rs6000_emit_prologue): Ditto.
+       (rs6000_output_mi_thunk): Ditto.
+
+       * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
+       size is 64 bits if we can use 64-bit registers.
+
+2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
+       symbols.
+
+       From Jie Zhang <jie.zhang@analog.com>:
+       * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
+       save FP and RETS with saveall attribute.
+       (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
+       with saveall attribute.
+
+       * config/bfin/bfin.c (bfin_expand_builtin,
+       case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
+       operands.
+
+       From Jie Zhang <jie.zhang@analog.com>:
+       * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
+       before use in two places.
+       * config/bfin/bfin.md (AREG): Define mode iterator.
+       (reload_in, reload_out): Use mode iterator AREG.
+
+2009-09-14  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/41350
+       * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
+       EH personality path.
+
+2009-09-13  Richard Guenther  <rguenther@suse.de>
+           Rafael Avila de Espindola  <espindola@google.com>
+
+       * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
+       (LANG_HOOKS_EH_PERSONALITY): Likewise.
+       (LANG_HOOKS_INITIALIZER): Adjust.
+       (lhd_pass_through_t): Declare.
+       * langhooks.h (struct lang_hooks): Add eh_runtime_type and
+       eh_personality.
+       * langhooks.c (lhd_pass_through_t): New function.
+       * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
+       dwarf2out_begin_prologue): Use personality from current_function_decl.
+       * expr.h (get_personality_function): Declare.
+       * expr.c (get_personality_function): New function.
+       (build_personality_function): Likewise.
+       * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
+       (eh_personality_libfunc): Remove.
+       * optabs.c (build_libfunc_function): New function split out from ...
+       (init_one_libfunc): ... here.
+       * tree.h (DECL_FUNCTION_PERSONALITY): New.
+       (tree_function_decl): Add personality.
+       (lhd_gcc_personality): Declare.
+       (build_personality_function): Likewise.
+       * tree.c (gcc_eh_personality_decl): New.
+       (lhd_gcc_personality): New function.
+       * except.h (lang_eh_runtime_type): Remove.
+       (enum eh_personality_kind): New.
+       (build_personality_function): Declare.
+       (function_needs_eh_personality): Declare.
+       * except.c (lang_eh_runtime_type): Remove.
+       (function_needs_eh_personality): New function.
+       (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
+       (sjlj_emit_function_enter, output_function_exception_table):
+       Use personality from current_function_decl.
+       * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
+       * tree-inline.c (tree_can_inline_p): Do not inline across different
+       EH personalities.
+       (expand_call_inline): Likewise.  Adjust the callers EH personality.
+       (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
+       * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
+       * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
+       (c-parser.o): Likewise
+       * c-tree.h (c_eh_initialized_p): Remove.
+       (c_maybe_initialize_eh): Likewise.
+       * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
+       (finish_decl): Don't call c_maybe_initialize_eh.
+       (c_eh_initialized_p): Remove.
+       (c_maybe_initialize_eh): Likewise.
+       * c-parser.c (c_parser_omp_construct): Likewise.
+       (c_parse_file): Initialize exception handling.
+
+2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
+
+       * config.gcc (tm_file): Remove i386/biarch32.h
+       for i?86-w64-mingw* case.
+       (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
+       support.
+       * config.host: Set for x64 mingw the option
+       use_long_long_for_widest_fast_int to yes.
+
+2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
+       * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
+       (dbxout_begin_function): Likewise.
+       * final.c (dwarf2_debug_info_emitted_p): New predicate.
+       (final_start_function): Do not emit debug info if DECL_IGNORED_P is
+       set on the function.
+       (final_end_function): Likewise.
+       (final_scan_insn): Likewise.
+       (rest_of_handle_final): Likewise.
+       * varasm.c (assemble_start_function): Likewise.
+       * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
+
+2009-09-12  Jason Merrill  <jason@redhat.com>
+
+       * dbgcnt.c (dbg_cnt_process_single_pair): constify.
+       * opts.c (common_handle_option): constify.
+
+2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
+
+       * doc/install.texi (avr): Remove obsolete reference site.
+
+2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
+       
+       * doc/install.texi (Binaries): Adjust AIX link.
+
+2009-09-12  Akim Demaille  <demaille@gostai.com>
+
+       * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
+       Use an imperative sentence.
+
+2009-09-11  Richard Henderson  <rth@redhat.com>
+
+       * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
+       structure-name and has-tree-operands arguments; update all entries.
+       * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
+       update all entries.
+       * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
+       (gsstruct_code_size): New.
+       (gss_for_code_): New.
+       (gss_for_code): Remove.
+       (gimple_size): Rewrite using gsstruct_code_size.
+       (gimple_statement_structure): Move to gimple.h.
+       * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
+       (gss_for_code, gimple_statement_structure): New.
+       (gimple_ops): Use new arrays; tidy.
+
+2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
+       operand to be a PLUS expression.
+       * config/pa/pa.c (pa_secondary_reload): Likewise.
+
+2009-09-11  Jakub Jelinek  <jakub@redhat.com>
+
+       * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
+
+       * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
+       XEXP (in_rtx, 8).
+
+2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       From Jie Zhang <jie.zhang@analog.com>:
+       * doc/extend.texi (node Function Attributes): Document l2
+       function attribute.
+       (node Blackfin Variable Attributes): Document l2 variable attributes.
+
+2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
+
+       * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
+       to match the system compiler's configuration at inflection point.
+       Add comment to remark a remaining difference with system compiler.
+
+       * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
+       * configure: Regenerate.
+
+2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       From Jie Zhang <jie.zhang@analog.com>:
+       * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
+       (bfin_handle_l2_attribute): New.
+       (bfin_attribute_table): Add l2 attribute.
+
+2009-09-11  Michael Matz  <matz@suse.de>
+
+       PR middle-end/41275
+       * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
+       on the local_decls list.
+
+2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/41276
+       PR debug/41307
+       * cselib.c (cselib_expand_value_rtx_cb): Document callback
+       interface.
+       (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
+       for VALUEs, to implement the documented interface.
+       * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
+       Adjust for VALUEs and anything else, to implement the
+       documented interface.
+
+2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
+       with actual SPE/paired vector modes before using 64-bit alignment.
+       Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
+
+2009-09-10  DJ Delorie  <dj@redhat.com>
+
+       * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
+       emitted.
+
+       * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
+       * config/mep/mep.c (mep_legitimate_constant_p): New.
+       * config/mep/mep-protos.h: Prototype it.
+
+2009-09-10  Richard Henderson  <rth@redhat.com>
+
+       * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
+
+2009-09-10  Jason Merrill  <jason@redhat.com>
+
+       * tree.c (chain_index): New fn.
+       * tree.h: Declare it.
+
+2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * config/sol2-c.c (cmn_err_length_specs): Initialize
+       scalar_identity_flag.
+
+2009-09-10  Richard Henderson  <rth@redhat.com>
+
+       * tree.h (struct tree_decl_common): Move align member earlier;
+       move label_decl_uid member ...
+       (struct tree_label_decl): ... here.
+       (LABEL_DECL_UID): Update to match.
+
+       * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
+       not TDF_DETAILS.
+
+       * tree-cfg.c (gimple_redirect_edge_and_branch): Do
+       gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
+
+       * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
+       dest_prev if the edge is complex.
+
+       * tree-cfg.c (is_ctrl_stmt): Use a switch.
+
+       * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
+       loop latch tests earlier.
+
+       * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
+       before GIMPLE_RETURN, not after its predecessor; insert
+       before GIMPLE_RESX.
+
+       * gimple-iterator.c (gimple_find_edge_insert_loc): Use
+       gimple_seq_empty_p to test for no PHI nodes.
+       * tree-cfg.c (split_critical_edges): Likewise.
+
+       * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
+
+2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
+
+       * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
+       introduced by the VTA branch merge.
+
+2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
+
+       * ira-conflicts.c: Use fputs or putc instead of fprintf
+       where appropriate.
+       * cfg.c: Ditto.
+       * toplev.c: Ditto.
+       * tree-switch-conversion.c: Ditto.
+
+2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
+
+       * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
+       introduced by the VTA branch merge.
+
+2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
+
+       Revert:
+       2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR rtl-optimization/39779
+       * expr.c (convert_modes): Return when mode == oldmode after
+       CONST_INTs are processed.
+
+2009-09-10  Nick Clifton  <nickc@redhat.com>
+
+       * config/mep/mep.c (mep_encode_section_info): Copy weakness
+       attribute and referring decl when creating renamed symbol.
+
+2009-09-10  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/41257
+       * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
+       reachable nodes.
+       (cgraph_finalize_compilation_unit): Compute reachability
+       before emitting thunks.  Properly process aliases before
+       possibly removing unreachable nodes.
+
+2009-09-10  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/41254
+       * tree.c (struct free_lang_data_d): Add worklist member.
+       (find_decls_types_r): Push onto the worklist instead of recursing.
+       Handle TREE_BINFOs properly.
+       (find_decls_types): New function wrapped around find_decls_types_r
+       to process the worklist.
+       (find_decls_types_in_eh_region): Use it.
+       (find_decls_types_in_node): Likewise.
+       (find_decls_types_in_var): Likewise.
+       (free_lang_data_in_cgraph): Likewise.  Free the worklist.
+       * tree.h (RECORD_OR_UNION_TYPE_P): New.
+       (AGGREGATE_TYPE_P): Adjust.
+
+2009-09-09  Jason Merrill  <jason@redhat.com>
+
+       * configure.ac: Check glibc version even if we have an in-tree
+       assembler.
+
+2009-09-09  Anthony Green  <green@moxielogic.com>
+
+       * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
+       the constant 0 when appropriate.
+       * config/moxie/constraints.md: Add constraint O.
+
+       * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
+       to pass up to 6 32-bit argument values in registers.
+       (moxie_function_arg): Ditto.
+       (moxie_arg_partial_bytes): Ditto.
+       * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
+       (REG_PARM_STACK_SPACE): Ditto.
+       (FUNCTION_ARG_REGNO_P): Ditto.
+
+       * config/moxie/moxie.c (moxie_expand_prologue): Use dec
+       instruction to allocate stack space.
+
+2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
+       unnecessarily stringent constraints.  Fix address
+       calculation in the splitters.
+
+2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR rtl-optimization/39779
+       * expr.c (convert_modes): Return when mode == oldmode after
+       CONST_INTs are processed.
+
+2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
+
+       PR/41315
+       * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
+       (ix86_expand_prologue): Take frame.padding0 into logic of
+       to_allocate checks.
+       (ix86_expand_epilogue): Likewise.
+
+2009-09-09  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
+       New variables.
+       (SHLIB_LINK, SHLIB_INSTALL): Use them.
+       * config/t-slibgcc-libgcc: New file.
+       * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
+
+2009-09-09  Martin Jambor  <mjambor@suse.cz>
+
+       PR tree-optimization/41089
+       * tree-sra.c (find_var_candidates): Do not consider va_lists in
+       early SRA.
+
+2009-09-09  Richard Henderson  <rth@redhat.com>
+
+       * gimple.h (CASE_GIMPLE_OMP): New.
+       (is_gimple_omp): Use it.
+       * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
+       (verify_gimple_debug): Likewise.
+
+2009-09-09  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/41101
+       * tree-ssa-pre.c (maximal_set): Remove.
+       (compute_antic_aux): Treat the maximal set as implicitly all ones.
+       Defer all blocks we didn't visit at least one successor.
+       (add_to_exp_gen): Do not add to the maximal set.
+       (make_values_for_phi): Likewise.
+       (compute_avail): Likewise.
+       (init_pre): Do not allocate the maximal set.
+       (execute_pre): Do not dump it.
+
+2009-09-09  Martin Jambor  <mjambor@suse.cz>
+
+       * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
+       an SSA_NAME rather than a is_gimple_variable.
+
 2009-09-09  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/41317
        (insn_reservation "loadsp"): New.
        (insn_reservation "load_stall1"): New.
        (insn_reservation "load_stall3"): New.
-       (stall): New insn.      
+       (stall): New insn.
        * config/bfin/predicates.md (const1_operand, const3_operand): New.
        (mem_p_address_operand): Exclude stack and frame pointer based
        addresses.
        From Mike Frysinger  <michael.frysinger@analog.com>
        * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
        BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
-       * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m, bf547m,
-       bf548m, and bf549m.
+       * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
+       bf547m, bf548m, and bf549m.
        * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
-       for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M, __ADSPBF547M__
-       for BFIN_CPU_BF547M, __ADSPBF548M__ for BFIN_CPU_BF548M, and
-       __ADSPBF549M__ for BFIN_CPU_BF549M.
+       for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
+       __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
+       BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
        * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
        bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
        * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
        bf542m, bf544m, bf547m, bf548m, and bf549m.
 
        From Jie Zhang <jie.zhang@analog.com>:
-       * config/bfin/predicates.md (p_register_operand): New
-       predicate.
+       * config/bfin/predicates.md (p_register_operand): New predicate.
        (dp_register_operand): New predicate.
        * config/bfin/bfin-protos.h (WA_05000074): Define.
        (ENABLE_WA_05000074): Define.
-       * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for
-       all cpus.
+       * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
        (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
        * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
-       (define_attr addrtype): Allow load/store register to be
-       P register.
+       (define_attr addrtype): Allow load/store register to be P register.
        (define_attr storereg): New.
        (define_cpu_unit anomaly_05000074): New.
        (define_insn_reservation dsp32shiftimm): New.
 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
 
        PR c++/41214
-        * unwind-dw2.c (uw_init_context_1): Mark noinline.
+       * unwind-dw2.c (uw_init_context_1): Mark noinline.
        * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
        * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
 
        this_is_library_file but for the %T constructor.
        (end_going_arg): If this_is_linker_script is set then locate the
        script and insert a --script switch before it
-        (do_spec_2): Initialise this_is_linker_script.
-        (do_spec_1): Likewise.  Handle %T construct.
-        (eval_spec_function): Preserve this_is_linker_script.
+       (do_spec_2): Initialise this_is_linker_script.
+       (do_spec_1): Likewise.  Handle %T construct.
+       (eval_spec_function): Preserve this_is_linker_script.
        * doc/invoke.texi: Document %T construct in spec files.
        * config/m32c/m32c.h (LIB_SPEC): Use it.
 
 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
-       * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.       
+       * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
        * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
        when volatile flag is set.
        * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
        expand_expr_real_2): Declare.
        * expr.c (emit_storent_insn, expand_expr_real_1,
        expand_expr_real_2): Export.
-       (store_expr): Setting and evaluating dont_return_target is
-       useless.
+       (store_expr): Setting and evaluating dont_return_target is useless.
        (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
        LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
        * except.c (expand_resx_expr): Rename to ...
        (update_register_pressure, setup_insn_max_reg_pressure,
        update_reg_and_insn_max_reg_pressure,
        sched_setup_bb_reg_pressure_info): New functions.
-       (schedule_insn): Add code for printing and updating reg pressure
-       info.
+       (schedule_insn): Add code for printing and updating reg pressure info.
        (find_set_reg_weight, find_insn_reg_weight): Remove.
        (ok_for_early_queue_removal): Do nothing if pressure_only_p.
        (debug_ready_list): Print reg pressure info.
        (common_classes): Rename to regno_cover_class.
        (COST_INDEX): New.
        (record_reg_classes): Set allocno attributes only if allocno_p.
-       (record_address_regs): Ditto.  Use COST_INDEX instead of
-       ALLOCNO_NUM.
+       (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
        (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
        and COSTS_OF_ALLOCNO.
        (print_costs): Rename to print_allocno_costs.
        (setup_reg_classes): Add new parameter.
 
        * sched-int.h (struct deps_reg): New member implicit_sets.
-       (sched_pressure_p, sched_regno_cover_class): New external
-       definitions.
+       (sched_pressure_p, sched_regno_cover_class): New external definitions.
        (INCREASE_BITS): New macro.
        (struct reg_pressure_data, struct reg_use_data): New.
        (struct _haifa_insn_data): Remove reg_weight.  Add members
        (struct reg_pressure_data, struct reg_use_data): New.
        (INSN_REG_WEIGHT): Remove.
        (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
-       INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New
-       macros.
+       INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
        (sched_init_region_reg_pressure_info,
        sched_setup_bb_reg_pressure_info): New prototypes.
 
        (resize_reg_info): Use reg_info_size.  Return flag of resizing.
        (setup_reg_classes): Add a new parameter.  Setup cover class too.
 
-       * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to the
-       dependencies.
+       * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
+       the dependencies.
 
        * sched-rgn.c (deps_join): Set up implicit_sets.
        (schedule_region): Set up region and basic blocks pressure
        * regrename.c (regrename_optimize): Drop last.  Don't count debug
        insns as uses.  Don't reject change because of debug insn.
        (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
-       from the chain starter, and check for inexact matches in
-       DEBUG_INSNS.
+       from the chain starter, and check for inexact matches in DEBUG_INSNS.
        (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
        (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
        * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
        (fur_orig_expr_not_found): Skip debug insns.
        * rtl.def (VALUE): Move up.
        (DEBUG_INSN): New.
-       * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug
-       stmts.
+       * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
        (nearest_common_dominator_of_uses): Take debug_stmts argument.
        Set it if debug stmts are found.
        (statement_sink_location): Skip debug stmts.  Propagate
        in its expression.
        * cfgbuild.c (inside_basic_block_p): Handle debug insns.
        (control_flow_insn_p): Likewise.
-       * tree-parloops.c (eliminate_local_variables_stmt): Handle debug
-       stmt.
+       * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
        (separate_decls_in_region_debug_bind): New.
        (separate_decls_in_region): Process debug bind stmts afterwards.
        * recog.c (verify_changes): Handle debug insns.
        * function.c (instantiate_virtual_regs): Handle debug insns.
        * function.h (struct emit_status): Add x_cur_debug_insn_uid.
        * print-rtl.h: Include cselib.h.
-       (print_rtx): Print VALUEs.  Split out and recurse for
-       VAR_LOCATIONs.
+       (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
        * df.h (df_inns_rescan_debug_internal): Declare.
        * gcse.c (alloc_hash_table): Estimate n_insns.
        (cprop_insn): Don't regard debug insns as changes.
        (cselib_subst_to_values): Adjust.
        (cselib_log_lookup): New.
        (cselib_lookup): Call it.
-       (cselib_invalidate_regno): Don't count preserved values as
-       useless.
+       (cselib_invalidate_regno): Don't count preserved values as useless.
        (cselib_invalidate_mem): Likewise.
        (cselib_record_set): Likewise.
        (struct set): Renamed to cselib_set, moved to cselib.h.
        (copy_body): Copy debug stmts at the end.
        (insert_init_debug_bind): New.
        (insert_init_stmt): Take id.  Skip and emit debug stmts.
-       (setup_one_parameter): Remap variable earlier, register debug
-       mapping.
+       (setup_one_parameter): Remap variable earlier, register debug mapping.
        (estimate_num_insns): Skip debug stmts.
        (expand_call_inline): Preserve debug_map.
        (optimize_inline_calls): Check for no debug_stmts left-overs.
        (dataflow_set_clear_at_call): New.
        (onepart_variable_different_p): New.
        (variable_different_p): Use it.
-       (dataflow_set_different_1): Adjust.  Make detailed dump
-       more verbose.
+       (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
        (track_expr_p): Add need_rtl parameter.  Don't generate rtl
        if not needed.
        (track_loc_p): Pass it true.
        (emit_notes_for_differences_1): Adjust.  Handle values.
        (emit_notes_for_differences_2): Likewise.
        (emit_notes_for_differences): Adjust.
-       (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN
-       notes.  Adjust.  Handle new micro-ops.
+       (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
+       Adjust.  Handle new micro-ops.
        (vt_add_function_parameters): Adjust.  Create and bind values.
        (vt_initialize): Adjust.  Initialize scratch_regs and
        valvar_pool, flooded and perm..  Initialize and use cselib.  Log
        empty.  Traverse changed_variables with check_changed_vars_1,
        call check_changed_vars_2 on each changed_variables_stack entry.
        (emit_notes_in_bb): Add SET argument.  Just clear it at the
-       beginning, use it instead of local &set, don't destroy it at the
-       end.
+       beginning, use it instead of local &set, don't destroy it at the end.
        (vt_emit_notes): Call dataflow_set_clear early on all
        VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
        computed set, dataflow_set_clear also VTI(bb)->in when we are
        (print-rtl.o): Depend on cselib.h.
        (cselib.o): Depend on TREE_PASS_H.
        (var-tracking.o): Depend on cselib.h and TARGET_H.
-       * sched-rgn.c (rgn_estimate_number_of_insns): Discount
-       debug insns.
+       * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
        (init_ready_list): Skip boundary debug insns.
        (add_branch_dependences): Skip debug insns.
-       (free_block_dependencies): Check for blocks with only debug
-       insns.
+       (free_block_dependencies): Check for blocks with only debug insns.
        (compute_priorities): Likewise.
        * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
        (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
        (verify_stmt): Likewise.
        (debug_loop_num): Skip debug stmts.
        (remove_edge_and_dominated_blocks): Remove dominators last.
-       * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into
-       debug stmts.
+       * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
        (linearize_expr): Likewise.
        * config/i386/i386.c (ix86_delegitimize_address): Call
        default implementation.
-       * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug
-       insns.
+       * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
        (group_barrier_needed): Skip debug insns.
        (emit_insn_group_barriers): Likewise.
        (emit_all_insn_group_barriers): Likewise.
        * dce.c (deletable_insn_p): Handle VAR_LOCATION.
        (mark_reg_dependencies): Skip debug insns.
        * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
-       * tree-ssanames.c (release_ssa_name): Propagate def into
-       debug stmts.
+       * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
        * tree-ssa-threadedge.c
        (record_temporary_equivalences_from_stmts): Skip debug stmts.
        * regcprop.c (replace_oldest_value_addr): Skip debug insns.