OSDN Git Service

2009-09-08 Kai Tietz <kai.tietz@onevision.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index f623607..7ee2b11 100644 (file)
@@ -1,3 +1,750 @@
+2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
+
+       * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
+       via intptr_t to long type.
+       (insert_operand_rank): Cast long type via intptr_t to
+       pointer type.
+       * genattrtab.c (RTL_HASH): Use intptr_t to cast from
+       pointer to scalar.
+       * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
+       from pointer to unsigned via uintptr_t.
+
+       * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
+       uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
+       and HAVE_INTPTR_T.
+       * configure: Regenerated.
+       * config.in: Regenerated
+       * system.h (stdint.h): Add include.
+       (inttypes.h): Likewise.
+       * Makefile.in (aclocal): Add config/stdint.m4.
+       * aclocal.m4: Regenerated.
+
+2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
+       variables.
+       (note_np_check_stores): New function.
+       (harmless_null_pointer_p): New function.
+       (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
+       changed.  Take into account whether we're in the shadow of a condjump
+       that tested NP_REG for NULL.
+       Lose all code that tested for SEQUENCEs.
+       (workaround_speculation): Avoid inserting NOPs for loads that are
+       either always executed or a NULL pointer.
+
+2009-09-08  Jan Hubicka  <jh@suse.cz>
+
+       * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
+       * params.def (early-inlining-insns): Likewise.
+
+2009-09-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/41239
+       * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
+       * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
+       lists.
+       * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
+       across calls, as the calls might not always return normally.
+       (call_may_noreturn_p): New function.
+       (deps_analyze_insn): Update last_function_call_may_noreturn list.
+       (init_deps): Initialize it.
+       (remove_from_deps): Also remove calls from
+       last_function_call_may_noreturn list.
+
+2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
+       (attr "addrtype"): New member "spreg".
+       Use it if mem_spfp_address_operand is true for the address.
+       (attr "type"): New entry "stall".
+       (cpu_unit "load"): New.
+       (insn_reservations "load32", "loadp", "loadi"): Add reservation of
+       "load".
+       (insn_reservation "loadsp"): New.
+       (insn_reservation "load_stall1"): New.
+       (insn_reservation "load_stall3"): New.
+       (stall): New insn.      
+       * config/bfin/predicates.md (const1_operand, const3_operand): New.
+       (mem_p_address_operand): Exclude stack and frame pointer based
+       addresses.
+       (mem_spfp_address_operand): New; match them here.
+       * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
+       (bfin_reorg): Call it if scheduling insns.
+       (bfin_gen_bundles): Remove dummy insns created by
+       add_sched_insns_for_speculation.
+
+       From Jie Zhang <jie.zhang@analog.com>:
+       * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
+       bfin_si_revision, bfin_workarounds): Move these ...
+       * config/bfin/bfin.h: ... here.
+
+       From Mike Frysinger  <michael.frysinger@analog.com>
+       * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
+       BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
+       * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m, bf547m,
+       bf548m, and bf549m.
+       * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
+       for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M, __ADSPBF547M__
+       for BFIN_CPU_BF547M, __ADSPBF548M__ for BFIN_CPU_BF548M, and
+       __ADSPBF549M__ for BFIN_CPU_BF549M.
+       * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
+       bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
+       * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
+       * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
+       * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
+       bf542m, bf544m, bf547m, bf548m, and bf549m.
+
+       From Jie Zhang <jie.zhang@analog.com>:
+       * config/bfin/predicates.md (p_register_operand): New
+       predicate.
+       (dp_register_operand): New predicate.
+       * config/bfin/bfin-protos.h (WA_05000074): Define.
+       (ENABLE_WA_05000074): Define.
+       * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for
+       all cpus.
+       (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
+       * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
+       (define_attr addrtype): Allow load/store register to be
+       P register.
+       (define_attr storereg): New.
+       (define_cpu_unit anomaly_05000074): New.
+       (define_insn_reservation dsp32shiftimm): New.
+       (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
+       (define_insn_reservation loadp): Cannot use slot2.
+       (define_insn_reservation loadsp): Cannot use slot2.
+       (define_insn_reservation storep): Cannot use slot2. Does not
+       apply when working around 05000074.
+       (define_insn_reservation storep_anomaly_05000074): New.
+       (define_insn_reservation storei): Does not apply when working
+       around 05000074.
+       (define_insn_reservation storei_anomaly_05000074): New.
+       (define_attr length): Add dsp32shiftimm case.
+       (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
+       ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
+       movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
+       ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
+       Set type as dsp32shiftimm for dsp32shiftimm alternatives.
+
+2009-09-07  Martin Jambor  <mjambor@suse.cz>
+
+       PR middle-end/41282
+       * tree-sra.c (create_artificial_child_access): Return NULL if
+       build_ref_for_offset fails.
+       (propagate_subacesses_accross_link): Allow build_ref_for_offset
+       and create_artificial_child_access to fail.
+
+2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
+
+       PR c++/41214
+        * unwind-dw2.c (uw_init_context_1): Mark noinline.
+       * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
+       * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
+
+2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
+       block, ensure it has an exit edge.  Emit a barrier after a jump.
+
+2009-09-07  Nick Clifton  <nickc@redhat.com>
+
+       * gcc.c (this_is_linker_script): New variable.  Like
+       this_is_library_file but for the %T constructor.
+       (end_going_arg): If this_is_linker_script is set then locate the
+       script and insert a --script switch before it
+        (do_spec_2): Initialise this_is_linker_script.
+        (do_spec_1): Likewise.  Handle %T construct.
+        (eval_spec_function): Preserve this_is_linker_script.
+       * doc/invoke.texi: Document %T construct in spec files.
+       * config/m32c/m32c.h (LIB_SPEC): Use it.
+
+2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+       * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.       
+       * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
+       when volatile flag is set.
+       * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
+
+2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR bootstrap/41241
+       * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
+       (combine_stack_adjustments_for_block): Allow insns between stack
+       adjustments and stores with corresponding pre-(dec|inc)rement or
+       pre-modify operation.
+
+2009-09-06  Jakub Jelinek  <jakub@redhat.com>
+
+       PR bootstrap/41241
+       * combine-stack-adj.c (struct csa_memlist): Rename to...
+       (struct csa_reflist): ... this.  Rename mem field to ref.
+       (free_csa_memlist): Rename to...
+       (free_csa_reflist): ... this.
+       (record_one_stack_memref): Rename to...
+       (record_one_stack_ref): ... this.  Handle also REG_P.
+       (try_apply_stack_adjustment): Handle also REG_P.
+       (struct record_stack_memrefs_data): Rename to...
+       (struct record_stack_refs_data): ... this.  Rename memlist field to
+       reflist.
+       (record_stack_memrefs): Rename to...
+       (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
+       subexpressions instead of failing when a MEM contains SP references.
+       For SP itself in DEBUG_INSNs queue it also onto reflist chain.
+       (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
+
+2009-09-06  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/41144
+       * tree.c (build_array_type): Do not record types marked
+       with structural equality in the canonical type hashtable.
+
+2009-09-06  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/41261
+       * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
+
+2009-09-05  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/41181
+       * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
+
+2009-09-05  Richard Guenther  <rguenther@suse.de>
+
+       PR debug/41273
+       * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
+
+2009-09-05  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/41271
+       * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
+       before comparing function argument types.
+
+2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+       PR target/41024
+       * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
+       the assembler.
+
+2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
+
+       Revert:
+       2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
+       locators before emit_insn is called.
+
+2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR bootstrap/41241
+       * ira.c (update_equiv_reg): Revert my previous patch for the PR.
+       * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
+       (reginfo_init): Don't call allocate_reg_info.
+
+2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/41262
+       * config/alpha/alpha.c (alpha_does_function_need_gp): Use
+       NONDEBUG_INSN_P instead of INSN_P.
+
+2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/41225
+       * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
+
+2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR target/41252
+       * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
+       pattern of the split.
+
+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.
+
+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  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
        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.
        * 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 
+       * 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.
        (contributes_to_priority): Skip debug insns.
        (dep_list_size): New.
        (priority): Use it.
-       (rank_for_schedule): Likewise.  Schedule debug insns as soon as 
+       (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.
        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
+       (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.
        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.     
+       (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.
 
 2009-09-01  Richard Henderson  <rth@redhat.com>
 
-       * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate 
+       * 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.
        (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