OSDN Git Service

2008-08-22 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index be9020e..7d69cf0 100644 (file)
@@ -1,3 +1,970 @@
+2008-08-22  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/37078
+       * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
+       [+INF, +INF] ranges.
+
+2008-08-22  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/37143
+       * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
+       a conversion statement instead of a copy.
+
+2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/37184
+       * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
+       CCCmode, CCOmode and CCSmode destination modes.
+
+       PR target/37191
+       * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
+       from different units in a single alternative.
+       (*vec_extractv2sf_1): Ditto.
+       (*vec_extractv2si_0): Ditto.
+       (*vec_extractv2si_1): Ditto.
+       * config/i386/sse.md (sse2_storehpd): Ditto.
+       (sse2_storelpd): Ditto.
+       (sse2_loadhpd): Ditto.
+       (sse2_loadlpd): Ditto.
+
+       PR target/37197
+       * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
+       (popcountsi2): Ditto.
+       (clzdi2_abm): Ditto.
+       (popcountdi2): Ditto.
+       (clzhi2_abm): Ditto.
+       (popcounthi2): Ditto.
+
+2008-08-22  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/36548
+       PR middle-end/37125
+       * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
+       if the multiplication does not overflow.
+
+2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
+
+2008-08-21  Richard Henderson  <rth@redhat.com>
+
+       * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
+       spurrious comma from test.
+       * configure: Rebuild.
+
+2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR 30457
+       * builtins.c (fold_builtin_next_arg): Add warning about undefined
+       behaviour.
+       
+2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
+
+       * c-tree.h (grokfield): New argument.
+       * c-decl.c (grokfield): Handle new location argument.
+       * c-parser.c (c_parser_struct_declaration): Pass location to
+       grokfield.
+
+2008-08-21  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
+
+2008-08-21  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.c (first_cgraph_function_insertion_hook): New variable.
+       (cgraph_add_function_insertion_hook,
+       cgraph_remove_function_insertion_hook,
+       cgraph_call_function_insertion_hooks): New functions.
+       * cgraph.h (cgraph_add_function_insertion_hook,
+       cgraph_remove_function_insertion_hook,
+       cgraph_call_function_insertion_hooks): Declare.
+       * ipa-reference.c (function_insertion_hook_holder): New variable.
+       (check_operand, look_for_address_of): When checking late, do not care
+       about module bitmaps.
+       (add_new_function): New function.
+       (generate_summary): Register hooks; zero module bitmaps.
+       (propagate): Unregister hooks.
+       * ipa-pure-const.c (function_insertion_hook_holder): New variable.
+       (add_new_function): New function.
+       (generate_summary): Register hook.
+       (propagate): Remove hook.
+
+       * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
+
+       * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
+       * ipa-cp.c (ipcp_update_cloned_node): New function.
+       (build_const_val): Handle functions correctly; bring type logic
+       into sync with tree-inline.c
+       (ipcp_init_stage):  Take care of computing stuff needed by
+       indirect inlining; update clones.
+       (ipcp_generate_summary): Break out of ipcp_driver.
+       (ipcp_driver): Do only execution and transformation.
+       (pass_ipa_cp): Make IPA_PASS.
+       * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
+       offset to address.
+       * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
+       ipcp, some info is already available.
+       * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
+       * tree-inline.c (remap_ssa_name): Unshare expression.
+
+2008-08-21  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
+       a PHI ask VN if it is already available.
+       * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
+       * tree-ssa-sccvn.c (vn_phi_lookup): Export.
+
+2008-08-21  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/36817
+       * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
+       makes sure to produce a result of the correct type.
+
+2008-08-21  Jan Hubicka  <jh@suse.cz>
+       Backport from LTO branch:
+
+       2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
+                   Jan Hubicka  <jh@suse.cz>
+       
+       * ipa-pure-const.c
+       (init_state, finish_state, set_function_state, generate_summary):
+       New functions.
+       (scan_stmt): Renamed from scan_function.  Changed to keep state in
+       local static vars rather than cgraph aux field.
+       (propagate): Renamed from static_execute. Changed to keep state in
+       local static vars rather than cgraph aux field.
+       (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
+       * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
+
+       2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
+
+       * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
+       * ipa-reference.c (init_function_info, generate_summary, 
+       propagate): New functions.
+       (analyze_function):  Call init_function_info.
+       (static_execute): Stripped into generate_summary and propagate.
+       (pass_ipa_reference): Made into ipa_opt_pass.
+
+2008-08-21  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/37181
+       * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
+       folding result.
+       (extract_range_from_unary_expr): Likewise.
+
+2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * diagnostic.c (pedwarn_at): Rename as pedwarn.
+       (pedwarn): Delete.
+       * toplev.h (pedwarn_at): Likewise.
+       * builtins.c: Update all calls to pedwarn.
+       * c-lex.c: Likewise.
+       * toplev.c: Likewise.
+       * c-tree.h: Likewise.
+       * c-decl.c: Likewise.
+       * c-errors.c: Likewise.
+       * c-typeck.c: Likewise.
+       * c-common.c: Likewise.
+       * c-parser.c: Likewise.
+
+2008-08-20  Joseph Myers  <joseph@codesourcery.com>
+
+       PR target/31070
+       * config/sparc/sparc.c (function_arg_slotno): Handle structure
+       with MODE_VECTOR_INT mode.
+
+2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR middle-end/179
+       * tree-ssa.c (warn_uninit): Do not warn for variables that can be
+       initialized outside the current module.
+       (warn_uninitialized_var): Ignore left-hand side when walking the
+       trees. Ignore address expressions. Examine VUSE operands in gimple
+       statements with a variable declaration on the right-hand side.
+
+2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       PR bootstrap/37155
+       * rtlanal.c (subreg_offset_representable_p): Revert last change.
+
+2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR 35701
+       * c-common.c (conversion_warning): Do not warn if applying bit-and
+       operator to unsigned constant that fits in the target type.
+
+2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR c++/35602
+       * c-common.c (conversion_warning): Do not warn for artificial
+       expressions.
+
+2008-08-20  Richard Guenther  <rguenther@suse.de>
+
+       * tree-vrp.c (op_with_constant_singleton_value_range): New function.
+       (extract_range_from_binary_expr): Fall back to constant propagation.
+       (extract_range_from_unary_expr): Likewise.
+
+2008-08-20  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
+       with TREE_THIS_VOLATILE on shared nodes.
+       (fold_stmt_r): Likewise.
+
+2008-08-20  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/37171
+       * c-parser.c (c_parser_attributes): For keywords use canonical
+       spelling for attr_name.
+
+2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * value-prof.c (check_counter): Revert wrong call to error.
+       
+2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * profile.c: Update calls to inform.
+       * value-prof.c: Update calls to inform.
+       
+2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * diagnostic.c (inform): Add an explicit location_t parameter.
+       * toplev.h (inform): Update declaration.
+       * builtins.c: Update all calls to inform.
+       * c-common.c: Likewise.
+       * c-decl.c: Likewise.
+       * c-opts.c: Likewise.
+       * c-pch.c: Likewise.
+       * c-pragma.c: Likewise.
+       * c-typeck.c: Likewise.
+       * coverage.c: Likewise.
+       * opts.c: Likewise.
+       * toplev.c: Likewise.
+       * tree-cfg.c: Likewise.
+       * tree-ssa.c: Likewise.
+
+2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/37169
+       * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
+       V2DI mode, for SSE4.1, use movq instead of vector set if the
+       second element is zero and inter-unit moves are OK.
+
+2008-08-20  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
+       properly handle conversion/copy chains after tuplification.
+
+2008-08-20  Richard Guenther  <rguenther@suse.de>
+
+       * passes.c (init_optimization_passes): Move the second
+       forwprop pass before alias computation.  Remove the second
+       DCE pass.  Remove the first dominator and phi copy/const
+       prop passes.
+
+2008-08-20  Nick Clifton  <nickc@redhat.com>
+
+       * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
+       support of this feature.  Do not assume that a sufficiently new
+       assembler will support the feature regardless of the target type.
+       (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
+       * configure: Regenerate.
+
+2008-08-20  Richard Guenther  <rguenther@suse.de>
+
+       * tree-vrp.c (found_in_subgraph): Remove.
+       (live): New global static.
+       (live_on_edge): New function.
+       (blocks_visited): Remove.
+       (register_edge_assert_for_2): Use live_on_edge.
+       (find_conditional_asserts): Remove code dealing with
+       found_in_subgraph.  Do not walk the CFG.
+       (find_switch_asserts): Likewise.
+       (find_assert_locations_1): Renamed from find_assert_locations.
+       Move finding assert locations for conditional and switch
+       statements first.  Update live bitmap.  Do not walk the CFG.
+       (find_assert_locations): New function.
+       (insert_range_assertions): Remove entry of CFG walk.
+       Adjust call to find_assert_locations.
+       * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
+       that only can appear because of fake exit edges but assert we
+       never try to insert on those.
+       (fini_pre): Do not remove fake exit edges here...
+       (execute_pre): ...but here, before committing edge inserts.
+
+2008-08-19  Richard Guenther  <rguenther@suse.de>
+
+       * passes.c (init_optimization_passes): Exchange store-ccp
+       with a ccp pass.
+
+2008-08-19  Rafael Espindola  <espindola@google.com>
+
+       * varasm.c (weak_decls): Move earlier in the file.
+       (assemble_external): Add weak decls to the weak_decls list.
+       (declare_weak): Don't add decls to the weak_decls list.
+
+2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/37157
+       * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
+       before (sse2_shufpd_<mode>).
+
+2008-08-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/37156
+       * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
+       * tree.c (block_nonartificial_location): Likewise.
+
+2008-08-19  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/35972
+       PR tree-optimization/23094
+       * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
+       parameter.
+       * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
+       handle MISALIGNED_INDIRECT_REF.
+       (get_ref_from_reference_ops): New helper.
+       (vn_reference_lookup_pieces): Walk the use-def chain using the
+       alias-oracle if requested.
+       * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
+       walking the use-def chain.
+       (compute_avail): But not here.
+       (create_component_ref_by_pieces_1): Properly handle
+       MISALIGNED_INDIRECT_REF.
+       (do_regular_insertion): Handle fully redundant
+       expressions after PHI-translation also for SSA_NAME values, not
+       only constants.  Correctly use edoubleprime for that.
+
+2008-08-19  Ira Rosen  <irar@il.ibm.com>
+
+       * tree-vectorizer.c (supportable_widening_operation): Support
+       multi-step conversion, return the number of steps in such conversion
+       and the required intermediate types.
+       (supportable_narrowing_operation): Likewise.
+       * tree-vectorizer.h (vect_pow2): New function.
+       (supportable_widening_operation): Change argument types.
+       (supportable_narrowing_operation): Likewise.
+       (vectorizable_type_promotion): Add an argument.
+       (vectorizable_type_demotion): Likewise.
+       * tree-vect-analyze.c (vect_analyze_operations): Call 
+       vectorizable_type_promotion and vectorizable_type_demotion with
+       additional argument.
+       (vect_get_and_check_slp_defs): Detect patterns.
+       (vect_build_slp_tree): Add an argument, don't fail in case of multiple
+       types. 
+       (vect_analyze_slp_instance): Don't fail in case of multiple types. Call
+       vect_build_slp_tree with correct arguments. Calculate unrolling factor
+       according to the smallest type in the loop.
+       (vect_detect_hybrid_slp_stmts): Include statements from patterns.
+       * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call 
+       supportable_widening_operation with correct arguments. 
+       * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector 
+       operands lists according to the number of vector statements in left
+       or right node, if exists.
+       (vect_gen_widened_results_half): Remove unused argument.
+       (vectorizable_conversion): Call supportable_widening_operation, 
+       supportable_narrowing_operation, and vect_gen_widened_results_half
+       with correct arguments. 
+       (vectorizable_assignment): Change documentation, support multiple
+       types in SLP. 
+       (vectorizable_operation): Likewise.
+       (vect_get_loop_based_defs): New function.
+       (vect_create_vectorized_demotion_stmts): Likewise.
+       (vectorizable_type_demotion): Support loop-aware SLP and general
+       multi-step conversion. Call vect_get_loop_based_defs and
+       vect_create_vectorized_demotion_stmts for transformation.
+       (vect_create_vectorized_promotion_stmts): New function.
+       (vectorizable_type_promotion): Support loop-aware SLP and general
+       multi-step conversion. Call vect_create_vectorized_promotion_stmts
+       for transformation.     
+       (vectorizable_store): Change documentation, support multiple
+       types in SLP. 
+       (vectorizable_load): Likewise.
+       (vect_transform_stmt): Pass SLP_NODE to 
+       vectorizable_type_promotion and vectorizable_type_demotion.
+       (vect_schedule_slp_instance): Move here the calculation of number
+       of vectorized statements for each node from...
+       (vect_schedule_slp): ... here.
+       (vect_transform_loop): Call vect_schedule_slp without the last
+       argument.
+
+2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
+
+       PR bootstrap/37152
+       * tree-vect-transform.c (vect_create_epilog_for_reduction): Change = 
+       to == in assert statement.
+       (vectorizable_reduction): Fix typo.
+
+2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR bootstrap/37153
+       * value-prof.c (check_counter): Dereference pointer to overall
+       count when printing it.
+
+2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * profile.h: Really add it.
+
+2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * mcf.c: Really add it.
+
+2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
+           Vinodha Ramasamy  <vinodha@google.com>
+
+       * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
+       count_scale.
+       * value-prof.c (check_counter): Fix the counter if
+       flag_profile_correction is true.
+       (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
+       tree_mod_subtract_transform):
+       Follow check_counter parameter change.
+       * common.opt (fprofile-correction): New option.
+       * mcf.c: New file.
+       * profile.h: Likewise.
+       * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
+       (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
+       is_inconsistent, set_bb_counts, read_profile_edge_counts): New
+       functions.
+       (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
+       flag_profile_correction is set.
+
+2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
+
+2008-08-18  Tomas Bily  <tbily@suse.cz>
+
+       * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
+       * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
+       CONVERT_EXPR_P.
+       * tree-data-ref.c (split_constant_offset_1): Likewise.
+       * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
+       * tree-sra.c (sra_walk_expr): Likewise.
+       * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
+       * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
+       * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
+       * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
+       Likewise.
+       * gimple.c (gimple_assign_unary_nop_p): Likewise.
+       * tree-vect-transform.c (vectorizable_type_demotion)
+       (vectorizable_type_promotion): Likewise.
+       * tree-inline.c (expand_call_inline): 
+       * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
+       (forward_propagate_addr_expr_1, forward_propagate_comparison)
+       (tree_ssa_forward_propagate_single_use_vars): Likewise.
+       * expr.c (expand_expr_real_1): Likewise.
+       * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
+       (gimple_assign_unary_useless_conversion_p): Likewise.
+       * tree-stdarg.c (execute_optimize_stdarg): Likewise.
+       * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
+       * fold-const.c (fold_unary): Likewise.
+       * tree.h (CONVERT_EXPR_P): Likewise.
+       * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
+       * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
+       * tree-vrp.c: 
+       (register_edge_assert_for_2, extract_range_from_unary_expr)
+       (register_edge_assert_for_1): Likewise.
+       
+2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
+       dconst_third_ptr, dconst_sqrt2_ptr): Declare.
+       (enum real_value_const): Delete.
+       (get_real_const): Delete.
+       * real.c (get_real_const): Delete.
+       (dconst_e_ptr): Define.
+       (dconst_third_ptr): Define.
+       (dconst_sqrt2_ptr): Define.
+       * builtins.c: Update all callers.
+
+2008-08-18  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
+       statement iterator after statement removal.
+
+2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
+
+       * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
+       (detect_processor_freebsd): Likewise.
+       (host_detect_local_cpu): Call newly added functions for FreeBSD.
+
+2008-08-18  Richard Guenther  <rguenther@suse.de>
+
+       * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
+       and loads have the correct types.
+
+2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR cpp/7263
+       * c-opts.c (cpp_opts): Remove static.
+       * c-parser.c (cpp_opts): Declare it extern.
+       (disable_extension_diagnostics): Handle cpp options.
+       (enable_extension_diagnostics): Likewise.
+
+2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * diagnostics.c (permerror_at): Rename as permerror.
+       (permerror): Delete.
+       * toplev.h: Likewise.
+
+2008-08-18  Richard Guenther  <rguenther@suse.de>
+
+       * passes.c (init_optimization_passes): Remove cleanup_cfg1,
+       sdse1 and addressables2 passes.  Replace dce1 with cddce1.
+       Move call_cdce before build_alias.  Move copyrename2,
+       cunrolli and ccp2 beafore build_alias.  Re-add addressable2
+       right after final inlining.
+       * tree-cfg.c (build_gimple_cfg): Do not dump function here.
+       (pass_build_cfg): But instead via TODO_dump_func.
+
+2008-08-18  Richard Guenther  <rguenther@suse.de>
+
+       * tree-sra.c (generate_element_init_1): Deal with NULL constructor
+       element index.
+       (scalarize_init): If we failed to generate some initializers
+       do not generate zeros for not instantiated members.  Instead
+       rely on the copy out.
+       * tree-ssa-operands.c (get_addr_dereference_operands): Warn
+       about missing flow-sensitive alias info only if we have
+       aliases computed.
+
+2008-08-17  Nick Clifton  <nickc@redhat.com>
+
+       * doc/extend.texi (Function Attributes): Fix typo in description
+       if hot function attribute.
+
+2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
+           Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * doc/install.texi (--with-mips-plt): Document.
+       * doc/invoke.texi (-mplt, -mno-plt): Document.
+       * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
+       and handle ${with_mips_plt}.
+       * config/mips/mips.opt (mplt): New option.
+       * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
+       (TARGET_ABICALLS_PIC2): Likewise.
+       (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
+       (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
+       (ASM_SPEC): Use !mabi=* instead of !mabi*.
+       (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
+       to decide whether to output ".option picX" directives.
+       * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
+       Pass -call_nonpic rather than -KPIC for -mplt.
+       (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
+       on the command line.  Also remove it when -mabi=64 is used without
+       -msym32.
+       * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
+       * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
+       TARGET_ABICALLS_PIC0.
+       (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
+       TARGET_ABICALLS.
+       (mips16_build_function_stub): Only output ".option pic" directives
+       and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
+       (mips16_build_call_stub): Fix comment and remove redundant
+       ".set at"/"set .noat" directives.
+       (mips_function_rodata_section): Use the default behaviour for
+       TARGET_ABSOLUTE_ABICALLS.
+       (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
+       (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
+       (mips_restore_gp): Do nothing if the current function doesn't use
+       a global pointer.
+       (mips_expand_prologue): Only save $gp if the current function uses it.
+       Use a normal move for TARGET_ABICALLS_PIC0.
+       (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
+
+2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
+       of function when handling GLOBAL_POINTER_REGNUM.
+
+2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR ada/20548
+       * common.opt (-fstack-check): Do not declare the variable here.
+       (-fstack-check=): New option variant.
+       * doc/invoke.texi (Code Gen Options): Document it.
+       * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
+       (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
+       (STACK_CHECK_STATIC_BUILTIN): New macro.
+       * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
+       * opts.c: Include expr.h.
+       (common_handle_option) <OPT_fold_stack_check_>: New case.
+       <OPT_fstack_check>: Likewise.
+       * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
+       consistently in the test for variable-sized types.  Adjust for
+       new behaviour of flag_stack_check.
+       * explow.c: Include except.h.
+       (allocate_dynamic_stack_space): Do not take into account
+       STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
+       * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
+       for variable-sized parameters.  Treat all parameters whose size is
+       greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
+       stack checking is enabled.
+       * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
+       size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
+       if generic stack checking is enabled.
+       (expand_function_end): Adjust for new behaviour of flag_stack_check.
+       * reload1.c (reload): Likewise.
+       * stmt.c (expand_decl): Assert that all automatic variables have
+       fixed size at this point and remove dead code.
+       * flags.h (stack_check_type): New enumeration type.
+       (flag_stack_check): Declare.
+       * toplev.c (flag_stack_check): New global variable.
+       * Makefile.in (opts.o): Add dependency on EXPR_H.
+       (explow.o): Add dependency on except.h.
+
+2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
+
+       * config/avr/avr.c (avr_override_options): Reduce value of 
+       PARAM_INLINE_CALL_COST.
+
+2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
+       to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
+       lieu of TYPE_MODE (type) throughout.
+
+2008-08-15  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/arm/arm.c (add_minipool_backward_ref): Check for
+       8-byte-aligned entries in second case of forcing insertion after a
+       particular entry.  Change third case to avoid inserting
+       non-8-byte-aligned entries before 8-byte-aligned ones.
+
+2008-08-15  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
+       strip components for unknown size accesses.
+
+2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
+
+       * config/s390/2097.md New file.
+       * config/s390/s390.md ("z10prop" attribute): Define none,
+       z10_super, z10_super_E1, z10_super_A1, z10_super_c,
+       z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
+       z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
+       possible values and apply them to insns as appropriate.
+       ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
+       ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
+       fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
+       fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible
+       values.
+       ("bfp" mode attribute): Removed.  Every occurence replaced
+       with <mode>.
+       * config/s390/s390.c (struct "z10_cost"): Updated entries.
+       * config/s390/2084.md (insn_reservation "x_itof"): Updated
+         type attribute.
+
+2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR c/28152
+       * c-parser.c (c_lex_one_token): Do not store the canonical spelling
+       for keywords.
+       
+2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
+
+       * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
+       additional argument. Support reduction when duplication is needed due
+       to data-types of different sizes in the loop.
+       (get_initial_def_for_induction): Fix printout.
+       (vect_get_vec_def_for_stmt_copy): Support case where the
+       vec_stmt_for_operand is a phi node.
+       (vectorizable_reduction): Support reduction when duplication is needed 
+       due to data-types of different sizes in the loop.
+       (vectorizable_call): Remove restriction to not vectorize in case we 
+       have data-types of different sizes in the loop.
+       (vectorizable_conversion): Likewise.
+       (vectorizable_operation): Likewise.
+       (vectorizable_type_demotion): Likewise.
+       (vectorizable_type_promotion): Likewise.
+       (vectorizable_induction): Add restriction to not vectorize in case 
+       we have data-types of different sizes in the loop.
+
+2008-08-14  Christophe Saout  <christophe@saout.de>
+           Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/37101
+       * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
+       (*vec_concatv2di_rex64_sse4_1): Ditto.
+       (*vec_concatv2di_rex64_sse): Ditto.
+
+2008-08-14  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/37103
+       * fold-const.c (fold_widened_comparison): Do not allow
+       sign changes that change the result even if shorter type
+       is wider than arg1_unw's type.
+
+2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
+
+       * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
+       Skip if the multilib testing specifies -march that does not
+       agree with the one specified in the testcase.
+
+2008-08-13  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
+       zero extend SImode values being converted to TFmode before passing
+       to libcalls.
+
+2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
+       __PPU__ when targeting the Cell/B.E. PPU processor.
+
+2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gimple.h (gimple_call_set_chain): Accept SSA variables.
+       * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
+       Rematerialize the static chain, if any.
+       * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
+       static chain.
+
+2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
+       (new_loc_descr): Likewise.
+       (add_loc_descr): Likewise.
+       (size_of_loc_descr): Likewise.
+       (size_of_locs): Likewise.
+       (output_loc_operands): Likewise.
+       (output_loc_sequence): Likewise.
+       (new_reg_loc_descr): New.
+       (build_cfa_loc): Use it.
+       (build_cfa_aligned_loc): Likewise.
+       (one_reg_loc_descriptor): Likewise.
+       (based_loc_descr): Likewise.
+
+2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR 30551
+       * doc/invoke.texi (Wmain): Update.
+       * c-decl.c (start_decl): warn_main is only 0 or 1.
+       (start_function): Likewise. Fix formatting.
+       (finish_function): Delete redundant warning.
+       * c.opt (Wmain): Add Var(warn_main) and Init(-1).
+       * c-opts (c_common_handle_option): -Wall only has effect if
+       warn_main is uninitialized. OPT_Wmain is automatically
+       handled. -pedantic also enables Wmain.
+       (c_common_post_options): Handle all logic for Wmain here.
+       * c-common.c (warn_main): Delete.
+       (check_main_parameter_types): Make pedwarns conditional on
+       OPT_Wmain.
+       * c-common.h (warn_main): Delete.
+
+2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR middle-end/36701
+       * expr.c (emit_group_store): Allocate stack temp with the
+       largest alignment when copying from register to stack.
+
+2008-08-13  Richard Guenther  <rguenther@suse.de>
+
+       * tree.h (maybe_fold_offset_to_address): Declare.
+       * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
+       (ccp_fold): Handle pointer conversions the same as fold_stmt.
+       Likewise for POINTER_PLUS_EXPR.
+       (maybe_fold_offset_to_reference): Enable disabled code.
+       (maybe_fold_offset_to_address): New function.
+       (fold_stmt_r): Use it.
+       (fold_gimple_assign): Likewise.
+       * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
+       (gimplify_expr): Likewise.
+
+2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * toplev.h (pedwarn_at): Fix declaration.
+       
+2008-08-13  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
+       LINK_SPEC): Use %R in -Y P argument.
+
+2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR c/15236
+       * diagnostic.c (pedwarn_at): New.
+       * toplev.h (pedwarn_at): Declare.
+       * c-tree.h (build_enumerator): Update declaration.
+       * c-decl.c (finish_enum): Update comment.
+       (build_enumerator): Take a location parameter. Give a pedwarn but do
+       not perform any conversion.
+       * c-parser.c (c_parser_enum_specifier): Set correct location for
+       enumerator.
+
+2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR 35635
+       * c-common.c (conversion_warning): Use a switch. Ignore boolean
+       expressions except for conversions to signed:1 bitfields. Handle
+       COND_EXPR with constant operands.
+       
+2008-08-13  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/15255
+       * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
+       (struct oecount_s): New struct and VEC types.
+       (cvec): New global.
+       (oecount_hash): New function.
+       (oecount_eq): Likewise.
+       (oecount_cmp): Likewise.
+       (zero_one_operation): New function.
+       (build_and_add_sum): Likewise.
+       (undistribute_ops_list): Perform un-distribution of multiplication
+       and division on the chain of summands.
+       (should_break_up_subtract): Also break up subtracts for factors.
+       (reassociate_bb): Delete dead visited statements.
+       Call undistribute_ops_list.  Re-sort and optimize if it did something.
+       * passes.c (init_optimization_passes): Move DSE before
+       reassociation.
+       * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
+       PHI nodes.
+
+2008-08-12  Janis Johnson  <janis187@us.ibm.com>
+
+       * doc/invoke.texi (-fipa-pta): Say the option is experimental.
+
+       * doc/invoke.texi: Revert unintended checkin.
+
+2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
+
+       PR libgomp/26165
+       * gcc.c (include_spec_function): Tweak call to find_a_file.
+
+2008-08-12  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/37014
+       * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
+       and TRUTH_ORIF_EXPR.
+       * dojump.c (do_jump): Likewise.
+
+       PR tree-optimization/37084
+       * tree-inline.c (copy_bb): Call gimple_regimplify_operands
+       if id->regimplify, don't assume stmt is a cast assignment.
+
+2008-08-12  Anatoly Sokolov  <aesok@post.ru>
+
+       * final.c (final_scan_insn): Use app_enable/app_disable functions.
+
+2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       PR bootstrap/37097
+       * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
+       by last change.
+
+2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       * defaults.h (TARGET_FLOAT_FORMAT): Remove.
+       (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
+
+       * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
+       * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
+       * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
+       * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
+       * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
+
+       * doc/tm.texi (Storage Layout): Remove documentation for
+       TARGET_FLOAT_FORMAT.
+
+       * simplify-rtx.c (simplify_binary_operation_1): Replace
+       TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
+
+2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       * real.h (struct real_format): New member has_sign_dependent_rounding.
+       * real.c (ieee_single_format, mips_single_format, motorola_single_format,
+       spu_single_format, ieee_double_format, mips_double_format,
+       motorola_double_format, ieee_extended_motorola_format,
+       ieee_extended_intel_96_format, ieee_extended_intel_128_format,
+       ieee_extended_intel_96_round_53_format, ibm_extended_format,
+       mips_extended_format, ieee_quad_format, mips_quad_format,
+       vax_f_format, vax_d_format, vax_g_format): Initialize it.
+       * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
+
+       * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
+       MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
+       * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
+       MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
+       (ROUND_TOWARDS_ZERO): Likewise.
+
+       * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
+       (FLOAT_MODE_FORMAT): New macro.
+       (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
+       (MODE_COMPOSITE_P): ... this new macro.
+       (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
+       MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
+       * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
+
+       * flags.h: Include "real.h".
+
+       * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
+       REAL_MODE_FORMAT_COMPOSITE_P.
+       * simplify-rtx.c (simplify_const_binary_operation): Likewise.
+
+       * doc/tm.texi (Storage Layout): Remove documentation of
+       MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
+       MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
+       ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
+       they only apply to libgcc2.a.
+
+2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       * config/spu/float_disf.c: New file.
+       * config/spu/float_unsdisf.c: New file.
+       * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
+       (LIB2FUNCS_EXCLUDE): Define.
+
+2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+           Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
+
+       * real.h (struct real_format): New member round_towards_zero.
+       * real.c (round_for_format): Respect fmt->round_towards_zero.
+       (ieee_single_format, mips_single_format, motorola_single_format,
+       spu_single_format, ieee_double_format, mips_double_format,
+       motorola_double_format, ieee_extended_motorola_format,
+       ieee_extended_intel_96_format, ieee_extended_intel_128_format,
+       ieee_extended_intel_96_round_53_format, ibm_extended_format,
+       mips_extended_format, ieee_quad_format, mips_quad_format,
+       vax_f_format, vax_d_format, vax_g_format): Initialize it.
+       * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
+
+       * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
+       real_format to choose rounding mode when calling MPFR functions.
+       (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
+       (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
+
+       * real.h (real_to_decimal_for_mode): Add prototype.
+       * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
+       Respect target rounding mode when generating decimal representation.
+       (real_to_decimal): New stub for backwards compatibility.
+       * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
+       real_to_decimal_for_mode instead of real_to_decimal.
+
+       * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
+
+2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+           Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
+
+       * real.c (spu_single_format): New variable.
+       * real.h (spu_single_format): Declare.
+
+       * config/spu/spu.c (spu_override_options): Install SFmode format.
+       (spu_split_immediate): Use integer mode to operate on pieces of
+       floating-point values in all cases.
+
+       * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
+       ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
+       ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
+
+2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
+
+2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
+
 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/36688
 
 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
        
-       * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming value
-       in a6 after the set_frame_ptr insn.
+       * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
+       value in a6 after the set_frame_ptr insn.
        
 2008-08-07  Richard Henderson  <rth@redhat.com>
 
        * matrix-reorg.c (compute_offset): Avoid C++ keywords.
 
 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
-       
+
        PR 26785
        * diagnostic.c (permerror_at): New.
        * toplev.h (permerror_at): Declare.