+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
+ * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
+ code dealing with plain pointer bases.
+ (maybe_fold_offset_to_reference): Likewise.
+ (maybe_fold_stmt_addition): Adjust.
+
+2009-09-09 Richard Guenther <rguenther@suse.de>
+
+ * tree.c (free_lang_data_in_type): Do not free the type variant
+ chains.
+ (free_lang_data): Merge char_type_node with its properly signed
+ variant.
+ (pass_ipa_free): Collect after freeing language specific data.
+
+2009-09-09 Michael Matz <matz@suse.de>
+
+ PR middle-end/41268
+ * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
+ SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
+ * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
+ to reflect reality.
+
+2009-09-08 DJ Delorie <dj@redhat.com>
+
+ * config/mep/mep.c (conversions[]): Add "ml" pattern.
+
+2009-09-04 Jason Merrill <jason@redhat.com>
+
+ * tree.c (tree_find_value): Remove.
+ * tree.h: Remove prototype.
+ * varasm.c (assemble_external): Use value_member instead.
+
+2009-09-08 Alexandre Oliva <aoliva@redhat.com>
+
+ * toplev.c (process_options): Choose default debugging type when
+ gtoggle enables debug info and type is unset.
+
+2009-09-08 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/41276
+ PR debug/41307
+ * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
+ invalid subreg.
+
+2009-09-08 Alexandre Oliva <aoliva@redhat.com>
+
+ * configure: Rebuilt with modified libtool.m4.
+
+2009-09-08 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/41229
+ PR debug/41291
+ PR debug/41300
+ * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
+
+2009-09-08 Alexandre Oliva <aoliva@redhat.com>
+
+ * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
+ (remove_statement): Likewise.
+ (rewrite_use_nonlinear_expr): Adjust.
+ (remove_unused_ivs): Collect SSA NAMEs to remove and call...
+ * tree-ssa.c (release_defs_bitset): ... this. New.
+ * tree-flow.h (release_defs_bitset): Declare.
+
2009-09-08 Alexandre Oliva <aoliva@redhat.com>
PR debug/41232
(remove_from_deps): Also remove calls from
last_function_call_may_noreturn list.
+2009-09-07 Richard Henderson <rth@redhat.com>
+
+ * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
+ more VR->OPERANDS than LHS operands. Free LHS before returning.
+
2009-09-07 Bernd Schmidt <bernd.schmidt@analog.com>
* config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
(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.