OSDN Git Service

M68K TLS support.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 2a21734..372df6b 100644 (file)
@@ -1,3 +1,784 @@
+2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+       M68K TLS support.
+       * configure.ac (m68k-*-*): Check if binutils support TLS.
+       * configure: Regenerate.
+       * config/m68k/predicates.md (symbolic_operand): Extend comment.
+       * config/m68k/constraints.md (Cu): New constraint.
+       * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
+       (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
+       (movsi): Handle TLS symbols.
+       (addsi3_5200): Handle XTLS symbols, indent.
+       * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
+       (m68k_tls_reference_p): Declare.
+       (m68k_legitimize_address): Declare.
+       (m68k_unwrap_symbol): Declare.
+       * config/m68k/m68k.opt (mxtls): New option.
+       * config/m68k/m68k.c (ggc.h): Include.
+       (m68k_output_dwarf_dtprel): Implement hook.
+       (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
+       (m68k_expand_prologue): Load GOT pointer when function needs it.
+       (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
+       (m68k_legitimate_constant_address_p): Same.
+       (m68k_decompose_address): Handle TLS references.
+       (m68k_get_gp): New static function.
+       (enum m68k_reloc): New contants.
+       (TLS_RELOC_P): New macro.
+       (m68k_wrap_symbol): New static function.
+       (m68k_unwrap_symbol): New function.
+       (m68k_final_prescan_insn_1): New static function.
+       (m68k_final_prescan_insn): New function.
+       (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
+       functions.
+       (legitimize_pic_address): Handle TLS references..
+       (m68k_tls_get_addr, m68k_get_tls_get_addr)
+       (m68k_libcall_value_in_a0_p)
+       (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
+       (m68k_call_m68k_read_tp): Helper variables and functions for ...
+       (m68k_legitimize_tls_address): Handle TLS references.
+       (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
+       New functions.
+       (m68k_legitimize_address): Handle TLS symbols.
+       (m68k_get_reloc_decoration): New static function.
+       (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
+       UNSPEC_RELOC32.
+       (m68k_output_dwarf_dtprel): Implement hook.
+       (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
+       (m68k_libcall_value): Return result in A0 instead of D0 when asked by
+       m68k_call_* routines.
+       (sched_attr_op_type): Handle TLS symbols.
+       (gt-m68k.h): Include.
+       * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
+       (LEGITIMATE_PIC_OPERAND_P): Support TLS.
+
+2009-05-18  Martin Jambor  <mjambor@suse.cz>
+
+       * ipa-prop.c (ipa_check_stmt_modifications): Removed.
+       (visit_store_addr_for_mod_analysis): New function.
+       (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
+       (determine_cst_member_ptr): Use gimple_assign_single_p.
+       (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
+       (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
+       operands.  Don't check number of operands of a NOP_EXPR.
+
+2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
+
+       * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
+
+2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       PR c/40172
+       * c-common.c (warn_logical_operator): Don't warn if one of
+       expression isn't always true or false.
+
+2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
+
+       * config/i386/biarch32.h: New file.
+       * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
+
+2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
+
+       * config/mips/mips.md (*zero_extend<mode>_trunchi,
+       *zero_extend<mode>_truncqi): Merge these into ...
+       (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
+       Name the pattern following this as *zero_extendhi_truncqi.
+
+2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
+
+       PR middle-end/39301
+       * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
+       * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
+       (output_info): Make field HOST_WIDEST_INT.
+       (print_statistics): Use HOST_WIDEST_INT_PRINT.
+       (dump_bitmat_statistics): Same.
+
+2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
+
+       * config.gcc (use_gcc_stdint):  Set to wrap.
+       * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
+       INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
+       UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
+       INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
+       UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
+       INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
+       UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
+       UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
+
+2009-05-16  Joseph Myers  <joseph@codesourcery.com>
+
+       * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
+       tune_64.
+       * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
+       Move definitions earlier.
+       (OPT_ARCH64, OPT_ARCH32): Define.
+       (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
+       and tune_64.
+
+2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
+
+       PR target/40153
+       * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
+       implies.
+
+2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
+
+       * arm.md (movdi2): Copy non-reg values to DImode registers.
+
+2009-05-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/39942
+       * final.c (label_to_max_skip): New function.
+       (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
+       CODE_LABEL_NUMBER <= max_labelno.
+       * output.h (label_to_max_skip): New prototype.
+       * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
+       (ix86_avoid_jump_mispredicts): ... this.  Don't define if
+       ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
+       Handle CODE_LABELs with >= 16 byte alignment or with
+       max_skip == (1 << align) - 1.
+       (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
+       ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
+
+       PR target/39942
+       * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
+       .p2align 3 if MAX_SKIP is smaller than 7.
+       * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
+
+2009-05-15  Ian Lance Taylor  <iant@google.com>
+
+       * alias.c (struct alias_set_entry_d): Rename from struct
+       alias_set_entry.  Change all uses.
+       * except.c (struct call_site_record_d): Rename from struct
+       call_site_record.  Change all uses.
+       * except.h (struct eh_region_d): Rename from struct eh_region.
+       Change all uses.
+       * gcse.c (struct hash_table_d): Rename from struct hash_table.
+       Change all uses.
+       * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
+       ivtype_map_elt.  Change all uses.
+       (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
+       Change all uses.
+       (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
+       * graphite.h (struct name_tree_d): Rename from struct name_tree.
+       Change all uses.
+       (struct sese_d): Rename from struct sese.  Change all uses.
+       * omega.h (struct eqn_d): Rename from struct eqn.  Change all
+       uses.
+       (struct omega_pb_d): Rename from struct omega_pb.  Change all
+       uses.
+       * optabs.h (struct optab_d): Rename from struct optab.  Change all
+       uses.
+       (struct convert_optab_d): Rename from struct convert_optab.
+       Change all uses.
+       * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
+       ipa_opt_pass.  Change all uses.
+       * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
+       all uses.
+
+       * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
+       defined as a typedef.
+       (grokdeclarator): If -Wc++-compat, warn if a typedef is already
+       defined as a tag.
+
+2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       PR 16302
+       * fold-const.c (make_range,build_range_check,merge_ranges): Move
+       declaration to...
+       (merge_ranges): Returns bool. 
+       * tree.h (make_range): .. to here.
+       (build_range_check): Likewise.
+       (merge_ranges): Likewise. Renamed from merge_ranges.
+       * c-typeck.c (parser_build_binary_op): Update calls to
+       warn_logical_operator.
+       * c-common.c (warn_logical_operator): Add new warning.
+       * c-common.h (warn_logical_operator): Update declaration.
+       
+2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       * ira-conflicts.c (add_insn_allocno_copies): Fix wrong
+       conditional.
+       
+2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * doc/install.texi: Document MPC requirements, flags etc.
+
+       * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
+       (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
+       Evaluate constant arguments.
+       (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
+       (fold_builtin_1): Likewise, also evaluate constant arguments.
+       Remove superfluous break.
+       (do_mpc_ckconv): New.
+       * real.h: Include mpc.h.
+       * toplev.c (print_version): Output MPC version info if available.
+
+2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
+
+       * fold-const.c (fold_convert_const_real_from_real): Check for
+       overflow.
+
+2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
+       only once.
+
+2009-05-15  Jan Hubicka  <jh@suse.cz>
+
+       * doc/invoke.texi (max-early-inliner-iterations): New flag.
+       * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
+       (try_inline): Fix return value.
+       (cgraph_decide_inlining_incrementally): Honor new value.
+       (cgraph_early_inlining): Handle indirect inlining.
+       * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
+
+2009-05-15  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
+       * cgraphunit.c (cgraph_finalize_function): Set it.
+       (cgraph_expand_function): Use it.
+
+2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
+
+       * real.c (encode_ieee_half): Define.
+       (decode_ieee_half): Define.
+       (ieee_half_format): Define.
+       (arm_half_format): Define.
+       * real.h (ieee_half_format): Declare.
+       (arm_half_format): Declare.
+
+2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
+
+       * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
+       swapped, and reversed optabs exist before trying to use them.
+
+2009-05-15  Paul Brook  <paul@codesourcery.com>
+           Sandra Loosemore  <sandra@codesourcery.com>
+
+       * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
+       loads.  Allow PRE_DEC.
+       (output_move_neon): Handle PRE_DEC.
+       (arm_print_operand): Add 'A' for neon structure loads.
+       * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
+       * config/arm/neon.md (neon_mov): Update comment.
+       * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
+       calls.
+       (Um): New constraint.
+
+2009-05-15  Jan Hubicka  <jh@suse.cz>
+
+       Revert the following patch until testsuite fallout is fixed:
+       * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
+       * cgraph.h (struct inline_summary): New filed self_wize,
+       size_inlining_benefit, self_time and time_inlining_benefit.
+       (struct cgraph_global_info): Replace insns by time ans size fields.
+       * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
+       (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
+       (ipcp_update_callgraph): Do not touch function bodies.
+       * ipa-inline.c: Include except.h
+       MAX_TIME: New constant.
+       (overall_insns): Remove
+       (overall_size, max_benefit): New static variables.
+       (cgraph_estimate_time_after_inlining): New function.
+       (cgraph_estimate_size_after_inlining): Rewrite using benefits.
+       (cgraph_clone_inlined_nodes): Update size.
+       (cgraph_mark_inline_edge): Update size.
+       (cgraph_estimate_growth): Use size info.
+       (cgraph_check_inline_limits): Check size.
+       (cgraph_default_inline_p): Likewise.
+       (cgraph_edge_badness): Compute badness based on benefit and size cost.
+       (cgraph_decide_recursive_inlining): Check size.
+       (cgraph_decide_inlining_of_small_function): Update size; dump sizes and times.
+       (cgraph_decide_inlining): Likewise.
+       (cgraph_decide_inlining_incrementally): Likewise; honor PARAM_EARLY_INLINING_INSNS.
+       (likely_eliminated_by_inlining_p): New predicate.
+       (estimate_function_body_sizes): New function.
+       (compute_inline_parameters): Use it.
+       * except.c (must_not_throw_labels): New function.
+       * except.h (must_not_throw_labels): Declare.
+       * tree-inline.c (init_inline_once): Kill inlining_weigths
+       * tree-ssa-structalias.c: Avoid uninitialized warning.
+       * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
+       (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
+       (PARAM_INLINE_CALL_COST): Remove.
+       (PARAM_EARLY_INLINING_INSNS): New.
+
+2009-05-15  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
+       not TODO_update_ssa.
+
+2009-05-15  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/39999
+       * gimple.h (gimple_expr_type): Use the expression type looking
+       through useless conversions.
+       * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
+       (vn_nary_op_insert_stmt): Likewise.
+       (simplify_binary_expression): Likewise.
+
+2009-05-15  Richard Guenther  <rguenther@suse.de>
+
+       * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
+       New options, enabled by default.
+       * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
+       Document.
+       * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
+       * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
+       * tree-ssa-structalias.c (gate_tree_pta): New function.
+       (pass_build_alias): Use it.
+
+2009-05-15  Joseph Myers  <joseph@codesourcery.com>
+
+       * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
+       recurse on an invariant address if a conversion from a pointer
+       type to a wider integer type is involved.
+
+2009-05-15  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
+       * cgraph.h (struct inline_summary): New filed self_wize,
+       size_inlining_benefit, self_time and time_inlining_benefit.
+       (struct cgraph_global_info): Replace insns by time ans size fields.
+       * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
+       (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
+       (ipcp_update_callgraph): Do not touch function bodies.
+       * ipa-inline.c: Include except.h
+       MAX_TIME: New constant.
+       (overall_insns): Remove
+       (overall_size, max_benefit): New static variables.
+       (cgraph_estimate_time_after_inlining): New function.
+       (cgraph_estimate_size_after_inlining): Rewrite using benefits.
+       (cgraph_clone_inlined_nodes): Update size.
+       (cgraph_mark_inline_edge): Update size.
+       (cgraph_estimate_growth): Use size info.
+       (cgraph_check_inline_limits): Check size.
+       (cgraph_default_inline_p): Likewise.
+       (cgraph_edge_badness): Compute badness based on benefit and size cost.
+       (cgraph_decide_recursive_inlining): Check size.
+       (cgraph_decide_inlining_of_small_function): Update size; dump sizes and times.
+       (cgraph_decide_inlining): Likewise.
+       (cgraph_decide_inlining_incrementally): Likewise; honor PARAM_EARLY_INLINING_INSNS.
+       (likely_eliminated_by_inlining_p): New predicate.
+       (estimate_function_body_sizes): New function.
+       (compute_inline_parameters): Use it.
+       * except.c (must_not_throw_labels): New function.
+       * except.h (must_not_throw_labels): Declare.
+       * tree-inline.c (init_inline_once): Kill inlining_weigths
+       * tree-ssa-structalias.c: Avoid uninitialized warning.
+       * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
+       (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
+       (PARAM_INLINE_CALL_COST): Remove.
+       (PARAM_EARLY_INLINING_INSNS): New.
+       doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
+       (inline-call-cost): Remove.
+       (early-inlining-insns): New.
+
+2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
+       for bounds.
+       (print_int_cst_bounds_in_octal_p): Likewise.
+       (dbxout_type): Adjust calls to above functions.  Be prepared to deal
+       with subtypes.
+       * dwarf2out.c (base_type_die): Likewise.
+       (is_subrange_type): Delete.
+       (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
+       (modified_type_die): Call subrange_type_for_debug_p on subtypes.
+       * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if
+       the destination type is boolean.
+       (build_range_check): Do not special-case subtypes.
+       (fold_sign_changed_comparison): Likewise.
+       (fold_unary): Likewise.
+       * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
+       (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
+       * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
+       * tree.c (subrange_type_for_debug_p): New predicate based on the former
+       is_subrange_type.
+       * tree.h (subrange_type_for_debug_p): Declare.
+       * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
+       (convert_affine_scev): Remove call to above function.
+       (chrec_convert_aggressive): Likewise.
+       * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
+       false for conversions involving subtypes.
+       * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
+       (vrp_val_min): Likewise.
+       (needs_overflow_infinity): Likewise.
+       (extract_range_from_unary_expr): Likewise.
+
+2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
+
+        * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
+        * config/frv/frv.c: Likewise.
+        * config/s390/s390.c: Likewise.
+        * config/sparc/sparc.h: Likewise.
+        * config/i386/i386.h: Likewise.
+        * config/i386/i386.c: Likewise.
+        * config/crx/crx.c: Likewise.
+        * config/m68hc11/m68hc11.h: Likewise.
+        * config/iq2000/iq2000.c: Likewise.
+        * config/mn10300/mn10300.h: Likewise.
+        * config/mn10300/mn10300.c: Likewise.
+        * config/m68k/m68k.c: Likewise.
+        * config/rs6000/rs6000.c: Likewise.
+        * config/rs6000/xcoff.h: Likewise.
+        * config/rs6000/linux64.h: Likewise.
+        * config/rs6000/sysv4.h: Likewise.
+        * config/score/score3.c: Likewise.
+        * config/score/score7.c: Likewise.
+        * config/score/score.c: Likewise.
+        * config/arm/arm.md: Likewise.
+        * config/mips/mips.c: Likewise.
+        * config/mips/mips.md: Likewise.
+        * config/bfin/bfin.h: Likewise.
+        * config/pa/pa.c: Likewise.
+        * config/pa/constraints.md: Likewise.
+
+        * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
+        * config/pdp11/pdp11.c (legitimate_address_p): Delete.
+        * config/pdp11/pdp11.h: Use memory_address_p instead.
+
+2009-05-14  Ian Lance Taylor  <iant@google.com>
+
+       * passes.c (finish_optimization_passes): Change i to int.
+       * plugin.c (plugins_active_p): Change event to int.
+       (dump_active_plugins): Likewise.
+       * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
+       Add cast.
+       * tree.c (tree_range_check_failed): Change c to unsigned int.
+       (omp_clause_range_check_failed): Likewise.
+       (build_common_builtin_nodes): Change mode to int.  Add cast.
+       * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
+       (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
+
+       * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
+       ++ or -- with a variable of enum type.
+
+2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
+
+       PR driver/40144
+       * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
+
+2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * store-motion.c: Do not include params.h
+       * Makefile.in: Fix dependencies for various files.
+
+2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * auto-inc-dec.c: Fix pass description, remove apparent
+       accidental duplication.
+
+2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR middle-end/40147
+       * ipa-utils.h (memory_identifier_string): Moved to ...
+       * tree.h (memory_identifier_string): Here.  Add GTY(()).
+
+2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
+
+       * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
+       in the former documentation of...
+       (GO_IF_LEGITIMATE_ADDRESS): ... this.
+       * ira-conflicts.c (get_dup_num): Use address_operand.
+       * targhooks.c (default_legitimate_address_p): New.
+       * targhooks.h (default_legitimate_address_p): New.
+       * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
+       Call hook.
+       * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
+       * target.h (struct target): Add legitimate_address_p.
+       * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
+       (TARGET_INITIALIZER): Include it.
+
+       * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
+       * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       (REG_OK_STRICT_P): Delete.
+       * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
+       (frv_legitimate_address_p_1): ... this.
+       * config/frv/frv.c (frv_legitimate_address_p): Forward to...
+       (frv_legitimate_address_p_1): ... the renamed old
+       frv_legitimate_address_p.
+       * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/s390/s390-protos.h (legitimate_address_p): Remove.
+       * config/s390/s390.c (legitimate_address_p): Rename to...
+       (s390_legitimate_address_p): ... this, make static.
+       (legitimize_address): Adjust call.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+       * config/s390/constraints.md ("e"): Call strict_memory_address_p.
+
+       * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
+       * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/spu/spu-protos.h (spu_legitimate_address): Remove.
+       * config/spu/spu.c (spu_legitimate_address): Rename to...
+       (spu_legitimate_address_p): ... this, make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
+       * config/sparc/sparc.c (legitimate_address_p): Rename to...
+       (sparc_legitimate_address_p): ... this, make static and return bool.
+       (legitimize_address): Adjust call.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/i386/i386-protos.h (legitimate_address_p): Remove.
+       * config/i386/i386.c (legitimate_address_p): Rename to...
+       (ix86_legitimate_address_p): ... this, make static.
+       (constant_address_p): Move after it, adjust call.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/avr/avr-protos.h (legitimate_address_p): Remove.
+       * config/avr/avr.c (legitimate_address_p): Rename to...
+       (avr_legitimate_address_p): ... this, make static.
+       (legitimize_address): Adjust call.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
+       * config/crx/crx.c (crx_legitimate_address_p): Make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
+       * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
+       Remove.
+       * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
+       Make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
+       Remove.
+       * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
+       Rename to...
+       (m68hc11_legitimate_address_p): ... this, make static.
+       (go_if_legitimate_address_internal): Rename to...
+       (m68hc11_legitimate_address_p_1): ... this.
+       (legitimize_address): Adjust call.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p):
+       Remove.
+       * config/iq2000/iq2000.c (iq2000_legitimate_address_p):
+       Make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
+       * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
+       (mn10300_legitimate_address_p): ... this, make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
+       * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
+       (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
+       * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
+       * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
+       (rs6000_legitimate_address_p): ... this, make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+       (REG_MODE_OK_FOR_BASE_P): Delete.
+       (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
+
+       * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
+       Delete.
+       * config/picochip/picochip.c (picochip_legitimate_address_p): Make
+       static, adjust types.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/score/score.c (score_address_p): Rename to...
+       (score_legitimate_address_p): ... this.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+       * config/score/score3.c (score3_address_p): Rename to...
+       (score3_legitimate_address_p): ... this.
+       * config/score/score7.c (score7_address_p): Rename to...
+       (score7_legitimate_address_p): ... this.
+
+       * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
+       THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
+       GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/arm/arm-protos.h (thumb1_legitimate_address_p,
+       thumb2_legitimate_address_p): Delete.
+       (arm_legitimate_address_p): Rename to...
+       (arm_legitimate_address_outer_p): ... this.
+       * config/arm/constraints.md ("Uq"): Adjust call.
+       * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
+       * config/arm/arm.c (arm_legitimate_address_p): New, rename old one to...
+       (arm_legitimate_address_outer_p): ... this.
+       (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
+       * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/vax/vax-protos.h (legitimate_address_p): Remove.
+       * config/vax/vax.c (legitimate_address_p): Rename to...
+       (vax_legitimate_address_p): ... this, make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
+       * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
+       * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
+       (mmix_legitimate_address_p): ... this, make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+       * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
+       * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
+       * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
+       (TARGET_LEGITIMATE_ADDRESS_P): New.
+
+2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
+
+       * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
+       of MODE_COMPLEX_INT.
+
+2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+
+       * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
+       LCT_NORMAL in function call.
+       * mips-tdump.c (print_file_desc): Add cast to enum type.
+       * mips-tfile.c (add_ext_symbol): Add casts to enum types.
+       (mark_stabs): Add casts to enum types.
+       (parse_stabs_common): Add casts to enum types.
+
+2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
+
+       * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
+       Check for invalid values of LETTER.
+
+2009-05-13  Taras Glek  <tglek@mozilla.com>
+
+       * attribs.c (register_attribute): moved out attribute registration into
+       register_attribute.
+       * doc/plugins.texi: Documented register_attribute and PLUGIN_ATTRIBUTES.
+       * gcc-plugin.h: Added forward decl for register_attribute.
+       * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
+       * plugin.c (register_callback, invoke_plugin_callbacks): Added
+       PLUGIN_ATTRIBUTES boilerplate.
+
+2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
+       values even in sentinel and empty entries.
+       (ms_printf_flag_specs):  Likewise.
+       (ms_scanf_flag_specs):  Likewise.
+       (ms_strftime_flag_specs):  Likewise.
+       (ms_print_char_table):  Likewise.
+       (ms_scan_char_table):  Likewise.
+       (ms_time_char_table):  Likewise.
+
+2009-05-13  Doug Kwan  <dougkwan@google.com>
+
+       * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
+
+2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
+
+       * config/mips/mips.md (store): Add attributes for QI and HI.
+       Update comment.
+       (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
+       (truncdi<mode>2): ... this new pattern.
+
+2009-05-13  Brad Hards  <bradh@kde.org>
+
+       * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
+
+2009-05-14  Jakub Jelinek  <jakub@redhat.com>
+           Ben Elliston <bje@au.ibm.com>
+
+       PR middle-end/40035
+       * dse.c (check_mem_read_rtx): Guard against width == -1.
+
+2009-05-13  Michael Matz  <matz@suse.de>
+
+       PR middle-end/39976
+       * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
+       (trivially_conflicts_p): New function.
+       (insert_backedge_copies): Use it.
+
+2009-05-13  Janis Johnson  <janis187@us.ibm.com>
+
+       * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
+       (handle_stdc_pragma): Use new enum constant names.
+       (handle_pragma_float_const_decimal64): Ditto.
+
+2009-05-13  Ian Lance Taylor  <iant@google.com>
+
+       * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
+       tree.def.
+
+2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
+       * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
+       multilibs.
+       * config/m68k/m68k.h (FL_UCLINUX): Define.
+
+2009-05-13  Jan Hubicka  <jh@suse.cz>
+
+       * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
+
+2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
+       unless -fschedule-insns is specified.
+
+2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       PR target/39561
+       * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
+       TARGET_EXPAND_CBRANCHDI4.
+       * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
+       * config/sh/sh.opt (mexpand-cbranchdi): Remove.
+       (cmpeqdi): Fix comment.
+
+2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
+       (sh_legitimate_address_p): Likewise.
+       * config/sh/sh.c (sh_legitimate_index_p): New.
+       (sh_legitimate_address_p): Likewise.
+       * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
+       (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
+       (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
+       (MAYBE_BASE_REGISTER_RTX_P): New macro.
+       (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
+       (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
+       (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
+       (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
+       (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
+
 2009-05-12  Jan Hubicka  <jh@suse.cz>
 
        * tree-inline.c (estimate_operator_cost): Add operands;