OSDN Git Service

* toplev.c (process_options): Move setter of flag_var_tracking
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index bb5e0b1..e88346b 100644 (file)
+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
+       * graphite-poly.c (apply_poly_transforms): Remove legality test before
+       any transform.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (pddr_original_scattering): Return NULL
+       for read-read dependence relations.
+       * graphite-poly.h (enum poly_dr_type): Fix comment.
+       (pdr_read_p): New.
+       (pdr_write_p): New.
+       (pdr_may_write_p): New.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
+       (struct poly_dr): Same.
+       (new_poly_dr): Same.
+       * graphite-poly.c (new_poly_dr): Same.
+       * graphite-dependences.c (dot_deps): Disable call to system.
+
+2009-08-28  Cary Coutant  <ccoutant@google.com>
+
+       PR debug/41063
+       * dwarf2out.c (gen_type_die_with_usage): Use proper context for
+       struct/union/enum types local to a function.
+
+2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
+           Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
+       pbb_strip_mine_time_depth.  Changed the implementation so that
+       transformation is expressed as a transformation on
+       time (scatttering) dimensions.  Also, ensures that the 2d+1
+       scheduling format is preserved.
+       (pbb_strip_mine_profitable_p): Profitability is based on the
+       iteration number of a given time (scattering) dimension,
+       and not on a original loop depth dimension.
+       (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
+       (pbb_do_strip_mine): Call psct_dynamic_dim.
+       * graphite-poly.c (pbb_number_of_iterations_at_time): New.
+       * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
+       (pbb_nb_dynamic_scattering_transform): New.
+       (psct_dynamic_dim): New.
+
+2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
+
+       * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
+       * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
+       * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
+       * graphite-interchange.c (build_linearized_memory_access): Same.
+       (memory_stride_in_loop): Same.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (pddr_original_scattering): New.
+       (graphite_legal_transform_dr): Call pddr_original_scattering.
+       (dot_deps_1): New.
+       (dot_deps): New.
+       * graphite-dependences.h (dot_deps): Declared.
+       * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
+       (print_pdr): Print PDR_ID.
+       * graphite-poly.h (struct poly_dr): Add field id.
+       (PDR_ID): New.
+       (pbb_index): New.
+       * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (graphite_carried_dependence_level_k): Do
+       not delete the original dependence relation.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
+       (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
+       (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
+       (free_poly_ddr): New.
+       (pddr_is_empty): New.
+       (dependence_polyhedron_1): Now returns a poly_ddr_p.
+       (dependence_polyhedron): Same.  Remove useless gcc_assert.
+       Remove fprintfs.
+       (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
+       (graphite_carried_dependence_level_k): Call pddr_is_empty.
+       * graphite-dependences.h (enum poly_dependence_kind): New.
+       (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
+       (PDRP_SOURCE): Renamed PDDR_SOURCE.
+       (PDRP_SINK): Renamed PDDR_SINK.
+       (PDRP_DDP): Renamed PDDR_DDP.
+       (PDDR_KIND): New.
+       (free_poly_ddr): Declared.
+       * graphite-poly.c (new_scop): Use the new hash function names.
+       * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
+       into original_pddrs.
+       (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
+       bounds with LT_EXPR to make niter analysis more precise on code
+       generated by Graphite.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
+       (graphite_legal_transform_bb): Same.
+       (poly_drs_may_alias_p): Same.
+
+2009-08-28  Richard Guenther  <rguenther@suse.de>
+
+       * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
+
+2009-08-28  Jan Beulich  <jbeulich@novell.com>
+
+       * config/i386/netware.c: Include langhooks.h.
+       (i386_nlm_encode_section_info): Simplify.
+       (netware_override_options): Delete.
+       * config/i386/netware.h (netware_override_options): Delete
+       declaration.
+       (OVERRIDE_OPTIONS): Delete definition.
+       (SUBTARGET_OVERRIDE_OPTIONS): Define.
+       (ASM_COMMENT_START): Define.
+       * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
+
+2009-08-28  Jan Beulich  <jbeulich@novell.com>
+
+       * configure.ac: For in-tree ld, do a plain version check to
+       determine whether comdat groups are supported.
+       * configure: Regenerate.
+
+2009-08-28  Olivier Hainque  <hainque@adacore.com>
+
+       * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
+       always defined.  Reflect definition or absence of such for
+       COLLECT_EXPORT_LIST.  Readability helper.
+       (scanfilter): New enum, to help control what symbols
+       are to be considered or ignored by scan_prog_file.
+       (enum pass): Rename as "scanpass", moved together with scanfilter
+       prior to scan_prog_file's prototype.
+       (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
+       Group prototype with the scanpass/scanfilter definitions, factorize
+       head comments for the several implementations at the prototype.
+       (main): Reorganize the first pass link control to let AIX
+       drag only the needed frame tables in executables.  Prevent
+       frame tables collection during the scan aimed at static ctors.
+       Pre-link and scan for frame tables later to compensate.
+       * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
+       A C statement to issue assembly directives that create a reference
+       to the given DWARF table identifier label from the current function
+       section.
+       * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
+       to differentiate first time section entry.  Only emit a .data
+       tables start identifier label the first time around.
+       (switch_to_frame_table_section): New function.  Helper for
+       output_call_frame_info to switch possibly BACK into the eh_frame
+       or the debug_frame section depending on FOR_EH.
+       (output_call_frame_info): Use helper to first enter the proper
+       frame section.
+       (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
+       emit a link to the frame table start label from each function
+       section.
+       * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
+       New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
+       * config/rs6000/rs6000-protos.h: Declare it.
+       * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
+
+2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       * config/sh/sh.c (split_branches): Check the result of
+       next_active_insn.
+
+2009-08-27  Steve Ellcey  <sje@cup.hp.com>
+
+       * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
+       using -pthread -fopenmp
+
+2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
+
+       * doc/service.texi (service directory): Update URL.
+
+2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR rtl-optimization/40861
+       * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
+       extract word from a multi-word subreg for negative byte positions.
+
+2009-08-27  Tristan Gingold  <gingold@adacore.com>
+           Douglas B Rupp  <rupp@gnat.com>
+
+       * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
+       (SECTION_VMS_OVERLAY): Define.
+       (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
+       attribute.
+       (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
+       for common_object.
+       (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
+       common_object declarations.
+       (ia64_section_type_flags): Set section flag for common_object.
+       * config/ia64/ia64-protos.h
+       (ia64_vms_output_aligned_decl_common): Declare.
+       (ia64_vms_elf_asm_named_section): Declare.
+
+2009-08-27  Michael Matz  <matz@suse.de>
+
+       * expr.c (expand_expr_real_2): New function taking exploded
+       unary or binary expression, split out from ...
+       (expand_expr_real_1): ... here.  Move over all unary/binary
+       switch parts to above function, in particular these codes:
+       PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
+       MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
+       ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
+       FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
+       FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
+       BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
+       BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
+       LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
+       NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
+       UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
+       WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
+       VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
+       VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
+       VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
+       VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
+       VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
+       VEC_PACK_FIX_TRUNC_EXPR.
+       (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
+       full expression.
+
+2009-08-27  Richard Guenther  <rguenther@suse.de>
+
+       * gengtype.c (main): Handle uint64_t.
+       * ipa-utils.c (get_base_var): Indent properly.
+       * tree-ssa-live.c (debug_scope_block): New function.
+       * tree-flow.h (debug_scope_block): Declare.
+       * tree-ssa-copy.c (replace_exp_1): Add vertical space.
+       * basic-block.h (enum profile_status): Rename to
+       enum profile_status_d.
+       (x_profile_status): Adjust type.
+
+2009-08-27  Dodji Seketeli  <dodji@redhat.com>
+
+       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  Anatoly Sokolov  <aesok@post.ru>
+
+       * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
+       switch.
+
+2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * config/mips/mips-protos.h (mips_output_sync): Declare.
+       (mips_sync_loop_insns): Likewise.
+       (mips_output_sync_loop): Replace first two parameters with an rtx.
+       * config/mips/mips.c (mips_multi_member): New structure.
+       (mips_multi_members): New variable.
+       (mips_multi_start): New function.
+       (mips_multi_add): Likewise.
+       (mips_multi_add_insn): Likewise.
+       (mips_multi_add_label): Likewise.
+       (mips_multi_last_index): Likewise.
+       (mips_multi_copy_insn): Likewise.
+       (mips_multi_set_operand): Likewise.
+       (mips_multi_write): Likewise.
+       (mips_print_operand_punctuation): Remove '%|' and '%-'.
+       (mips_init_print_operand_punct): Update accordingly.
+       (mips_start_ll_sc_sync_block): New function.
+       (mips_end_ll_sc_sync_block): Likewise.
+       (mips_output_sync): Likewise.
+       (mips_sync_insn1_template): Likewise.
+       (mips_sync_insn2_template): Likewise.
+       (mips_get_sync_operand): Likewise.
+       (mips_process_sync_loop): Likewise.
+       (mips_output_sync_loop): Use mips_process_sync_loop.
+       (mips_sync_loop_insns): New function.
+       * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
+       (MIPS_COMPARE_AND_SWAP_12): Likewise.
+       (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
+       (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
+       (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
+       (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
+       (MIPS_SYNC_OLD_OP_12): Likewise.
+       (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
+       (MIPS_SYNC_NEW_OP_12): Likewise.
+       (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
+       (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
+       (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
+       (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
+       (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
+       (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
+       * config/mips/mips.md (sync_mem): New attribute.
+       (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
+       (sync_exclusive_mask, sync_required_oldval): Likewise.
+       (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
+       (sync_release_barrier): Likewise.
+       (length): Handle sync loops.
+       (sync): Use mips_output_sync.
+       * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
+       (sync_compare_and_swap<mode>): Set the new sync_* attributes
+       and use mips_output_sync_loop.
+       (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
+       (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
+       (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
+       (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
+       (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
+       (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
+       (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
+       (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
+       (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
+
+2009-08-26  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/41163
+       * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
+       the types to not match.
+       * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
+       verification.
+       * tree-ssa.c (useless_type_conversion_p): Conversions to
+       pointers to unprototyped functions are useless.
+
+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.
+       (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
+       params build a representative with known type and track its fields.
+
+2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
+       clearing by a taken branch.
+       (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
+       effectively after bbro pass.
+       (sync_nand<mode>): Ditto.
+       (sync_old_<fetchop_name><mode>): Ditto.
+       (sync_old_nand<mode>): Ditto.
+       (sync_new_<fetchop_name><mode>): Dito.
+       (sync_new_nand<mode>): Ditto.
+       (sync_compare_and_swap<mode>_1): Ditto.
+       (*sync_compare_and_swap<mode>): Ditto.
+       (sync_lock_test_and_set<mode>_1): Ditto.
+       ("sync_lock_test_and_set<mode>): Ditto.
+
+2009-08-25  Douglas B Rupp  <rupp@gnat.com>
+
+       * hwint.h (HOST_LONG_FORMAT): New macro
+       * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
+       Use HOST_PTR_PRINTF.
+       * system.h (HOST_PTR_PRINTF): Resurrect old macro
+       * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
+       (HOST_PTR_PRINTF): Document.
+
+2009-08-25 Jan Hubicka  <jh@suse.cz>
+
+       * config/i386/bmmintrin.h: Replace by #error.
+
+       Revert:
+       Michael Meissner  <michael.meissner@amd.com>
+       Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
+       Tony Linthicum  <tony.linthicum@amd.com>
+
+       * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
+       (TARGET_ROUND): New macro for the round/ptest instructions which
+       are shared between SSE4.1 and SSE5.
+       (OPTION_MASK_ISA_ROUND): Ditto.
+       (OPTION_ISA_ROUND): Ditto.
+       (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
+       (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
+
+       * config/i386/i386.opt (-msse5): New switch for SSE5 support.
+       (-mfused-madd): New switch to give users control over whether the
+       compiler optimizes to use the multiply/add SSE5 instructions.
+
+       * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
+       (ix86_handle_option): Turn off 3dnow if -msse5.
+       (override_options): Add SSE5 support.
+       (print_operand): %Y prints comparison codes for SSE5 com/pcom
+       instructions.
+       (ix86_expand_sse_movcc): Add SSE5 support.
+       (ix86_expand_sse5_unpack): New function to use pperm to unpack a
+       vector type to the next largest size.
+       (ix86_expand_sse5_pack): New function to use pperm to pack a
+       vector type to the next smallest size.
+       (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
+       (IX86_BUILTIN_FMADDSD): Ditto.
+       (IX86_BUILTIN_FMADDPS): Ditto.
+       (IX86_BUILTIN_FMADDPD): Ditto.
+       (IX86_BUILTIN_FMSUBSS): Ditto.
+       (IX86_BUILTIN_FMSUBSD): Ditto.
+       (IX86_BUILTIN_FMSUBPS): Ditto.
+       (IX86_BUILTIN_FMSUBPD): Ditto.
+       (IX86_BUILTIN_FNMADDSS): Ditto.
+       (IX86_BUILTIN_FNMADDSD): Ditto.
+       (IX86_BUILTIN_FNMADDPS): Ditto.
+       (IX86_BUILTIN_FNMADDPD): Ditto.
+       (IX86_BUILTIN_FNMSUBSS): Ditto.
+       (IX86_BUILTIN_FNMSUBSD): Ditto.
+       (IX86_BUILTIN_FNMSUBPS): Ditto.
+       (IX86_BUILTIN_FNMSUBPD): Ditto.
+       (IX86_BUILTIN_PCMOV_V2DI): Ditto.
+       (IX86_BUILTIN_PCMOV_V4SI): Ditto.
+       (IX86_BUILTIN_PCMOV_V8HI): Ditto.
+       (IX86_BUILTIN_PCMOV_V16QI): Ditto.
+       (IX86_BUILTIN_PCMOV_V4SF): Ditto.
+       (IX86_BUILTIN_PCMOV_V2DF): Ditto.
+       (IX86_BUILTIN_PPERM): Ditto.
+       (IX86_BUILTIN_PERMPS): Ditto.
+       (IX86_BUILTIN_PERMPD): Ditto.
+       (IX86_BUILTIN_PMACSSWW): Ditto.
+       (IX86_BUILTIN_PMACSWW): Ditto.
+       (IX86_BUILTIN_PMACSSWD): Ditto.
+       (IX86_BUILTIN_PMACSWD): Ditto.
+       (IX86_BUILTIN_PMACSSDD): Ditto.
+       (IX86_BUILTIN_PMACSDD): Ditto.
+       (IX86_BUILTIN_PMACSSDQL): Ditto.
+       (IX86_BUILTIN_PMACSSDQH): Ditto.
+       (IX86_BUILTIN_PMACSDQL): Ditto.
+       (IX86_BUILTIN_PMACSDQH): Ditto.
+       (IX86_BUILTIN_PMADCSSWD): Ditto.
+       (IX86_BUILTIN_PMADCSWD): Ditto.
+       (IX86_BUILTIN_PHADDBW): Ditto.
+       (IX86_BUILTIN_PHADDBD): Ditto.
+       (IX86_BUILTIN_PHADDBQ): Ditto.
+       (IX86_BUILTIN_PHADDWD): Ditto.
+       (IX86_BUILTIN_PHADDWQ): Ditto.
+       (IX86_BUILTIN_PHADDDQ): Ditto.
+       (IX86_BUILTIN_PHADDUBW): Ditto.
+       (IX86_BUILTIN_PHADDUBD): Ditto.
+       (IX86_BUILTIN_PHADDUBQ): Ditto.
+       (IX86_BUILTIN_PHADDUWD): Ditto.
+       (IX86_BUILTIN_PHADDUWQ): Ditto.
+       (IX86_BUILTIN_PHADDUDQ): Ditto.
+       (IX86_BUILTIN_PHSUBBW): Ditto.
+       (IX86_BUILTIN_PHSUBWD): Ditto.
+       (IX86_BUILTIN_PHSUBDQ): Ditto.
+       (IX86_BUILTIN_PROTB): Ditto.
+       (IX86_BUILTIN_PROTW): Ditto.
+       (IX86_BUILTIN_PROTD): Ditto.
+       (IX86_BUILTIN_PROTQ): Ditto.
+       (IX86_BUILTIN_PROTB_IMM): Ditto.
+       (IX86_BUILTIN_PROTW_IMM): Ditto.
+       (IX86_BUILTIN_PROTD_IMM): Ditto.
+       (IX86_BUILTIN_PROTQ_IMM): Ditto.
+       (IX86_BUILTIN_PSHLB): Ditto.
+       (IX86_BUILTIN_PSHLW): Ditto.
+       (IX86_BUILTIN_PSHLD): Ditto.
+       (IX86_BUILTIN_PSHLQ): Ditto.
+       (IX86_BUILTIN_PSHAB): Ditto.
+       (IX86_BUILTIN_PSHAW): Ditto.
+       (IX86_BUILTIN_PSHAD): Ditto.
+       (IX86_BUILTIN_PSHAQ): Ditto.
+       (IX86_BUILTIN_FRCZSS): Ditto.
+       (IX86_BUILTIN_FRCZSD): Ditto.
+       (IX86_BUILTIN_FRCZPS): Ditto.
+       (IX86_BUILTIN_FRCZPD): Ditto.
+       (IX86_BUILTIN_CVTPH2PS): Ditto.
+       (IX86_BUILTIN_CVTPS2PH): Ditto.
+       (IX86_BUILTIN_COMEQSS): Ditto.
+       (IX86_BUILTIN_COMNESS): Ditto.
+       (IX86_BUILTIN_COMLTSS): Ditto.
+       (IX86_BUILTIN_COMLESS): Ditto.
+       (IX86_BUILTIN_COMGTSS): Ditto.
+       (IX86_BUILTIN_COMGESS): Ditto.
+       (IX86_BUILTIN_COMUEQSS): Ditto.
+       (IX86_BUILTIN_COMUNESS): Ditto.
+       (IX86_BUILTIN_COMULTSS): Ditto.
+       (IX86_BUILTIN_COMULESS): Ditto.
+       (IX86_BUILTIN_COMUGTSS): Ditto.
+       (IX86_BUILTIN_COMUGESS): Ditto.
+       (IX86_BUILTIN_COMORDSS): Ditto.
+       (IX86_BUILTIN_COMUNORDSS): Ditto.
+       (IX86_BUILTIN_COMFALSESS): Ditto.
+       (IX86_BUILTIN_COMTRUESS): Ditto.
+       (IX86_BUILTIN_COMEQSD): Ditto.
+       (IX86_BUILTIN_COMNESD): Ditto.
+       (IX86_BUILTIN_COMLTSD): Ditto.
+       (IX86_BUILTIN_COMLESD): Ditto.
+       (IX86_BUILTIN_COMGTSD): Ditto.
+       (IX86_BUILTIN_COMGESD): Ditto.
+       (IX86_BUILTIN_COMUEQSD): Ditto.
+       (IX86_BUILTIN_COMUNESD): Ditto.
+       (IX86_BUILTIN_COMULTSD): Ditto.
+       (IX86_BUILTIN_COMULESD): Ditto.
+       (IX86_BUILTIN_COMUGTSD): Ditto.
+       (IX86_BUILTIN_COMUGESD): Ditto.
+       (IX86_BUILTIN_COMORDSD): Ditto.
+       (IX86_BUILTIN_COMUNORDSD): Ditto.
+       (IX86_BUILTIN_COMFALSESD): Ditto.
+       (IX86_BUILTIN_COMTRUESD): Ditto.
+       (IX86_BUILTIN_COMEQPS): Ditto.
+       (IX86_BUILTIN_COMNEPS): Ditto.
+       (IX86_BUILTIN_COMLTPS): Ditto.
+       (IX86_BUILTIN_COMLEPS): Ditto.
+       (IX86_BUILTIN_COMGTPS): Ditto.
+       (IX86_BUILTIN_COMGEPS): Ditto.
+       (IX86_BUILTIN_COMUEQPS): Ditto.
+       (IX86_BUILTIN_COMUNEPS): Ditto.
+       (IX86_BUILTIN_COMULTPS): Ditto.
+       (IX86_BUILTIN_COMULEPS): Ditto.
+       (IX86_BUILTIN_COMUGTPS): Ditto.
+       (IX86_BUILTIN_COMUGEPS): Ditto.
+       (IX86_BUILTIN_COMORDPS): Ditto.
+       (IX86_BUILTIN_COMUNORDPS): Ditto.
+       (IX86_BUILTIN_COMFALSEPS): Ditto.
+       (IX86_BUILTIN_COMTRUEPS): Ditto.
+       (IX86_BUILTIN_COMEQPD): Ditto.
+       (IX86_BUILTIN_COMNEPD): Ditto.
+       (IX86_BUILTIN_COMLTPD): Ditto.
+       (IX86_BUILTIN_COMLEPD): Ditto.
+       (IX86_BUILTIN_COMGTPD): Ditto.
+       (IX86_BUILTIN_COMGEPD): Ditto.
+       (IX86_BUILTIN_COMUEQPD): Ditto.
+       (IX86_BUILTIN_COMUNEPD): Ditto.
+       (IX86_BUILTIN_COMULTPD): Ditto.
+       (IX86_BUILTIN_COMULEPD): Ditto.
+       (IX86_BUILTIN_COMUGTPD): Ditto.
+       (IX86_BUILTIN_COMUGEPD): Ditto.
+       (IX86_BUILTIN_COMORDPD): Ditto.
+       (IX86_BUILTIN_COMUNORDPD): Ditto.
+       (IX86_BUILTIN_COMFALSEPD): Ditto.
+       (IX86_BUILTIN_COMTRUEPD): Ditto.
+       (IX86_BUILTIN_PCOMEQUB): Ditto.
+       (IX86_BUILTIN_PCOMNEUB): Ditto.
+       (IX86_BUILTIN_PCOMLTUB): Ditto.
+       (IX86_BUILTIN_PCOMLEUB): Ditto.
+       (IX86_BUILTIN_PCOMGTUB): Ditto.
+       (IX86_BUILTIN_PCOMGEUB): Ditto.
+       (IX86_BUILTIN_PCOMFALSEUB): Ditto.
+       (IX86_BUILTIN_PCOMTRUEUB): Ditto.
+       (IX86_BUILTIN_PCOMEQUW): Ditto.
+       (IX86_BUILTIN_PCOMNEUW): Ditto.
+       (IX86_BUILTIN_PCOMLTUW): Ditto.
+       (IX86_BUILTIN_PCOMLEUW): Ditto.
+       (IX86_BUILTIN_PCOMGTUW): Ditto.
+       (IX86_BUILTIN_PCOMGEUW): Ditto.
+       (IX86_BUILTIN_PCOMFALSEUW): Ditto.
+       (IX86_BUILTIN_PCOMTRUEUW): Ditto.
+       (IX86_BUILTIN_PCOMEQUD): Ditto.
+       (IX86_BUILTIN_PCOMNEUD): Ditto.
+       (IX86_BUILTIN_PCOMLTUD): Ditto.
+       (IX86_BUILTIN_PCOMLEUD): Ditto.
+       (IX86_BUILTIN_PCOMGTUD): Ditto.
+       (IX86_BUILTIN_PCOMGEUD): Ditto.
+       (IX86_BUILTIN_PCOMFALSEUD): Ditto.
+       (IX86_BUILTIN_PCOMTRUEUD): Ditto.
+       (IX86_BUILTIN_PCOMEQUQ): Ditto.
+       (IX86_BUILTIN_PCOMNEUQ): Ditto.
+       (IX86_BUILTIN_PCOMLTUQ): Ditto.
+       (IX86_BUILTIN_PCOMLEUQ): Ditto.
+       (IX86_BUILTIN_PCOMGTUQ): Ditto.
+       (IX86_BUILTIN_PCOMGEUQ): Ditto.
+       (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
+       (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
+       (IX86_BUILTIN_PCOMEQB): Ditto.
+       (IX86_BUILTIN_PCOMNEB): Ditto.
+       (IX86_BUILTIN_PCOMLTB): Ditto.
+       (IX86_BUILTIN_PCOMLEB): Ditto.
+       (IX86_BUILTIN_PCOMGTB): Ditto.
+       (IX86_BUILTIN_PCOMGEB): Ditto.
+       (IX86_BUILTIN_PCOMFALSEB): Ditto.
+       (IX86_BUILTIN_PCOMTRUEB): Ditto.
+       (IX86_BUILTIN_PCOMEQW): Ditto.
+       (IX86_BUILTIN_PCOMNEW): Ditto.
+       (IX86_BUILTIN_PCOMLTW): Ditto.
+       (IX86_BUILTIN_PCOMLEW): Ditto.
+       (IX86_BUILTIN_PCOMGTW): Ditto.
+       (IX86_BUILTIN_PCOMGEW): Ditto.
+       (IX86_BUILTIN_PCOMFALSEW): Ditto.
+       (IX86_BUILTIN_PCOMTRUEW): Ditto.
+       (IX86_BUILTIN_PCOMEQD): Ditto.
+       (IX86_BUILTIN_PCOMNED): Ditto.
+       (IX86_BUILTIN_PCOMLTD): Ditto.
+       (IX86_BUILTIN_PCOMLED): Ditto.
+       (IX86_BUILTIN_PCOMGTD): Ditto.
+       (IX86_BUILTIN_PCOMGED): Ditto.
+       (IX86_BUILTIN_PCOMFALSED): Ditto.
+       (IX86_BUILTIN_PCOMTRUED): Ditto.
+       (IX86_BUILTIN_PCOMEQQ): Ditto.
+       (IX86_BUILTIN_PCOMNEQ): Ditto.
+       (IX86_BUILTIN_PCOMLTQ): Ditto.
+       (IX86_BUILTIN_PCOMLEQ): Ditto.
+       (IX86_BUILTIN_PCOMGTQ): Ditto.
+       (IX86_BUILTIN_PCOMGEQ): Ditto.
+       (IX86_BUILTIN_PCOMFALSEQ): Ditto.
+       (IX86_BUILTIN_PCOMTRUEQ): Ditto.
+       (enum multi_arg_type): New enum for describing the various SSE5
+       intrinsic argument types.
+       (bdesc_multi_arg): New table for SSE5 intrinsics.
+       (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
+       (ix86_expand_multi_arg_builtin): New function for creating SSE5
+       intrinsics.
+       (ix86_expand_builtin): Add SSE5 intrinsic support.
+       (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
+       operand instructions.
+       (ix86_expand_sse5_multiple_memory): New function to split the
+       second memory reference from SSE5 instructions.
+       (type_has_variadic_args_p): Delete in favor of stdarg_p.
+       (ix86_return_pops_args): Use stdarg_p to determine if the function
+       has variable arguments.
+       (ix86_setup_incoming_varargs): Ditto.
+       (x86_this_parameter): Ditto.
+
+       * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
+       declaration.
+       (ix86_expand_sse5_pack): Ditto.
+       (ix86_sse5_valid_op_p): Ditto.
+       (ix86_expand_sse5_multiple_memory): Ditto.
+
+       * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
+       constant for SSE5 support.
+       (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
+       (UNSPEC_SSE5_TRUEFALSE): Ditto.
+       (UNSPEC_SSE5_PERMUTE): Ditto.
+       (UNSPEC_SSE5_ASHIFT): Ditto.
+       (UNSPEC_SSE5_LSHIFT): Ditto.
+       (UNSPEC_FRCZ): Ditto.
+       (UNSPEC_CVTPH2PS): Ditto.
+       (UNSPEC_CVTPS2PH): Ditto.
+       (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
+       (PCOM_TRUE): Ditto.
+       (COM_FALSE_S): Ditto.
+       (COM_FALSE_P): Ditto.
+       (COM_TRUE_S): Ditto.
+       (COM_TRUE_P): Ditto.
+       (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
+       (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
+       types.
+       (memory attribute): Ditto.
+       (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
+       Use SSE4_1_ROUND_* constants instead of hard coded numbers.
+       (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
+       (floor<mode>2): Ditto.
+       (ceil<mode>2): Ditto.
+       (btrunc<mode>2): Ditto.
+       (nearbyintdf2): Ditto.
+       (nearbyintsf2): Ditto.
+       (sse_setccsf): Disable if SSE5.
+       (sse_setccdf): Ditto.
+       (sse5_setcc<mode>): New support for SSE5 conditional move.
+       (sse5_pcmov_<mode>): Ditto.
+
+       * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
+       (SSEMODEF4): Ditto.
+       (SSEMODEF2P): Ditto.
+       (ssemodesuffixf4): New mode attribute for SSE5.
+       (ssemodesuffixf2s): Ditto.
+       (ssemodesuffixf2c): Ditto.
+       (sserotatemax): Ditto.
+       (ssescalarmode): Ditto.
+       (sse_maskcmpv4sf3): Disable if SSE5.
+       (sse_maskcmpv2df3): Ditto.
+       (sse_vmmaskcmpv4sf3): Ditto.
+       (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
+       (sse5_vmfmadd<mode>4): Ditto.
+       (sse5_fmsub<mode>4): Ditto.
+       (sse5_vmfmsub<mode>4): Ditto.
+       (sse5_fnmadd<mode>4): Ditto.
+       (sse5_vmfnmadd<mode>4): Ditto.
+       (sse5_fnmsub<mode>4): Ditto.
+       (sse5_vmfnmsub<mode>4): Ditto.
+       (sse5i_fmadd<mode>4): Ditto.
+       (sse5i_fmsub<mode>4): Ditto.
+       (sse5i_fnmadd<mode>4): Ditto.
+       (sse5i_fnmsub<mode>4): Ditto.
+       (sse5i_vmfmadd<mode>4): Ditto.
+       (sse5i_vmfmsub<mode>4): Ditto.
+       (sse5i_vmfnmadd<mode>4): Ditto.
+       (sse5i_vmfnmsub<mode>4): Ditto.
+       (mulv16qi3): Add SSE5 support.
+       (mulv4si3): Ditto.
+       (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
+       (sse2_mulv4si3): Disable if SSE5.
+       (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
+       (sse4_1_roundps): Ditto.
+       (sse4_1_roundsd): Ditto.
+       (sse4_1_roundss): Ditto.
+       (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
+       be generated.
+       (sse_maskcmpsf3): Ditto.
+       (sse_vmmaskcmpv4sf3): Ditto.
+       (sse2_maskcmpv2df3): Ditto.
+       (sse2_maskcmpdf3): Ditto.
+       (sse2_vmmaskcmpv2df3): Ditto.
+       (sse2_eq<mode>3): Ditto.
+       (sse2_gt<mode>3): Ditto.
+       (sse5_pcmov_<mode>): Add SSE5 support.
+       (vec_unpacku_hi_v16qi): Ditto.
+       (vec_unpacks_hi_v16qi): Ditto.
+       (vec_unpacku_lo_v16qi): Ditto.
+       (vec_unpacks_lo_v16qi): Ditto.
+       (vec_unpacku_hi_v8hi): Ditto.
+       (vec_unpacks_hi_v8hi): Ditto.
+       (vec_unpacku_lo_v8hi): Ditto.
+       (vec_unpacks_lo_v8hi): Ditto.
+       (vec_unpacku_hi_v4si): Ditto.
+       (vec_unpacks_hi_v4si): Ditto.
+       (vec_unpacku_lo_v4si): Ditto.
+       (vec_unpacks_lo_v4si): Ditto.
+       (sse5_pmacsww): New SSE5 intrinsic insn.
+       (sse5_pmacssww): Ditto.
+       (sse5_pmacsdd): Ditto.
+       (sse5_pmacssdd): Ditto.
+       (sse5_pmacssdql): Ditto.
+       (sse5_pmacssdqh): Ditto.
+       (sse5_pmacsdqh): Ditto.
+       (sse5_pmacsswd): Ditto.
+       (sse5_pmacswd): Ditto.
+       (sse5_pmadcsswd): Ditto.
+       (sse5_pmadcswd): Ditto.
+       (sse5_pcmov_<move>): Conditional move support on SSE5.
+       (sse5_phaddbw): New SSE5 intrinsic insn.
+       (sse5_phaddbd): Ditto.
+       (sse5_phaddbq): Ditto.
+       (sse5_phaddwd): Ditto.
+       (sse5_phaddwq): Ditto.
+       (sse5_phadddq): Ditto.
+       (sse5_phaddubw): Ditto.
+       (sse5_phaddubd): Ditto.
+       (sse5_phaddubq): Ditto.
+       (sse5_phadduwd): Ditto.
+       (sse5_phadduwq): Ditto.
+       (sse5_phaddudq): Ditto.
+       (sse5_phsubbw): Ditto.
+       (sse5_phsubwd): Ditto.
+       (sse5_phsubdq): Ditto.
+       (sse5_pperm): Ditto.
+       (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
+       (sse5_pperm_zero_v16qi_v8hi): Ditto.
+       (sse5_pperm_sign_v8hi_v4si): Ditto.
+       (sse5_pperm_zero_v8hi_v4si): Ditto.
+       (sse5_pperm_sign_v4si_v2di): Ditto.
+       (sse5_pperm_sign_v4si_v2di): Ditto.
+       (sse5_pperm_pack_v2di_v4si): Ditto.
+       (sse5_pperm_pack_v4si_v8hi): Ditto.
+       (sse5_pperm_pack_v8hi_v16qi): Ditto.
+       (sse5_perm<mode>): New SSE5 intrinsic insn.
+       (rotl<mode>3): Ditto.
+       (sse5_rotl<mode>3): Ditto.
+       (sse5_ashl<mode>3): Ditto.
+       (sse5_lshl<mode>3): Ditto.
+       (sse5_frcz<mode>2): Ditto.
+       (sse5s_frcz<mode>2): Ditto.
+       (sse5_cvtph2ps): Ditto.
+       (sse5_cvtps2ph): Ditto.
+       (sse5_vmmaskcmp<mode>3): Ditto.
+       (sse5_com_tf<mode>3): Ditto.
+       (sse5_maskcmp<mode>3): Ditto.
+       (sse5_maskcmp_uns<mode>3): Ditto.
+       (sse5_maskcmp_uns2<mode>3): Ditto.
+       (sse5_pcom_tf<mode>3): Ditto.
+
+       * config/i386/predicates.md (sse5_comparison_float_operator):
+       New predicate to match the comparison operators supported by
+       the SSE5 com instruction.
+       (ix86_comparison_int_operator): New predicate to match just the
+       signed int comparisons.
+       (ix86_comparison_uns_operator): New predicate to match just the
+       unsigned int comparisons.
+
+       * doc/invoke.texi (-msse5): Add documentation.
+       (-mfused-madd): Ditto.
+
+       * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
+
+       * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
+       mmintrin-common.h.
+       (x86_64-*-*): Ditto.
+
+       * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
+
+       * config/i386/bmmintrin.h: New file, provide common x86 compiler
+       intrinisics for SSE5.
+
+       * config/i386/smmintrin.h: Move instructions shared with SSE5 to
+       mmintrin-common.h.
+
+       * config/i386/mmintrin-common.h: New file, to contain common
+       instructions between SSE4.1 and SSE5.
+
+       * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
+       FOREACH_FUNCTION_ARGS to iterate over the argument list.
+       (gen_regparm_prefix): Ditto.
+
+       * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
+       FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
+       prototype_p to determine if a function is prototyped.
+
+2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+       * c-common.c (c_common_reswords) add the alignof keyword,
+       with same RID as __alignof and __alignof__
+
+2009-08-25  Anatoly Sokolov  <aesok@post.ru>
+
+       * hooks.h (hook_bool_const_int_const_int_true): Declare.
+       * hooks.c (hook_bool_const_int_const_int_true): New function.
+       * target.h (struct gcc_target): Add can_eliminate field.
+       * target-def.h (TARGET_CAN_ELIMINATE): Define.
+       (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
+       * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
+       * reload1.c (update_eliminables, init_elim_table): (Ditto.).
+       (elim_table): Revise comment.
+       * system.h (CAN_ELIMINATE): Poison.
+       * defaults.h (CAN_ELIMINATE): Remove.
+       * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
+
+       * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
+       * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
+       Define macro.
+       (alpha_vms_can_eliminate): Declare as static, change return type to
+       bool.
+       * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
+
+       * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
+       * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
+       (arm_can_eliminate): New function.
+
+       * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
+       * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
+       (avr_can_eliminate): Declare as static.
+       * config/avr/avr-protos.h (avr_can_eliminate): Remove.
+
+       * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
+       * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
+       (bfin_can_eliminate): New function.
+
+       * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
+       * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
+       (crx_can_eliminate): New function.
+
+       * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
+       * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
+       (fr30_can_eliminate): New function.
+
+       * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
+       * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
+       (frv_can_eliminate): New function.
+
+       * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
+       * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
+       (h8300_can_eliminate): New function.
+
+       * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
+       * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
+       (i386_can_eliminate): Declare as static, change return type to bool.
+       * config/i386/i386-protos.h (i386_can_eliminate): Remove.
+
+       * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
+       * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
+       (ia64_can_eliminate): New function.
+
+       * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
+       * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
+       (iq2000_can_eliminate): New function.
+
+       * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
+       * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
+       (m32r_can_eliminate): New function.
+
+       * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
+       * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
+       (m68hc11_can_eliminate): New function.
+
+       * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
+       * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
+       (m68k_can_eliminate): New function.
+
+       * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
+       * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
+       (mep_can_eliminate): New function.
+
+       * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
+       * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
+       (mips_can_eliminate): New function.
+
+       * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
+       * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
+       (rs6000_can_eliminate): New function.
+
+       * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
+       * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
+       (s390_can_eliminate): Declare as static.
+       * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
+
+       * config/score/score.h (CAN_ELIMINATE): Remove macro.
+       * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
+       (score_can_eliminate): New function.
+
+       * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
+       * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
+       (sparc_can_eliminate): Declare as static.
+       * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
+
+       * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
+       * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
+       (xstormy16_can_eliminate): New function.
+
+       * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
+       * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
+       (v850_can_eliminate): New function.
+
+2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
+       (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
+       (*movdfcc_ext[1234]): Disable for IEEE mode.
+
+2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gimplify.c (prepare_gimple_addressable): New static function.
+       (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
+       it addressable.
+       (gimplify_addr_expr): Invoke it similarly on the operand instead of
+       manually fiddling with it.
+
+2009-08-25  Michael Matz  <matz@suse.de>
+
+       * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
+       * dojump.c (do_jump_by_parts_greater): Take two operands instead of
+       full expression.
+       (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
+       (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
+       (do_jump): Split out code for simple binary comparisons into ...
+       (do_jump_1): ... this, taking the individual operands and code.
+       Change callers to helper function above accordingly.
+       * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
+       comparisons.
+
+2009-08-25  Michael Matz  <matz@suse.de>
+
+       * expr.h (struct separate_ops, sepops): New type for passing
+       around an exploded simple expression.
+       * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
+       Use this structure instead of expression tree.
+       (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
+       expression, only its type.
+       (expand_vec_cond_expr): Take type and individual operands instead
+       of full expression.
+       * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
+       expand_vec_shift_expr): Change prototype accordingly.
+       * tree-vect-stmts.c (vectorizable_condition): Change call of
+       expand_vec_cond_expr_p to pass only type.
+       * expr.c (do_store_flags): Change prototype and implementation
+       to take an exploded expression.
+       (expand_expr_real_1): New local ops initialized with details
+       of the full expression.  Use it instead of full
+       expression in calls to do_store_flags, expand_vec_cond_expr,
+       expand_widen_pattern_expr and expand_vec_shift_expr.
+
 2009-08-25  Michael Matz  <matz@suse.de>
 
        * expr.c (expand_expr_real_1): New local treeop0, treeop1,
 
 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
 
-       * config/arm/arm.c (output_return_instruction): Handle for
-       unified syntax.
+       * config/arm/arm.c (output_return_instruction): Handle for
+       unified syntax.
 
 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
 
-       * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
+       * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
 
 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
 
-        * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
-        (*arm_movdf_vfp): Likewise.
+       * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
+       (*arm_movdf_vfp): Likewise.
 
 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
 
-       * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
-       (vashr<mode>3): Rename from ashr<mode>3.
-       (vlshr<mode>3): Rename from lshr<mode>3.
+       * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
+       (vashr<mode>3): Rename from ashr<mode>3.
+       (vlshr<mode>3): Rename from lshr<mode>3.
 
 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.
        * doc/install.texi (Configuration): Document --datarootdir,
        --docdir, --htmldir, --pdfdir; update documentation for
        --infodir, --mandir.
-       (Prerequisites): Bump Autoconf version to 2.64, Automake to
-       1.11, M4 to 1.4.6.
+       (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
+       M4 to 1.4.6.
 
        * aclocal.m4: Regenerate.
        * config.in: Regenerate.
 
 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>