+2009-09-04 Alexandre Oliva <aoliva@redhat.com>
+
+ * toplev.c (process_options): Move setter of flag_var_tracking
+ before other tests that depend on it. Move down setter of
+ flag_rename_registers. Don't enable var-tracking-assignments
+ by default if selective scheduling is enabled. Warn if both
+ are enabled.
+
+2009-09-04 Alexandre Oliva <aoliva@redhat.com>
+
+ * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
+ comment. Use switch statement to catch overlaps between rtx
+ and tree codes. Accept FUNCTION_DECLs in addition to those in...
+ (IS_DECL_CODE): ... here. Remove.
+ (check_value_is_not_decl): Remove.
+ (dv_from_decl, dv_from_value): Check after conversion.
+
+2009-09-04 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/41257
+ * (cgraph_finalize_compilation_unit): Move finalizing aliases
+ after emitting tunks. Move emitting thunks and ctors from ...
+ (cgraph_optimize): ... here. Remove redundant
+ cgraph_analyze_functions.
+ * varasm.c (find_decl_and_mark_needed): Remove no longer
+ necessary check.
+ (finish_aliases_1): Adjust check for thunk aliases.
+
+2009-09-04 Daniel Gutson <dgutson@codesourcery.com>
+
+ * config/arm/arm.md (ctzsi2): Added braces
+ to avoid warning that broke booststrap.
+
+2009-09-04 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/41112
+ * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
+ handle variable-bounded arrays.
+ (expr_with_var_bounded_array_refs_p): New function.
+ (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
+
+2009-09-04 Wolfgang Gellerich <gellerich@de.ibm.com>
+
+ * config/s390/2097.md: Removed two incorrect bypasses.
+ (z10_fsimpdf): Fixed latency.
+ (z10_fhex): New insn_reservation.
+ (z10_floaddf): Fixed latency.
+ (z10_floadsf): Fixed latency.
+ (z10_ftrunctf): Fixed latency.
+ (z10_ftruncdf): Fixed latency.
+ * config/s390/s390.c (z10_cost): Fixed values.
+ (s390_adjust_priority): Added z10 path.
+ * config/s390/s390.md (type): Added fhex.
+ (*mov<mode>_64dfp): Updated type attribute.
+ (*mov<mode>_64): Updated type attribute.
+ (*mov<mode>_31): Updated type attribute.
+ (*mov<mode>"): Likewise.
+ * config/s390/2084.md (x_fsimpdf): Updated condition.
+
+2009-09-04 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
+ RTXs in the predicate for operand 1.
+
+2009-09-03 Daniel Gutson <dgutson@codesourcery.com>
+
+ * config/arm/arm.md (UNSPEC_RBIT): New constant.
+ (rbitsi2): New insn.
+ (ctzsi2): New expand.
+ * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
+
+ testsuite/
+ * gcc.target/arm/ctz.c: New test case.
+
+2009-09-03 Martin Jambor <mjambor@suse.cz>
+
+ * tree-sra.c (duplicate_expr_for_different_base): Removed.
+ (create_artificial_child_access): Use build_ref_for_offset instead
+ of duplicate_expr_for_different_base.
+ (propagate_subacesses_accross_link): Likewise.
+
+2009-09-03 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
+ of INSN_P.
+ (mips16e_collect_argument_saves): Skip debug instructions.
+ (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
+ (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
+ (r10k_insert_cache_barriers): Likewise.
+ (mips_reorg_process_insns): Likewise.
+
+2009-09-03 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR bootstrap/41241
+ * ira.c (update_equiv_reg): Remove check on class likely spill.
+
+2009-09-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/41236
+ * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
+ SIGN_EXTEND or ZERO_EXTEND. Don't assume there is a REG inside of
+ it or SUBREG.
+
+ PR debug/41238
+ * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
+ the stack slot if it is passed by invisible reference.
+ * var-tracking.c (vt_add_function_parameters): Handle arguments passed
+ by invisible reference.
+
+2009-09-03 Bernd Schmidt <bernd.schmidt@analog.com>
+
+ * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
+ * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
+ * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
+ 0.
+ * config/bfin/sync.md: New file.
+ * config/bfin/bfin.md: Include it.
+ (UNSPEC_ATOMIC): New.
+ (UNSPEC_ONES): Provide a unique number.
+
+ From Jie Zhang <jie.zhang@analog.com>:
+ * config/bfin/bfin.c (ret_regs): New.
+ (must_save_fp_p): Don't return true because of frame_pointer_needed.
+ (must_save_rets_p): New.
+ (n_regs_saved_by_prologue): Use must_save_rets_p instead of
+ current_function_is_leaf.
+ (do_link): Likewise.
+ (do_unlink): Likewise.
+ (expand_interrupt_handler_prologue): Use ret_regs array.
+ (expand_interrupt_handler_epilogue): Use ret_regs array and
+ pass return register to gen_return_internal.
+ (bfin_expand_epilogue): Pass return register to
+ gen_return_internal.
+ (bfin_expand_call): Explicitly clobber RETS.
+ * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
+ * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
+ call_insn_fdpic, call_value_insn_fdpic, call_symbol,
+ call_value_symbol, call_insn, call_value_insn): Explicitly clobber
+ RETS.
+ (return_internal): Take a reg rtx rather than the register number.
+
+2009-09-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
+ when comparing against estimated_loop_iterations_int return.
+
+2009-09-03 Richard Guenther <rguenther@suse.de>
+
+ * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
+ eh_personality_libfunc.
+
+2009-09-03 Razya Ladelsky <razya@il.ibm.com>
+
+ * tree-parloops.c (separate_decls_in_region): Add space.
+
+2009-09-03 Razya Ladelsky <razya@il.ibm.com>
+
+ * tree-parloops.c (separate_decls_in_region): Change the condition
+ checking if there are reductions in the loop.
+
+2009-09-03 Razya Ladelsky <razya@il.ibm.com>
+
+ PR tree-optimization/38275
+
+ * tree-parloops.c (parallelize_loops): Replace profitability condition
+ for expected number of iterations.
+
+2009-09-03 Alon Dayan <alond@il.ibm.com>
+
+ PR tree-optimization/38275
+
+ * testsuite/gcc.dg/autopar/reduc-1char.c: Increase number
+ of iterations. Adjust the logic accordingly.
+ * testsuite/gcc.dg/autopar/reduc-2char.c: Ditto.
+ * testsuite/gcc.dg/autopar/reduc-1.c: Ditto.
+ * testsuite/gcc.dg/autopar/reduc-2.c: Ditto.
+ * testsuite/gcc.dg/autopar/reduc-3.c: Ditto.
+ * testsuite/gcc.dg/autopar/reduc-6.c: Ditto.
+ * testsuite/gcc.dg/autopar/reduc-7.c: Ditto.
+ * testsuite/gcc.dg/autopar/reduc-8.c: Ditto.
+ * testsuite/gcc.dg/autopar/reduc-9.c: Ditto.
+ * testsuite/gcc.dg/autopar/pr39500-1.c: Ditto.
+ * testsuite/gcc.dg/autopar/reduc-1short.c: Ditto.
+ * testsuite/gcc.dg/autopar/reduc-2short.c: Ditto.
+ * testsuite/gcc.dg/autopar/parallelization-1.c: Ditto.
+
+
+2009-09-03 Alexandre Oliva <aoliva@redhat.com>
+
+ * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
+ (bootstrap-debug): Explain conditions in which it becomes default.
+ (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
+ make it add to it.
+
+2009-09-03 Namhyung Kim <namhyung@gmail.com>
+
+ * doc/invoke.texi (Optimize Options): Move
+ -finline-small-functions to the -O2 list.
+
+2009-09-03 Alexandre Oliva <aoliva@redhat.com>
+
+ * toplev.c (process_options): Enable var-tracking-assignments
+ by default if var-tracking is enabled.
+
+2009-09-02 David Daney <ddaney@caviumnetworks.com>
+
+ * cfgbuild.c (find_bb_boundaries): Split blocks containing a
+ barrier.
+ * emit-rtl.c (prev_nonnote_insn_bb): New function.
+ * rtl.h (prev_nonnote_insn_bb): Declare it.
+
+2009-09-03 Diego Novillo <dnovillo@google.com>
+
+ * cgraph.c (cgraph_node_for_decl): New.
+ * cgraph.h (cgraph_node_for_decl): Declare.
+ * tree.c (host_integerp): Return 0 if T is NULL.
+
+2009-09-03 Diego Novillo <dnovillo@google.com>
+
+ * tree.h (struct alias_pair): Move from varasm.c.
+ (alias_pairs): Likewise.
+ (TYPE_MAXVAL): Define.
+ (TYPE_MINVAL): Define.
+ (iterative_hash_host_wide_int): Declare.
+ (remove_unreachable_alias_pairs): Declare.
+ * tree-pass.h (pass_ipa_free_lang_data): Declare.
+ * diagnostic.c (default_diagnostic_starter): Make extern.
+ (default_diagnostic_finalizer): Make extern.
+ * diagnostic.h (default_diagnostic_starter): Declare.
+ (default_diagnostic_finalizer): Declare.
+ (default_tree_printer): Declare.
+ * toplev.c (default_tree_printer): Make extern.
+
+2009-09-03 Richard Guenther <rguenther@suse.de>
+ Diego Novillo <dnovillo@google.com>
+
+ * cgraph.c (cgraph_add_new_function): Remove gimplification.
+ * cgraphunit.c (cgraph_expand_function): Do not emit
+ associated thunks from here.
+ (cgraph_emit_thunks): New.
+ (cgraph_optimize): Call it.
+ Return if any IPA pass finds an error.
+ * varasm.c (finish_aliases_1): Ignore errorneous aliases used
+ by thunks.
+
+2009-09-03 Simon Baldwin <simonb@google.com>
+ Rafael Espindola <espindola@google.com>
+ Richard Guenther <rguenther@suse.de>
+ Doug Kwan <dougkwan@google.com>
+ Diego Novillo <dnovillo@google.com>
+
+ * tree.c: Include tree-pass.h, langhooks-def.h,
+ diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
+ (free_lang_data_in_type): New.
+ (need_assembler_name_p): New.
+ (free_lang_data_in_block): New.
+ (free_lang_data_in_decl): New.
+ (struct free_lang_data_d): New.
+ (add_tree_to_fld_list): New.
+ (find_decls_types_r): New.
+ (get_eh_types_for_runtime): New.
+ (find_decls_types_in_eh_region): New.
+ (find_decls_types_in_node): New.
+ (find_decls_types_in_var): New.
+ (free_lang_data_in_cgraph): New.
+ (free_lang_data): New.
+ (gate_free_lang_data): New.
+ (pass_ipa_free_lang_data): New.
+
+2009-09-03 Diego Novillo <dnovillo@google.com>
+
+ * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
+ * langhooks.h (struct lang_hooks): Add field free_lang_data.
+ (lang_hooks): Remove const qualifier.
+ * ipa.c (cgraph_remove_unreachable_nodes): Call
+ remove_unreachable_alias_pairs.
+ * except.c (add_type_for_runtime): Check if TYPE has
+ already been converted.
+ (lookup_type_for_runtime): Likewise.
+ (check_handled): Handle converted types.
+ * varasm.c (remove_unreachable_alias_pairs): New.
+ * gimple.c: Include demangle.h.
+ (gimple_decl_printable_name): New.
+ (gimple_fold_obj_type_ref): New.
+ * gimple.h (gimple_decl_printable_name): Declare.
+ (gimple_fold_obj_type_ref): Declare.
+ * passes.c (init_optimization_passes): Add pass
+ pass_ipa_free_lang_data.
+ * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
+ (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
+
+2009-09-03 Diego Novillo <dnovillo@google.com>
+
+ * c-lang.c (lang_hooks): Remove const qualifier.
+
+2009-09-02 Loren James Rittle <ljrittle@acm.org>
+
+ * doc/install.texi (*-*-freebsd*): Update target information.
+
+2009-09-02 Anatoly Sokolov <aesok@post.ru>
+
+ * hard-reg-set.h (call_fixed_regs): Remove.
+ * reginfo.c (call_fixed_regs): Remove.
+ (init_reg_sets_1): Remove initialization of call_fixed_regs.
+ (globalize_reg): Don't use call_fixed_regs.
+ * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
+ call_fixed_regs.
+
+2009-09-01 Michael Matz <matz@suse.de>
+
+ * expr.h (emit_storent_insn, expand_expr_real_1,
+ 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.
+ (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 ...
+ (expand_resx_stmt): ... this. Rewrite to take gimple statement.
+ * except.h (expand_resx_stmt): Declare.
+ * stmt.c: Add include gimple.h
+ (expand_asm_expr): Rename to ...
+ (expand_asm_stmt): ... this. Rewrite to take gimple statement.
+ (expand_case): Rewrite to take gimple statement.
+ * tree.h (expand_asm_stmt): Declare.
+ (expand_case): Change prototype.
+ * Makefile.in (stmt.o): Depend on gimple.h.
+ * builtins.c (expand_builtin_synchronize): Build gimple asm
+ statement, not an ASM_EXPR.
+ * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
+ gimple_to_tree, release_stmt_tree): Remove.
+ (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
+ ggc_free, but hold comparison code and operands separately.
+ Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
+ (expand_call_stmt, expand_gimple_stmt_1,
+ expand_gimple_stmt): New helpers.
+ (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
+ release_stmt_tree. Call expand_gimple_stmt instead.
+ (expand_gimple_basic_block): Ditto.
+
+ * calls.c (emit_call_1): Don't look at EH regions here, make
+ fntree parameter useless.
+ (expand_call): New local rettype for TREE_TYPE(exp), use it
+ throughout. Remove local p, use addr instead.
+ Don't look at EH regions here.
+
+2009-09-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ * doc/invoke.texi (-fsched-pressure): Document it.
+ (-fsched-reg-pressure-heuristic): Remove it.
+
+ * reload.c (ira.h): Include.
+ (find_reloads): Add choosing reload on number of small spilled
+ classes.
+
+ * haifa-sched.c (ira.h): Include.
+ (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
+ saved_reg_pressure, curr_reg_live, saved_reg_live,
+ region_ref_regs): New variables.
+ (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
+ initiate_reg_pressure_info, setup_ref_regs,
+ initiate_bb_reg_pressure_info, save_reg_pressure,
+ restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
+ functions.
+ (setup_insn_reg_pressure_info): New function.
+ (rank_for_schedule): Add pressure checking and insn issue time.
+ Remove comparison of insn reg weights.
+ (ready_sort): Set insn reg pressure info.
+ (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.
+ (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.
+ (schedule_block): Ditto. Check insn issue time.
+ (sched_init): Set up sched_pressure_p. Allocate and set up some
+ reg pressure related info.
+ (sched_finish): Free some reg pressure related info.
+ (fix_tick_ready): Make insn always ready if pressure_p.
+ (init_h_i_d): Don't call find_insn_reg_weight.
+ (haifa_finish_h_i_d): Free insn reg pressure info.
+
+ * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
+ ira_memory_move_cost, ira_class_hard_regs,
+ ira_class_hard_regs_num, ira_no_alloc_regs,
+ ira_available_class_regs, ira_reg_class_cover_size,
+ ira_reg_class_cover, ira_class_translate): Move to ira.h.
+
+ * ira-lives.c (single_reg_class): Check mode to find how many
+ registers are necessary for operand.
+ (ira_implicitly_set_insn_hard_regs): New.
+
+ * common.opt (fsched-pressure): New options.
+ (fsched-reg-pressure-heuristic): Remove.
+
+ * ira.c (setup_eliminable_regset): Rename to
+ ira_setup_eliminable_regset. Make it external.
+ (expand_reg_info): Pass cover class to setup_reg_classes.
+ (ira): Call resize_reg_info instead of allocate_reg_info.
+
+ * sched-deps.c: Include ira.h.
+ (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
+ (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
+ reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
+ mark_insn_hard_regno_birth, mark_insn_reg_birth,
+ mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
+ mark_insn_reg_store, mark_insn_reg_clobber,
+ setup_insn_reg_pressure_info): New.
+ (sched_analyze_1): Update implicit_reg_pending_uses.
+ (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
+ Use them to create dependencies. Set insn reg uses and pressure
+ info. Process reg_pending_uses in one place.
+ (free_deps): Free implicit sets.
+ (remove_from_deps): Remove implicit sets if necessary. Check
+ implicit sets when clearing reg_last_in_use.
+ (init_deps_global): Clear implicit_reg_pending_clobbers and
+ implicit_reg_pending_uses.
+
+ * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
+ ira_memory_move_cost, ira_class_hard_regs,
+ ira_class_hard_regs_num, ira_no_alloc_regs,
+ ira_available_class_regs, ira_reg_class_cover_size,
+ ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
+ (ira_setup_eliminable_regset, ira_set_pseudo_classes,
+ ira_implicitly_set_insn_hard_regs): New prototypes.
+
+ * ira-costs.c (pseudo_classes_defined_p, allocno_p,
+ cost_elements_num): New variables.
+ (allocno_costs, total_costs): Rename to costs and
+ total_allocno_costs.
+ (COSTS_OF_ALLOCNO): Rename to COSTS.
+ (allocno_pref): Rename to pref.
+ (allocno_pref_buffer): Rename to pref_buffer.
+ (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.
+ (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
+ and COSTS_OF_ALLOCNO.
+ (print_costs): Rename to print_allocno_costs.
+ (print_pseudo_costs): New.
+ (process_bb_node_for_costs): Split into 2 functions with new
+ function process_bb_for_costs. Pass BB to process_bb_for_costs.
+ (find_allocno_class_costs): Rename to find_costs_and_classes. Add
+ new parameter dump_file. Use cost_elements_num instead of
+ ira_allocnos_num. Make one iteration if preferred classes were
+ already calculated for scheduler. Make 2 versions of code
+ depending on allocno_p.
+ (setup_allocno_cover_class_and_costs): Check allocno_p. Use
+ regno_cover_class and COSTS instead of common_classes and
+ COSTS_OF_ALLOCNO.
+ (init_costs, finish_costs): New.
+ (ira_costs): Set up allocno_p and cost_elements_num. Call
+ init_costs and finish_costs.
+ (ira_set_pseudo_classes): New.
+
+ * rtl.h (allocate_reg_info): Remove.
+ (resize_reg_info): Change return type.
+ (reg_cover_class): New.
+ (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.
+ (INCREASE_BITS): New macro.
+ (struct reg_pressure_data, struct reg_use_data): New.
+ (struct _haifa_insn_data): Remove reg_weight. Add members
+ reg_pressure, reg_use_list, reg_set_list, and
+ reg_pressure_excess_cost_change.
+ (struct deps): New member implicit_sets.
+ (pressure_p): New variable.
+ (COVER_CLASS_BITS, INCREASE_BITS): New macros.
+ (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.
+ (sched_init_region_reg_pressure_info,
+ sched_setup_bb_reg_pressure_info): New prototypes.
+
+ * reginfo.c (struct reg_pref): New member coverclass.
+ (reg_cover_class): New function.
+ (reginfo_init, pass_reginfo_init): Move after free_reg_info.
+ (reg_info_size): New variable.
+ (allocate_reg_info): Make static. Setup reg_info_size.
+ (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.
+
+ * sched-rgn.c (deps_join): Set up implicit_sets.
+ (schedule_region): Set up region and basic blocks pressure
+ relative info.
+
+ * passes.c (init_optimization_passes): Move
+ pass_subregs_of_mode_init before pass_sched.
+
+2009-09-02 Martin Jambor <mjambor@suse.cz>
+
+ * tree-sra.c (struct access): New field grp_hint.
+ (dump_access): Dump grp_hint.
+ (sort_and_splice_var_accesses): Set grp_hint if a group is read
+ multiple times.
+ (analyze_access_subtree): Only scalarize accesses with grp_hint set or
+ those which have been specifically read and somehow written to.
+ (propagate_subacesses_accross_link): Set grp_hint of right child and
+ also possibly of the left child.
+
+2009-09-02 Jakub Jelinek <jakub@redhat.com>
+
+ * tree-object-size.c (addr_object_size): Always use object_size_type
+ 0 or 2 when determining the pointer pointed object size.
+
+2009-09-02 Richard Guenther <rguenther@suse.de>
+
+ Revert
+ 2009-08-31 Richard Guenther <rguenther@suse.de>
+
+ * builtins.c (fold_builtin_memory_op): Use the alias oracle
+ to query if the memory regions for memmove overlap.
+ * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
+ asserts on pointers, instead deal with odd trees.
+ (ptr_derefs_may_alias_p): Likewise.
+ (refs_may_alias_p_1): Constructor bases also never alias.
+
+2009-08-01 Christian Bruel <christian.bruel@st.com>
+
+ Revert:
+ 2009-07-31 Christian Bruel <christian.bruel@st.com>
+ * gcc/config.gcc (sh*-*-elf): test with_libgloss.
+
+2009-09-01 Alexandre Oliva <aoliva@redhat.com>
+
+ * doc/invoke.texi (-fvar-tracking-assignments): New.
+ (-fvar-tracking-assignments-toggle): New.
+ (-fdump-final-insns=file): Mark filename as optional.
+ (--param min-nondebug-insn-uid): New.
+ (-gdwarf-@{version}): Mention version 4.
+ * opts.c (common_handle_option): Accept it.
+ * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
+ * 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.
+ (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.
+ * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
+ * doc/gimple.texi (is_gimple_debug): New.
+ (gimple_debug_bind_p): New.
+ (is_gimple_call, gimple_assign_cast_p): End sentence with period.
+ * doc/install.texi (bootstrap-debug): More details.
+ (bootstrap-debug-big, bootstrap-debug-lean): Document.
+ (bootstrap-debug-lib): More details.
+ (bootstrap-debug-ckovw): Update.
+ (bootstrap-time): New.
+ * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
+ (insert_phi_nodes_for): Insert debug stmts.
+ (rewrite_stmt): Take iterator. Insert debug stmts.
+ (rewrite_enter_block): Adjust.
+ (maybe_replace_use_in_debug_stmt): New.
+ (rewrite_update_stmt): Use it.
+ (mark_use_interesting): Return early for debug stmts.
+ * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
+ stmts before replacing stmt.
+ (move_computations_stmt): Likewise.
+ * ira-conflicts.c (add_copies): Skip debug insns.
+ * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
+ (regstat_bb_compute_ri): Skip debug insns.
+ * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
+ * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
+ check_loop_closed_ssa_stmt): Skip debug stmts.
+ * tree-tailcall.c (find_tail_calls): Likewise.
+ * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
+ * tree.h (MAY_HAVE_DEBUG_STMTS): New.
+ (build_var_debug_value_stat): Declare.
+ (build_var_debug_value): Define.
+ (target_for_debug_bind): Declare.
+ * reload.c (find_equiv_reg): Skip debug insns.
+ * rtlanal.c (reg_used_between_p): Skip debug insns.
+ (side_effects_p): Likewise.
+ (canonicalize_condition): Likewise.
+ * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
+ insns never depend on debug insns.
+ (create_ddg_dep_no_link): Likewise.
+ (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
+ Don't add inter-loop dependencies for debug insns.
+ (build_intra_loop_deps): Likewise.
+ (create_ddg): Count debug insns.
+ * ddg.h (struct ddg::num_debug): New.
+ (num_backargs): Pair up with previous int field.
+ * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
+ -fcompare-debug-second.
+ * final.c (get_attr_length_1): Skip debug insns.
+ (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
+ * gcc.c (invoke_as): Call compare-debug-dump-opt.
+ (driver_self_specs): Map -fdump-final-insns to
+ -fdump-final-insns=..
+ (get_local_tick): New.
+ (compare_debug_dump_opt_spec_function): Test for . argument and
+ compute output name. Compute temp output spec without flag name.
+ Compute -frandom-seed.
+ (OPT): Undef after use.
+ * cfgloopanal.c (num_loop_insns): Skip debug insns.
+ (average_num_loop_insns): Likewise.
+ * params.h (MIN_NONDEBUG_INSN_UID): New.
+ * gimple.def (GIMPLE_DEBUG): New.
+ * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
+ * auto-inc-dec.c (merge_in_block): Skip debug insns.
+ (merge_in_block): Fix whitespace.
+ * toplev.c (flag_var_tracking): Update comment.
+ (flag_var_tracking_assignments): New.
+ (flag_var_tracking_assignments_toggle): New.
+ (process_options): Don't open final insns dump file if we're not
+ going to write to it. Compute defaults for var_tracking.
+ * df-scan.c (df_insn_rescan_debug_internal): New.
+ (df_uses_record): Handle debug insns.
+ * haifa-sched.c (ready): Initialize n_debug.
+ (contributes_to_priority): Skip debug insns.
+ (dep_list_size): New.
+ (priority): Use it.
+ (rank_for_schedule): Likewise. Schedule debug insns as soon as
+ they're ready. Disregard previous debug insns to make decisions.
+ (queue_insn): Never queue debug insns.
+ (ready_add, ready_remove_first, ready_remove): Count debug insns.
+ (schedule_insn): Don't reject debug insns because of issue rate.
+ (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
+ (queue_to_ready): Skip and discount debug insns.
+ (choose_ready): Let debug insns through.
+ (schedule_block): Check boundary debug insns. Discount debug
+ insns, schedule them early. Adjust whitespace.
+ (set_priorities): Check for boundary debug insns.
+ (add_jump_dependencies): Use dep_list_size.
+ (prev_non_location_insn): New.
+ (check_cfg): Use it.
+ * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
+ stmts.
+ (remove_unused_ivs): Reset debug stmts.
+ * modulo-sched.c (const_iteration_count): Skip debug insns.
+ (res_MII): Discount debug insns.
+ (loop_single_full_bb_p): Skip debug insns.
+ (sms_schedule): Likewise.
+ (sms_schedule_by_order): Likewise.
+ (ps_has_conflicts): Likewise.
+ * caller-save.c (refmarker_fn): New.
+ (save_call_clobbered_regs): Replace regs with saved mem in
+ debug insns.
+ (mark_referenced_regs): Take pointer, mark and arg. Adjust.
+ Call refmarker_fn mark for hardregnos.
+ (mark_reg_as_referenced): New.
+ (replace_reg_with_saved_mem): New.
+ * ipa-pure-const.c (check_stmt): Skip debug stmts.
+ * cse.c (cse_insn): Canonicalize debug insns. Skip them when
+ searching back.
+ (cse_extended_basic_block): Skip debug insns.
+ (count_reg_usage): Likewise.
+ (is_dead_reg): New, split out of...
+ (set_live_p): ... here.
+ (insn_live_p): Use it for debug insns.
+ * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
+ (execute_optimize_stdarg): Likewise.
+ * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
+ * tree-ssa-propagate.c (substitute_and_fold): Don't regard
+ changes in debug stmts as changes.
+ * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
+ (moveup_expr): Don't move across debug insns. Don't move
+ debug insn if it would create a bookkeeping block.
+ (moveup_expr_cached): Don't use cache for debug insns that
+ are heads of blocks.
+ (compute_av_set_inside_bb): Skip debug insns.
+ (sel_rank_for_schedule): Schedule debug insns first. Remove
+ dead code.
+ (block_valid_for_bookkeeping_p); Support lax searches.
+ (create_block_for_bookkeeping): Adjust block numbers when
+ encountering debug-only blocks.
+ (find_place_for_bookkeeping): Deal with debug-only blocks.
+ (generate_bookkeeping_insn): Accept no place to insert.
+ (remove_temp_moveop_nops): New argument full_tidying.
+ (prepare_place_to_insert): Deal with debug insns.
+ (advance_state_on_fence): Debug insns don't start cycles.
+ (update_boundaries): Take fence as argument. Deal with
+ debug insns.
+ (schedule_expr_on_boundary): No full_tidying on debug insns.
+ (fill_insns): Deal with debug insns.
+ (track_scheduled_insns_and_blocks): Don't count debug insns.
+ (need_nop_to_preserve_insn_bb): New, split out of...
+ (remove_insn_from_stream): ... this.
+ (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.
+ (nearest_common_dominator_of_uses): Take debug_stmts argument.
+ Set it if debug stmts are found.
+ (statement_sink_location): Skip debug stmts. Propagate
+ moving defs into debug stmts.
+ * ifcvt.c (first_active_insn): Skip debug insns.
+ (last_active_insns): Likewise.
+ (cond_exec_process_insns): Likewise.
+ (noce_process_if_block): Likewise.
+ (check_cond_move_block): Likewise.
+ (cond_move_convert_if_block): Likewise.
+ (block_jumps_and_fallthru_p): Likewise.
+ (dead_or_predicable): Likewise.
+ * dwarf2out.c (debug_str_hash_forced): New.
+ (find_AT_string): Add comment.
+ (gen_label_for_indirect_string): New.
+ (get_debug_string_label): New.
+ (AT_string_form): Use it.
+ (mem_loc_descriptor): Handle non-TLS symbols. Handle MINUS , DIV,
+ MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING. Accept but
+ discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
+ several operations that cannot be represented with DWARF opcodes.
+ (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND. Require
+ dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
+ (dwarf2out_var_location): Take during-call mark into account.
+ (output_indirect_string): Update comment. Output if there are
+ label and references.
+ (prune_indirect_string): New.
+ (prune_unused_types): Call it if debug_str_hash_forced.
+ More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
+ (dw_long_long_const): Remove.
+ (struct dw_val_struct): Change val_long_long type to rtx.
+ (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
+ val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
+ (output_die): Likewise. Use HOST_BITS_PER_WIDE_INT size of each
+ component instead of HOST_BITS_PER_LONG.
+ (output_loc_operands): Likewise. For const8* assert
+ HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
+ (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
+ rather than HOST_BITS_PER_LONG is >= 64.
+ (add_AT_long_long): Remove val_hi and val_lo arguments, add
+ val_const_double.
+ (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
+ HOST_BITS_PER_LONG for dw_val_class_long_long.
+ (add_const_value_attribute): Adjust add_AT_long_long caller. Don't
+ handle TLS SYMBOL_REFs. If CONST wraps a constant, tail recurse.
+ (dwarf_stack_op_name): Handle DW_OP_implicit_value and
+ DW_OP_stack_value.
+ (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
+ Handle DW_OP_implicit_value.
+ (extract_int): Move prototype earlier.
+ (mem_loc_descriptor): For SUBREG punt if inner
+ mode size is wider than DWARF2_ADDR_SIZE. Handle SIGN_EXTEND
+ and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}. Handle
+ EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
+ UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
+ (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
+ instead of Pmode size.
+ (loc_descriptor): Add MODE argument. Handle CONST_INT, CONST_DOUBLE,
+ CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
+ attempt to handle other expressions. Don't handle TLS SYMBOL_REFs.
+ (concat_loc_descriptor, concatn_loc_descriptor,
+ loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
+ (add_location_or_const_value_attribute): Likewise. For single
+ location loc_lists attempt to use add_const_value_attribute
+ for constant decls. Add DW_AT_const_value even if
+ NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
+ 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.
+ (separate_decls_in_region_debug_bind): New.
+ (separate_decls_in_region): Process debug bind stmts afterwards.
+ * recog.c (verify_changes): Handle debug insns.
+ (extract_insn): Likewise.
+ (peephole2_optimize): Skip debug insns.
+ * dse.c (scan_insn): Skip debug insns.
+ * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
+ Pass it on.
+ (setup_id_for_insn): Handle debug insns.
+ (maybe_tidy_empty_bb): Adjust whitespace.
+ (tidy_control_flow): Skip debug insns.
+ (sel_remove_insn): Adjust for debug insns.
+ (sel_estimate_number_of_insns): Skip debug insns.
+ (create_insn_rtx_from_pattern): Handle debug insns.
+ (create_copy_of_insn_rtx): Likewise.
+ * sel-sched-.h (sel_bb_end): Declare.
+ (sel_bb_empty_or_nop_p): New.
+ (get_all_loop_exits): Use it.
+ (_eligible_successor_edge_p): Likewise.
+ (return_nop_to_pool): Adjust.
+ * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
+ * ira-lives.c (process_bb_node_lives): Skip debug insns.
+ * gimple-pretty-print.c (dump_gimple_debug): New.
+ (dump_gimple_stmt): Use it.
+ (dump_bb_header): Skip gimple debug stmts.
+ * regmove.c (optimize_reg_copy_1): Discount debug insns.
+ (fixup_match_2): Likewise.
+ (regmove_backward_pass): Likewise. Simplify combined
+ replacement. 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.
+ * 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.
+ (bypass_conditional_jumps): Skip debug insns.
+ (one_pre_gcse_pass): Adjust.
+ (one_code_hoisting_pass): Likewise.
+ (compute_ld_motion_mems): Skip debug insns.
+ (one_cprop_pass): Adjust.
+ * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
+ (if_convertible_stmt_p): Handle debug stmts.
+ * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
+ * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
+ * ira-build.c (create_bb_allocnos): Skip debug insns.
+ * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
+ (has_single_use): Likewise.
+ (single_imm_use): Likewise.
+ (num_imm_uses): Likewise.
+ * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
+ * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
+ (create_outofssa_var_map): Likewise.
+ * lower-subreg.c (adjust_decomposed_uses): New.
+ (resolve_debug): New.
+ (decompose_multiword_subregs): Use it.
+ * tree-dfa.c (find_referenced_vars): Skip debug stmts.
+ * emit-rtl.c: Include params.h.
+ (cur_debug_insn_uid): Define.
+ (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
+ (copy_rtx_if_shared_1): Handle debug insns.
+ (reset_used_flags): Likewise.
+ (set_used_flags): LIkewise.
+ (get_max_insn_count): New.
+ (next_nondebug_insn): New.
+ (prev_nondebug_insn): New.
+ (make_debug_insn_raw): New.
+ (emit_insn_before_noloc): Handle debug insns.
+ (emit_jump_insn_before_noloc): Likewise.
+ (emit_call_insn_before_noloc): Likewise.
+ (emit_debug_insn_before_noloc): New.
+ (emit_insn_after_noloc): Handle debug insns.
+ (emit_jump_insn_after_noloc): Likewise.
+ (emit_call_insn_after_noloc): Likewise.
+ (emit_debug_insn_after_noloc): Likewise.
+ (emit_insn_after): Take loc from earlier non-debug insn.
+ (emit_jump_insn_after): Likewise.
+ (emit_call_insn_after): Likewise.
+ (emit_debug_insn_after_setloc): New.
+ (emit_debug_insn_after): New.
+ (emit_insn_before): Take loc from later non-debug insn.
+ (emit_jump_insn_before): Likewise.
+ (emit_call_insn_before): Likewise.
+ (emit_debug_insn_before_setloc): New.
+ (emit_debug_insn_before): New.
+ (emit_insn): Handle debug insns.
+ (emit_debug_insn): New.
+ (emit_jump_insn): Handle debug insns.
+ (emit_call_insn): Likewise.
+ (emit): Likewise.
+ (init_emit): Take min-nondebug-insn-uid into account.
+ Initialize cur_debug_insn_uid.
+ (emit_copy_of_insn_after): Handle debug insns.
+ * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
+ location of single rhs in place.
+ (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
+ (floor_sdiv_adjust): New.
+ (cell_sdiv_adjust): New.
+ (cell_udiv_adjust): New.
+ (round_sdiv_adjust): New.
+ (round_udiv_adjust): New.
+ (wrap_constant): Moved from cselib.
+ (unwrap_constant): New.
+ (expand_debug_expr): New.
+ (expand_debug_locations): New.
+ (expand_gimple_basic_block): Drop hiding redeclaration. Expand
+ debug bind stmts.
+ (gimple_expand_cfg): Expand debug locations.
+ * cselib.c: Include tree-pass.h.
+ (struct expand_value_data): New.
+ (cselib_record_sets_hook): New.
+ (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
+ (cselib_clear_table): Move, and implemnet in terms of...
+ (cselib_reset_table_with_next_value): ... this.
+ (cselib_get_next_unknown_value): New.
+ (discard_useless_locs): Don't discard preserved values.
+ (cselib_preserve_value): New.
+ (cselib_preserved_value_p): New.
+ (cselib_preserve_definitely): New.
+ (cselib_clear_preserve): New.
+ (cselib_preserve_only_values): New.
+ (new_cselib_val): Take rtx argument. Dump it in details.
+ (cselib_lookup_mem): Adjust.
+ (expand_loc): Take regs_active in struct. Adjust. Silence
+ dumps unless details are requested.
+ (cselib_expand_value_rtx_cb): New.
+ (cselib_expand_value_rtx): Rename and reimplment in terms of...
+ (cselib_expand_value_rtx_1): ... this. Adjust. Silence dumps
+ without details. Copy more subregs. Try to resolve values
+ using a callback. Wrap constants.
+ (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_mem): Likewise.
+ (cselib_record_set): Likewise.
+ (struct set): Renamed to cselib_set, moved to cselib.h.
+ (cselib_record_sets): Adjust. Call hook.
+ (cselib_process_insn): Reset table when it would be cleared.
+ (dump_cselib_val): New.
+ (dump_cselib_table): New.
+ * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
+ (remove_forwarder_block): Support moving debug stmts.
+ * cselib.h (cselib_record_sets_hook): Declare.
+ (cselib_expand_callback): New type.
+ (cselib_expand_value_rtx_cb): Declare.
+ (cselib_reset_table_with_next_value): Declare.
+ (cselib_get_next_unknown_value): Declare.
+ (cselib_preserve_value): Declare.
+ (cselib_preserved_value_p): Declare.
+ (cselib_preserve_only_values): Declare.
+ (dump_cselib_table): Declare.
+ * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
+ (try_crossjump_to_edge): Likewise.
+ (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
+ dominated blocks when debug stmts are present.
+ * simplify-rtx.c (delegitimize_mem_from_attrs): New.
+ * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
+ (set_var_live_on_entry): Likewise.
+ * loop-invariant.c (find_invariants_bb): Skip debug insns.
+ * cfglayout.c (curr_location, last_location): Make static.
+ (set_curr_insn_source_location): Don't avoid bouncing.
+ (get_curr_insn_source_location): New.
+ (get_curr_insn_block): New.
+ (duplicate_insn_chain): Handle debug insns.
+ * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
+ into debug stmts.
+ * common.opt (fcompare-debug): Move to sort order.
+ (fdump-unnumbered-links): Likewise.
+ (fvar-tracking-assignments): New.
+ (fvar-tracking-assignments-toggle): New.
+ * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
+ because of debug stmts.
+ (mark_stmt_if_obviously_necessary): Mark debug stmts.
+ (eliminate_unnecessary_stmts): Walk dominated blocks before
+ dominators.
+ * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
+ * ira.c (memref_used_between_p): Skip debug insns.
+ (update_equiv_regs): Likewise.
+ * sched-deps.c (sd_lists_size): Accept empty list.
+ (sd_init_insn): Mark debug insns.
+ (sd_finish_insn): Unmark them.
+ (sd_add_dep): Reject non-debug deps on debug insns.
+ (fixup_sched_groups): Give debug insns group treatment.
+ Skip debug insns.
+ (sched_analyze_reg): Don't mark debug insns for sched before call.
+ (sched_analyze_2): Handle debug insns.
+ (sched_analyze_insn): Compute next non-debug insn. Handle debug
+ insns.
+ (deps_analyze_insn): Handle debug insns.
+ (deps_start_bb): Skip debug insns.
+ (init_deps): Initialize last_debug_insn.
+ * tree-ssa.c (target_for_debug_bind): New.
+ (find_released_ssa_name): New.
+ (propagate_var_def_into_debug_stmts): New.
+ (propagate_defs_into_debug_stmts): New.
+ (verify_ssa): Skip debug bind stmts without values.
+ (warn_uninialized_vars): Skip debug stmts.
+ * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
+ * rtl.c (rtx_equal_p_cb): Handle VALUEs.
+ (rtx_equal_p): Likewise.
+ * ira-costs.c (scan_one_insn): Skip debug insns.
+ (process_bb_node_for_hard_reg_moves): Likewise.
+ * rtl.h (DEBUG_INSN_P): New.
+ (NONDEBUG_INSN_P): New.
+ (MAY_HAVE_DEBUG_INSNS): New.
+ (INSN_P): Accept debug insns.
+ (RTX_FRAME_RELATED_P): Likewise.
+ (INSN_DELETED_P): Likewise
+ (PAT_VAR_LOCATION_DECL): New.
+ (PAT_VAR_LOCATION_LOC): New.
+ (PAT_VAR_OCATION_STATUS): New.
+ (NOTE_VAR_LOCATION_DECL): Reimplement.
+ (NOTE_VAR_LOCATION_LOC): Likewise.
+ (NOTE_VAR_LOCATION_STATUS): Likewise.
+ (INSN_VAR_LOCATION): New.
+ (INSN_VAR_LOCATION_DECL): New.
+ (INSN_VAR_LOCATION_LOC): New.
+ (INSN_VAR_LOCATION_STATUS): New.
+ (gen_rtx_UNKNOWN_VAR_LOC): New.
+ (VAR_LOC_UNKNOWN_P): New.
+ (NOTE_DURING_CALL_P): New.
+ (SCHED_GROUP_P): Accept debug insns.
+ (emit_debug_insn_before): Declare.
+ (emit_debug_insn_before_noloc): Declare.
+ (emit_debug_insn_beore_setloc): Declare.
+ (emit_debug_insn_after): Declare.
+ (emit_debug_insn_after_noloc): Declare.
+ (emit_debug_insn_after_setloc): Declare.
+ (emit_debug_insn): Declare.
+ (make_debug_insn_raw): Declare.
+ (prev_nondebug_insn): Declare.
+ (next_nondebug_insn): Declare.
+ (delegitimize_mem_from_attrs): Declare.
+ (get_max_insn_count): Declare.
+ (wrap_constant): Declare.
+ (unwrap_constant): Declare.
+ (get_curr_insn_source_location): Declare.
+ (get_curr_insn_block): Declare.
+ * tree-inline.c (insert_debug_decl_map): New.
+ (processing_debug_stmt): New.
+ (remap_decl): Don't create new mappings in debug stmts.
+ (remap_gimple_op_r): Don't add references in debug stmts.
+ (copy_tree_body_r): Likewise.
+ (remap_gimple_stmt): Handle debug bind stmts.
+ (copy_bb): Skip debug stmts.
+ (copy_edges_for_bb): Likewise.
+ (copy_debug_stmt): New.
+ (copy_debug_stmts): New.
+ (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.
+ (estimate_num_insns): Skip debug stmts.
+ (expand_call_inline): Preserve debug_map.
+ (optimize_inline_calls): Check for no debug_stmts left-overs.
+ (unsave_expr_now): Preserve debug_map.
+ (copy_gimple_seq_and_replace_locals): Likewise.
+ (tree_function_versioning): Check for no debug_stmts left-overs.
+ Init and destroy debug_map as needed. Split edges unconditionally.
+ (build_duplicate_type): Init and destroy debug_map as needed.
+ * tree-inline.h: Include gimple.h instead of pointer-set.h.
+ (struct copy_body_data): Add debug_stmts and debug_map.
+ * sched-int.h (struct ready_list): Add n_debug.
+ (struct deps): Add last_debug_insn.
+ (DEBUG_INSN_SCHED_P): New.
+ (BOUNDARY_DEBUG_INSN_P): New.
+ (SCHEDULE_DEBUG_INSN_P): New.
+ (sd_iterator_cond): Accept empty list.
+ * combine.c (create_log_links): Skip debug insns.
+ (combine_instructions): Likewise.
+ (cleanup_auto_inc_dec): New. From Jakub Jelinek: Make sure the
+ return value is always unshared.
+ (struct rtx_subst_pair): New.
+ (auto_adjust_pair): New.
+ (propagate_for_debug_subst): New.
+ (propagate_for_debug): New.
+ (try_combine): Skip debug insns. Propagate removed defs into
+ debug insns.
+ (next_nonnote_nondebug_insn): New.
+ (distribute_notes): Use it. Skip debug insns.
+ (distribute_links): Skip debug insns.
+ * tree-outof-ssa.c (set_location_for_edge): Likewise.
+ * resource.c (mark_target_live_regs): Likewise.
+ * var-tracking.c: Include cselib.h and target.h.
+ (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
+ MO_VAL_SET.
+ (micro_operation_type_name): New.
+ (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
+ (struct micro_operation_def): Update comments.
+ (decl_or_value): New type. Use instead of decls.
+ (struct emit_note_data_def): Add vars.
+ (struct attrs_def): Use decl_or_value.
+ (struct variable_tracking_info_def): Add permp, flooded.
+ (struct location_chain_def): Update comment.
+ (struct variable_part_def): Use decl_or_value.
+ (struct variable_def): Make var_part a variable length array.
+ (valvar_pool): New.
+ (scratch_regs): New.
+ (cselib_hook_called): New.
+ (dv_is_decl_p): New.
+ (dv_is_value_p): New.
+ (dv_as_decl): New.
+ (dv_as_value): New.
+ (dv_as_opaque): New.
+ (dv_onepart_p): New.
+ (dv_pool): New.
+ (IS_DECL_CODE): New.
+ (check_value_is_not_decl): New.
+ (dv_from_decl): New.
+ (dv_from_value): New.
+ (dv_htab_hash): New.
+ (variable_htab_hash): Use it.
+ (variable_htab_eq): Support values.
+ (variable_htab_free): Free from the right pool.
+ (attrs_list_member, attrs_list_insert): Use decl_or_value.
+ (attrs_list_union): Adjust.
+ (attrs_list_mpdv_union): New.
+ (tie_break_pointers): New.
+ (canon_value_cmp): New.
+ (unshare_variable): Return possibly-modified slot.
+ (vars_copy_1): Adjust.
+ (var_reg_decl_set): Adjust. Split out of...
+ (var_reg_set): ... this.
+ (get_init_value): Adjust.
+ (var_reg_delete_and_set): Adjust.
+ (var_reg_delete): Adjust.
+ (var_regno_delete): Adjust.
+ (var_mem_decl_set): Split out of...
+ (var_mem_set): ... this.
+ (var_mem_delete_and_set): Adjust.
+ (var_mem_delete): Adjust.
+ (val_store): New.
+ (val_reset): New.
+ (val_resolve): New.
+ (variable_union): Adjust. Speed up merge of 1-part vars.
+ (variable_canonicalize): Use unshared slot.
+ (VALUED_RECURSED_INTO): New.
+ (find_loc_in_1pdv): New.
+ (struct dfset_merge): New.
+ (insert_into_intersection): New.
+ (intersect_loc_chains): New.
+ (loc_cmp): New.
+ (canonicalize_loc_order_check): New.
+ (canonicalize_values_mark): New.
+ (canonicalize_values_star): New.
+ (variable_merge_over_cur): New.
+ (variable_merge_over_src): New.
+ (dataflow_set_merge): New.
+ (dataflow_set_equiv_regs): New.
+ (remove_duplicate_values): New.
+ (struct dfset_post_merge): New.
+ (variable_post_merge_new_vals): New.
+ (variable_post_merge_perm_vals): New.
+ (dataflow_post_merge_adjust): New.
+ (find_mem_expr_in_1pdv): New.
+ (dataflow_set_preserve_mem_locs): New.
+ (dataflow_set_remove_mem_locs): New.
+ (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.
+ (track_expr_p): Add need_rtl parameter. Don't generate rtl
+ if not needed.
+ (track_loc_p): Pass it true.
+ (struct count_use_info): New.
+ (find_use_val): New.
+ (replace_expr_with_values): New.
+ (log_op_type): New.
+ (use_type): New, partially split out of...
+ (count_uses): ... this. Count new micro-ops.
+ (count_uses_1): Adjust.
+ (count_stores): Adjust.
+ (count_with_sets): New.
+ (VAL_NEEDS_RESOLUTION): New.
+ (VAL_HOLDS_TRACK_EXPR): New.
+ (VAL_EXPR_IS_COPIED): New.
+ (VAL_EXPR_IS_CLOBBERED): New.
+ (add_uses): Adjust. Generate new micro-ops.
+ (add_uses_1): Adjust.
+ (add_stores): Generate new micro-ops.
+ (add_with_sets): New.
+ (find_src_status): Adjust.
+ (find_src_set_src): Adjust.
+ (compute_bb_dataflow): Use dataflow_set_clear_at_call.
+ Handle new micro-ops. Canonicalize value equivalances.
+ (vt_find_locations): Compute total size of hash tables for
+ dumping. Perform merge for var-tracking-assignments. Don't
+ disregard single-block loops.
+ (dump_attrs_list): Handle decl_or_value.
+ (dump_variable): Take variable. Deal with decl_or_value.
+ (dump_variable_slot): New.
+ (dump_vars): Use it.
+ (dump_dataflow_sets): Adjust.
+ (set_slot_part): New, extended to support one-part variables
+ after splitting out of...
+ (set_variable_part): ... this.
+ (clobber_slot_part): New, split out of...
+ (clobber_variable_part): ... this.
+ (delete_slot_part): New, split out of...
+ (delete_variable_part): .... this.
+ (check_wrap_constant): New.
+ (vt_expand_loc_callback): New.
+ (vt_expand_loc): New.
+ (emit_note_insn_var_location): Adjust. Handle values. Handle
+ EMIT_NOTE_AFTER_CALL_INSN.
+ (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.
+ (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
+ operations. Move some code to count_with_sets and add_with_sets.
+ (delete_debug_insns): New.
+ (vt_debug_insns_local): New.
+ (vt_finalize): Release permp, valvar_pool, scratch_regs. Finish
+ cselib.
+ (var_tracking_main): If var-tracking-assignments is enabled
+ but var-tracking isn't, delete debug insns and leave. Likewise
+ if we exceed limits or fail the stack adjustments tests, and
+ after all var-tracking processing.
+ More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
+ (dataflow_set): Add traversed_vars.
+ (value_chain, const_value_chain): New typedefs.
+ (value_chain_pool, value_chains): New variables.
+ (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
+ add_value_chains, add_cselib_value_chains, remove_value_chain,
+ remove_value_chains, remove_cselib_value_chains): New functions.
+ (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
+ shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
+ static inlines.
+ (shared_hash_find_slot_unshare, shared_hash_find_slot,
+ shared_hash_find_slot_noinsert, shared_hash_find): Update.
+ (dst_can_be_shared): New variable.
+ (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
+ Clear dst_can_be_shared. If set->traversed_vars is non-NULL and
+ different from set->vars, look up slot again instead of using the
+ passed in slot.
+ (dataflow_set_init): Initialize traversed_vars.
+ (variable_union): Use shared_hash_*. Use initially NO_INSERT
+ lookup if set->vars is shared. Don't keep slot cleared before
+ calling unshare_variable. Unshare set->vars if needed. Adjust
+ unshare_variable callers. Clear dst_can_be_shared if needed.
+ Even ->refcount == 1 vars must be unshared if set->vars is shared
+ and var needs to be modified.
+ (dataflow_set_union): Set traversed_vars during canonicalization.
+ (VALUE_CHANGED, DECL_CHANGED): Define.
+ (set_dv_changed, dv_changed_p): New static inlines.
+ (track_expr_p): Clear DECL_CHANGED.
+ (dump_dataflow_sets): Set it.
+ (variable_was_changed): Call set_dv_changed.
+ (emit_note_insn_var_location): Likewise.
+ (changed_variables_stack): New variable.
+ (check_changed_vars_1, check_changed_vars_2): New functions.
+ (emit_notes_for_changes): Do nothing if changed_variables is
+ 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.
+ (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
+ done with the basic block. Initialize changed_variables_stack,
+ free it afterwards. If ENABLE_CHECKING verify that after noting
+ differences to an empty set value_chains hash table is empty.
+ (vt_initialize): Initialize value_chains and value_chain_pool.
+ (vt_finalize): Delete value_chains htab, free value_chain_pool.
+ (variable_tracking_main): Call dump_dataflow_sets before calling
+ vt_emit_notes, not after it.
+ * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
+ (propagate_var_def_into_debug_stmts): Declare.
+ * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
+ (df_set_note): Reject debug insns.
+ (df_whole_mw_reg_dead_p): Take added_notes_p argument. Don't
+ add notes to debug insns.
+ (df_note_bb_compute): Adjust. Likewise.
+ (df_simulate_uses): Skip debug insns.
+ (df_simulate_initialize_backwards): Likewise.
+ * reg-stack.c (subst_stack_regs_in_debug_insn): New.
+ (subst_stack_regs_pat): Reject debug insns.
+ (convert_regs_1): Handle debug insns.
+ * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
+ (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.
+ (init_ready_list): Skip boundary debug insns.
+ (add_branch_dependences): Skip 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
+ all callers.
+ (gimple_build_debug_bind_stat): New.
+ (empty_body_p): Skip debug stmts.
+ (gimple_has_side_effects): Likewise.
+ (gimple_rhs_has_side_effects): Likewise.
+ * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
+ (gimple_build_debug_bind_stat): Declare.
+ (gimple_build_debug_bind): Define.
+ (is_gimple_debug): New.
+ (gimple_debug_bind_p): New.
+ (gimple_debug_bind_get_var): New.
+ (gimple_debug_bind_get_value): New.
+ (gimple_debug_bind_get_value_ptr): New.
+ (gimple_debug_bind_set_var): New.
+ (gimple_debug_bind_set_value): New.
+ (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
+ (gimple_debug_bind_reset_value): New.
+ (gimple_debug_bind_has_value_p): New.
+ (gsi_next_nondebug): New.
+ (gsi_prev_nondebug): New.
+ (gsi_start_nondebug_bb): New.
+ (gsi_last_nondebug_bb): New.
+ * sched-vis.c (print_pattern): Handle VAR_LOCATION.
+ (print_insn): Handle DEBUG_INSN.
+ * tree-cfg.c (remove_bb): Walk stmts backwards. Let loc
+ of first insn prevail.
+ (first_stmt): Skip debug stmts.
+ (first_non_label_stmt): Likewise.
+ (last_stmt): Likewise.
+ (has_zero_uses_1): New.
+ (single_imm_use_1): New.
+ (verify_gimple_debug): New.
+ (verify_types_in_gimple_stmt): Handle debug stmts.
+ (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.
+ (linearize_expr): Likewise.
+ * config/i386/i386.c (ix86_delegitimize_address): Call
+ default implementation.
+ * 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.
+ (ia64_variable_issue): Handle debug insns.
+ (ia64_dfa_new_cycle): Likewise.
+ (final_emit_insn_group_barriers): Skip debug insns.
+ (ia64_dwarf2out_def_steady_cfa): Take frame argument. Don't
+ def cfa without frame.
+ (process_set): Likewise.
+ (process_for_unwind_directive): Pass frame on.
+ * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
+ (rs6000_delegitimize_address): New.
+ (rs6000_debug_adjust_cost): Handle debug insns.
+ (is_microcoded_insn): Likewise.
+ (is_cracked_insn): Likewise.
+ (is_nonpipeline_insn): Likewise.
+ (insn_must_be_first_in_group): Likewise.
+ (insn_must_be_last_in_group): Likewise.
+ (force_new_group): Likewise.
+ * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
+ contains only debug insns.
+ (rtl_merge_blocks): Skip debug insns.
+ (purge_dead_edges): Likewise.
+ (rtl_block_ends_with_call_p): Skip debug insns.
+ * 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-ssa-threadedge.c
+ (record_temporary_equivalences_from_stmts): Skip debug stmts.
+ * regcprop.c (replace_oldest_value_addr): Skip debug insns.
+ (replace_oldest_value_mem): Use ALL_REGS for debug insns.
+ (copyprop_hardreg_forward_1): Handle debug insns.
+ * reload1.c (reload): Skip debug insns. Replace unassigned
+ pseudos in debug insns with their equivalences.
+ (eliminate_regs_in_insn): Skip debug insns.
+ (emit_input_reload_insns): Skip debug insns at first, adjust
+ them later.
+ * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
+ (get_indirect_ref_operands): Pass opf_no_vops on.
+ (get_expr_operands): Likewise. Skip debug stmts.
+ (parse_ssa_operands): Scan debug insns with opf_no_vops.
+
+2009-09-01 Richard Henderson <rth@redhat.com>
+
+ * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
+ stmt_ends_pp_p statements at least once.
+ * tree-vrp.c (vrp_initialize): Likewise.
+ (vrp_visit_stmt): Be prepared for non-interesting stmts.
+
+2009-09-01 Dodji Seketeli <dodji@redhat.com>
+
+ PR bootstrap/41205
+ Fix AIX bootstrap after PR debug/30161
+ * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
+ that is a GNU extension.
+ (tmpl_value_parm_die_table): Move the definition of this global
+ outside #ifdef DWARF2_DEBUGGING_INFO region.
+
+2009-09-01 Richard Guenther <rguenther@suse.de>
+
+ * tree.c (tree_expr_size): New function.
+ * tree.h (tree_expr_size): Declare.
+ * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
+ * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
+ * langhooks.c (lhd_expr_size): Remove.
+ * langhooks.h (struct lang_hooks): Remove expr_size.
+ * explow.c (expr_size): Use tree_expr_size.
+ (int_expr_size): Likewise.
+ * langhooks-def.h (lhd_expr_size): Remove.
+ (LANG_HOOKS_EXPR_SIZE): Likewise.
+ (LANG_HOOKS_INITIALIZER): Adjust.
+
+2009-09-01 Richard Guenther <rguenther@suse.de>
+
+ * tree-flow.h (mark_addressable): Move declaration ...
+ * tree.h (mark_addressable): ... here.
+ * stmt.c (expand_asm_operands): Use mark_addressable, not
+ lang_hooks.mark_addressable.
+ * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
+ LANG_HOOKS_MARK_ADDRESSABLE.
+ * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
+ * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
+
+2009-08-31 Chris Demetriou <cgd@google.com>
+
+ * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
+ vectorize if not TARGET_SSE2.
+
+2009-08-31 DJ Delorie <dj@redhat.com>
+
+ * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
+ registers if no coprocessor is enabled.
+
+2009-08-31 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/30161
+ * cgraph.h (cgraph_get_node): Declare ...
+ * cgraph.c (cgraph_get_node): ... new function.
+ * dwarf2out.c (gen_generic_params_dies,
+ generic_parameter_die, tree_add_const_value_attribute_for_decl,
+ make_ith_pack_parameter_name,
+ append_entry_to_tmpl_value_parm_die_table,
+ gen_remaining_tmpl_value_param_die_attribute): New functions.
+ (gen_subprogram_die): Generate debug info for template parameters
+ if debug info level is higher than DINFO_LEVEL_TERSE.
+ Use tree_add_const_value_attribute_for_decl instead of
+ tree_add_const_value_attribute.
+ (gen_const_die): Use tree_add_const_value_attribute_for_decl
+ instead of tree_add_const_value_attribute.
+ (gen_struct_or_union_type_die): Generate debug
+ info for template parameters if debug info level is higher than
+ DINFO_LEVEL_TERSE.
+ (tree_add_const_value_attribute): Handle integral and pointer
+ constants. Update comment.
+ (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
+ (dwarf_attr_name): Support DW_AT_GNU_template_name.
+ (reference_to_unused): Fix thinko. Remove redundant predicates from
+ tests.
+ (tree_add_const_value_attribute): Make this work for constant
+ expressions only.
+ tree_add_const_value_attribute_for_decl is to be used for variable
+ DECLs now.
+ (add_location_or_const_value_attribute): Use
+ tree_add_const_value_attribute_for_decl now.
+ (dwarf2out_finish): Emit the DW_AT_const_value attribute of
+ DW_TAG_template_value_param DIEs after function DIEs have been
+ emitted.
+ * langhooks.h (lang_hooks_for_types): Add
+ get_argument_pack_elems.
+ (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
+ (lang_hooks): Added get_innermost_generic_parms,
+ get_innermost_generic_args.
+ * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
+ LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
+ LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
+ LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
+
+2009-08-31 DJ Delorie <dj@redhat.com>
+
+ * config/mep/mep.c (machine_function): Add frame_locked flag. Set
+ it once we start generating the prologue or epilogue.
+ (mep_call_saves_register): If the frame is locked, re-use
+ cached values.
+ (mep_assign_save_slots): New, broken out from mep_expand_prologue.
+ (mep_expand_prologue): Call it.
+ (mep_expand_epilogue): Likewise.
+ (mep_start_function): Use the same logic as mep_expand_prologue.
+ (mep_pass_by_reference): Make logic more readable.
+ (mep_return_in_memory): Zero-sized objects are passed in memory.
+ (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
+
+
+2009-08-31 Richard Guenther <rguenther@suse.de>
+
+ * builtins.c (fold_builtin_memory_op): Use the alias oracle
+ to query if the memory regions for memmove overlap.
+ * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
+ asserts on pointers, instead deal with odd trees.
+ (ptr_derefs_may_alias_p): Likewise.
+ (refs_may_alias_p_1): Constructor bases also never alias.
+
+2009-08-31 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/install.texi (Final install): Adjust reference on where to
+ order printed manuals.
+
+2009-08-30 Olivier Hainque <hainque@adacore.com>
+
+ * dwarf2out.c (switch_to_frame_table_section): Move
+ definition prior to first use.
+
+2009-08-30 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/41186
+ * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
+ (ao_ref_init_from_ptr_and_size): New function.
+ (ref_maybe_used_by_call_p_1): Be more precise tracking
+ used ranges for builtin functions.
+ (ref_maybe_used_by_call_p): Adjust.
+ (call_may_clobber_ref_p_1): Be more precise tracking clobbered
+ ranges for builtin functions.
+ * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
+
+2009-08-30 Alan Modra <amodra@bigpond.net.au>
+
+ PR target/41081
+ * fwprop.c (get_reg_use_in): Delete.
+ (free_load_extend): New function.
+ (forward_propagate_subreg): Use it.
+
+2009-08-29 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
+
+2009-08-29 Kai Tietz<kai.tietz@onevision.com>
+
+ PR/41184
+ * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
+ padding.
+
+2009-08-29 Douglas B Rupp <rupp@gnat.com>
+
+ * crtstuff.c (__do_global_dtors_aux): Use atexit if no
+ fini or fini_array section.
+
+2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
+
+ * graphite-dependences.c (graphite_legal_transform_bb): Call
+ pbb_remove_duplicate_pdrs.
+ * graphite-poly.c (can_collapse_pdr): Removed.
+ (pdr_find_duplicate): Removed.
+ (can_collapse_pdrs): New.
+ (pbb_remove_duplicate_pdrs): New.
+ (new_poly_dr): Do not look for duplicates.
+ * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
+ (PBB_PDR_DUPLICATES_REMOVED): New.
+ (pbb_remove_duplicate_pdrs): Declared.
+
+2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
+
+ * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
+ the strides by multiplying by PDR_NB_REFS.
+ * graphite-poly.c (can_collapse_pdr): New.
+ (pdr_find_duplicate): New.
+ (new_poly_dr): Call pdr_find_duplicate. Collapse duplicate PDRs.
+ Initialize PDR_NB_REFS.
+ * graphite-poly.h (struct poly_dr): Add field nb_refs.
+ (PDR_NB_REFS): New.
+ (new_poly_dr): Number of subscripts is a graphite_dim_t.
+
2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/40965
2009-08-27 Dodji Seketeli <dodji@redhat.com>
- PR debug/41770
+ PR debug/41170
* dwarf2out.c (get_context_die): Declare this static function.
(gen_type_die_with_usage): Make sure a DIE is a generated for
the context of a typedef.
2009-08-26 Richard Guenther <rguenther@suse.de>
- * tree-ssa-structalias.c (create_variable_info_for): Remove
- strange whole-program condition, prepare to be called for non-globals.
+ * tree-ssa-structalias.c (create_variable_info_for): Remove strange
+ whole-program condition, prepare to be called for non-globals.
(intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
params build a representative with known type and track its fields.
2009-08-24 Kai Tietz <kai.tietz@onevision.com>
PR/40786
- * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
+ * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
(check_format_info_main): Use scalar_identify_flag.
(check_format_types): Check for scalar size identity if
scalar_identify_flag is set.
2009-08-16 Uros Bizjak <ubizjak@gmail.com>
- * config/alpha/alpha.c (alpha_and_function): Handle NULL_RTX returned
+ * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
from prev_active_insn.
2009-08-16 Anatoly Sokolov <aesok@post.ru>