OSDN Git Service

PR tree-optimization/43884
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index e2bda22..92f6d04 100644 (file)
@@ -1,5 +1,419 @@
+2011-01-22  Jan Hubicka  <jh@suse.cz>
+
+       PR tree-optimization/43884
+       PR lto/44334
+       * predict.c (maybe_hot_frequency_p): Use entry block frequency as an base.
+       * doc/invoke.texi (hot-bb-frequency-fraction): Update docs.
+
+2011-01-22  Anatoly Sokolov  <aesok@post.ru>
+
+       * config/s390/s390.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
+       * config/s390/s390.c (s390_register_move_cost,
+       s390_memory_move_cost): New.
+       (TARGET_REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Define.
+
+2011-01-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       PR middle-end/47401
+       * except.c (sjlj_assign_call_site_values): Move setting the
+       crtl->uses_eh_lsda flag to ...
+       (sjlj_mark_call_sites): ... here.
+       (sjlj_emit_function_enter): Support NULL dispatch label.
+       (sjlj_build_landing_pads): In a function with no landing pads
+       that still has must-not-throw regions, generate code to register
+       a personality function with empty LSDA.
+
+2011-01-21  Richard Henderson  <rth@redhat.com>
+
+       * config/rx/rx.c (TARGET_FLAGS_REGNUM): New.
+
+       * config/mn10300/mn10300.c (TARGET_FLAGS_REGNUM): New.
+
+       * compare-elim.c: New file.
+       * Makefile.in (OBJS-common): Add it.
+       (compare-elim.o): New.
+       * common.opt (fcompare-elim): New.
+       * opts.c (default_options_table): Add OPT_fcompare_elim.
+       * tree-pass.h (pass_compare_elim_after_reload): New.
+       * passes.c (init_optimization_passes): Add it.
+       * recog.h: Protect against re-inclusion.
+       * target.def (TARGET_FLAGS_REGNUM): New POD hook.
+       * doc/invoke.texi (-fcompare-elim): Document it.
+       * doc/tm.texi.in (TARGET_FLAGS_REGNUM): Document it.
+       * doc/tm.texi: Rebuild.
+
+2011-01-22  Nick Clifton  <nickc@redhat.com>
+
+       * config/rx/rx.md (cstoresf4): Pass comparison operator to
+       rx_split_fp_compare.
+
+2011-01-22  Nick Clifton  <nickc@redhat.com>
+
+       * config/rx/rx.md (UNSPEC_CONST): New.
+       (deallocate_and_return): Wrap the amount popped off the stack in
+       an UNSPEC_CONST in order to stop it being rejected by
+       -mmax-constant-size.
+       (pop_and_return): Add a "(return)" rtx.
+       (call): Drop the immediate operand.
+       (call_internal): Likewise.
+       (call_value): Likewise.
+       (call_value_internal): Likewise.
+       (sibcall_internal): Likewise.
+       (sibcall_value_internal): Likewise.
+       (sibcall): Likewise.  Generate an explicit call using
+       sibcall_internal.
+       (sibcall_value): Likewise.
+       (mov<>): FAIL if a constant operand is not legitimate.
+       (addsi3_unpsec): New pattern.
+
+       * config/rx/rx.c (rx_print_operand_address): Handle UNPSEC
+       CONSTs.
+       (ok_for_max_constant): New function.
+       (gen_safe_add): New function.
+       (rx_expand_prologue): Use gen_safe_add.
+       (rx_expand_epilogue): Likewise.
+       (rx_is_legitimate_constant): Use ok_for_max_constant.  Handle
+       UNSPEC CONSTs.
+
+2011-01-21  Jeff Law  <law@redhat.com>
+
+       PR tree-optimization/47053
+       * tree-ssa-dse.c (need_eh_cleanup): New bitmap.
+       (dse_optimize_stmt): Set the appropriate bit in NEED_EH_CLEANUP when
+       statements are deleted.
+       (tree_ssa_dse): Allocate & free NEED_EH_CLEANUP.  If NEED_EH_CLEANUP
+       is nonempty, then purge dead edges and cleanup the CFG.
+
+2011-01-21  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/47402
+       Temporarily revert:
+       2011-01-21  Alexandre Oliva  <aoliva@redhat.com>
+       PR debug/47106
+       * tree-dfa.c (create_var_ann): Mark variable as used.
+
+2011-01-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/45566
+       * except.c (convert_to_eh_region_ranges): Emit queued no-region
+       notes from other section in hot/cold partitioning even if
+       last_action is -3.  Increment call_site_base.
+
+       PR rtl-optimization/47366
+       * fwprop.c (forward_propagate_into): Return bool.  If
+       any changes are made, -fnon-call-exceptions is used and
+       REG_EH_REGION note is present, call purge_dead_edges
+       and return true if it purged anything.
+       (fwprop_addr): Adjust callers, call cleanup_cfg (0) if
+       any EH edges were purged.
+
+2011-01-21  Jeff Law  <law@redhat.com>
+
+       PR rtl-optimization/41619
+       * caller-save.c (setup_save_areas): Break out code to determine
+       which hard regs are live across calls by examining the reload chains
+       so that it is always used.
+       Eliminate code which checked REG_N_CALLS_CROSSED.
+
+2011-01-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/47355
+       * tree-eh.c (cleanup_empty_eh_merge_phis): Give up if
+       NOP has non-debug uses beyond PHIs in new_bb.
+
+2011-01-21  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/47106
+       * cfgexpand.c (account_used_vars_for_block): Only account vars
+       that are annotated as used.
+       (estimated_stack_frame_size): Don't set TREE_USED.
+       * tree-dfa.c (create_var_ann): Mark variable as used.
+
+2011-01-21  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/47395
+       * tree.def (WIDEN_MULT_MINUS_EXPR): Fix printed name.
+
+2011-01-21  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/47365
+       * tree-ssa-sccvn.h (vn_lookup_kind): Declare.
+       (vn_reference_lookup_pieces): Adjust.
+       (vn_reference_lookup): Likewise.
+       * tree-ssa-sccvn.c (vn_walk_kind): New static global.
+       (vn_reference_lookup_3): Only look through kills if in
+       VN_WALKREWRITE mode.
+       (vn_reference_lookup_pieces): Adjust.
+       (vn_reference_lookup): Likewise.
+       (visit_reference_op_load): Likewise.
+       (visit_reference_op_store): Likewise.
+       * tree-ssa-pre.c (phi_translate_1): Use VN_WALK mode.
+       (compute_avail): Likewise.
+       (eliminate): Likewise.
+
+2011-01-21  Jakub Jelinek  <jakub@redhat.com>
+
+       * tree-ssa-live.c (remove_unused_scope_block_p): Don't remove
+       DECL_IGNORED_P non-reg vars if they are used.
+
+       PR tree-optimization/47391
+       * varpool.c (const_value_known_p): Return false if
+       decl is volatile.
+
+2011-01-21  Kai Tietz  <kai.tietz@onevision.com>
+
+       PR bootstrap/47215
+       * config/i386/i386.c (ix86_local_alignment): Handle
+       case for va_list_type_node is nil.
+       (ix86_canonical_va_list_type): Likewise.
+
+2011-01-21  Alan Modra  <amodra@gmail.com>
+
+       * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Add
+       builtin_define __CMODEL_MEDIUM__ and __CMODEL_LARGE__.
+
+2011-01-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+
+       * config/arm/arm.md (define_attr type): Rename f_load
+       and f_store to f_fpa_load and f_fpa_store. Update.
+       (write_conflict): Deal with rename fallout.
+       (*push_fp_multi): Likewise.
+       * config/arm/fpa.md (f_load): Use f_fpa_load.
+       (f_store): Use f_fpa_store.
+       (*movsf_fpa): Likewise.
+       (*movdf_fpa): Likewise.
+       (*movxf_fpa): Likewise.
+       (*thumb2_movsf_fpa): Likewise.
+       (*thumb2_movdf_fpa): Likewise.
+       (*thumb2_movxf_fpa): Likewise.
+       * config/arm/vfp.md (*thumb2_movdf_vfp): Fix attribute to
+       f_loadd and f_stored.
+       (*thumb2_movdi_vfp): Likewise.
+       (*thumb2_movsf_vfp): Fix attribute to f_loads.
+       (*thumb2_movsi_vfp): Likewise.
+       * config/arm/cortex-m4-fpu.md (cortex_m4_f_load):
+       Use f_loads instead of f_load.
+       * config/arm/cortex-a5.md (cortex_a5_f_loads): Remove f_load.
+
+2011-01-20  Anatoly Sokolov  <aesok@post.ru>
+
+       * config/xtensa/xtensa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Remove.
+       * config/xtensa/xtensa-protos.h (constantpool_address_p): Remove.
+       * config/xtensa/xtensa.c (TARGET_MODE_DEPENDENT_ADDRESS_P): Define.
+       (xtensa_mode_dependent_address_p): New function.
+       (constantpool_address_p): Make static. Change return type to bool.
+       Change argument type to const_rtx. Use CONST_INT_P predicate.
+
+2011-01-20  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/46583
+       * tree-ssa-live.c (remove_unused_scope_block_p): Keep type decls.
+
+2011-01-20  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/47283
+       * cfgexpand.c (expand_debug_expr): Instead of generating
+       (mem (debug_implicit_ptr)) for MEM_REFs use COMPONENT_REF
+       etc. handling.
+
+2011-01-20  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/47370
+       * tree-inline.c (remap_gimple_op_r): Recurse manually for
+       the pointer operand of MEM_REFs.
+
+2011-01-20  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/46130
+       * ipa-split.c (consider_split): If return_bb contains non-virtual
+       PHIs other than for retval or if split_function would not adjust it,
+       refuse to split.
+
+2011-01-20  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/47167
+       * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
+       Revert previous change, only avoid enumeral type changes.
+
+2011-01-19  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/47291
+       * dwarf2out.c (generic_type_p, schedule_generic_params_dies_gen)
+       (gen_scheduled_generic_parms_dies): New functions.
+       (gen_struct_or_union_type_die): Schedule template parameters DIEs
+       generation for the end of CU compilation.
+       (dwarf2out_finish): Generate template parameters DIEs here.
+
+2011-01-19  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/46240
+       * tree-into-ssa.c (maybe_register_def): Do not attempt to add
+       debug bind stmt on merge edges.
+
+2011-01-19  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/47079
+       PR debug/46724
+       * function.c (instantiate_expr): Instantiate incoming rtl of
+       implicit arguments, and recurse on VALUE_EXPRs.
+       (instantiate_decls): Instantiate rtl and VALUE_EXPR of result.
+       * var-tracking.c (adjust_mems): Reject virtual_incoming_args_rtx.
+
+2011-01-19  Alexandre Oliva  <aoliva@redhat.com>
+
+       * c-parser.c (c_parser_for_statement): Initialize
+       collection_expression.
+
+2011-01-19  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/spu/spu-elf.h (ASM_SPEC): Remove %{w:-W}.
+
+2011-01-19  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/rs6000/sysv4.h (LINK_PATH_SPEC): Remove.
+       (LINK_SHLIB_SPEC): Don't use %(link_path).
+       (SUBTARGET_EXTRA_SPECS): Remove link_path.
+
+2011-01-19  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/rs6000/sysv4.h (SHARED_LIB_SUPPORT): Remove conditional.
+       (NO_SHARED_LIB_SUPPORT): Remove.
+       (LINK_SHLIB_SPEC): Remove one conditional definition.
+
+2011-01-19  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/mips/linux64.h (LINK_SPEC): Remove %{non_shared}
+       %{call_shared}.
+       * config/mips/mips.h (LINK_SPEC): Remove %{non_shared}.
+       * config/mips/netbsd.h (LINK_SPEC): Remove %{call_shared}.
+       * config/mips/openbsd.h (LINK_SPEC): Remove %{non_shared}
+       %{call_shared} and conditionals on these options not being passed.
+       * config/mips/sde.h (LINK_SPEC): Remove %{non_shared}
+       %{call_shared}.
+
+2011-01-19  Jakub Jelinek  <jakub@redhat.com>
+
+       * ipa-split.c (find_return_bb): Use single_pred_p/single_pred_edge,
+       simplify.
+
+       * ipa-split.c: Spelling fixes.
+
 2011-01-19  Richard Henderson  <rth@redhat.com>
 
+       * config/mn10300/mn10300.md (mulsi3): Use reg_or_am33_const_operand.
+       (*mulsi3): Likewise.
+
+       * longlong.h [__mn10300__] (count_leading_zeros): New.
+       [__mn10300__] (umul_ppmm, smul_ppmm): New.
+       [__mn10300__] (add_ssaaaa, subddmmss): New.
+       [__mn10300__] (udiv_qrnnd, sdiv_qrnnd): New.
+       [__mn10300__] (UMUL_TIME, UDIV_TIME): New.
+
+2011-01-19  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       * config/spu/spu.h (MOVE_RATIO): Return 4 in the !speed case.
+
+2011-01-19  Richard Henderson  <rth@redhat.com>
+
+       * config/mn10300/mn10300.md (addsi3_flags): New.
+       (addc_internal, adddi3, adddi3_internal, *adddi3_degenerate): New.
+       (subsi3_flags, subc_internal, subdi3): New.
+       (subdi3_internal, *subdi3_degenerate): New.
+       * config/mn10300/predicates.md (reg_or_am33_const_operand): New.
+
+       * config/mn10300/mn10300.c (mn10300_can_use_retf_insn): New.
+       (mn10300_can_use_rets_insn): Rename from mn10300_can_use_return_insn.
+       (mn10300_expand_epilogue): Use it.  Compute REG_SAVE_BYTES once.
+       * config/mn10300/mn10300-protos.h: Update.
+       * config/mn10300/mn10300.md (return): Use mn10300_can_use_retf_insn.
+       (return_ret): Likewise.  Rename from return_internal_regs.
+       (return_internal): Remove.
+
+       * config/mn10300/mn10300.c (mn10300_unspec_int_label_counter): Remove.
+       (mn10300_asm_output_addr_const_extra): Don't handle UNSPEC_INT_LABEL.
+       (mn10300_legitimate_constant_p): Likewise.
+       (mn10300_can_use_return_insn): Use mn10300_initial_offset.
+       (mn10300_frame_size): New.
+       (mn10300_expand_prologue): Use it.
+       (mn10300_expand_epilogue): Likewise.
+       (mn10300_initial_offset): Likewise.
+       * config/mn10300/mn10300-protos.h: Update.
+       * config/mn10300/mn10300.h (mn10300_unspec_int_label_counter): Remove.
+       * config/mn10300/mn10300.md (UNSPEC_INT_LABEL): Remove.
+       (prologue, epilogue, return_internal): Tidy output code.
+       (mn10300_store_multiple_operation, return): Likewise.
+       (int_label, pop_pic_reg, GOTaddr2picreg): Remove.
+       (am33_loadPC, mn10300_loadPC, call_next_insn): Remove.
+       (add_GOT_to_pic_reg, add_GOT_to_any_reg): Remove.
+       (load_pic, am33_load_pic): New.
+       (mn10300_load_pic0, mn10300_load_pic1): New.
+
+       * config/mn10300/mn10300-modes.def (CCZN, CCZNC): New modes.
+       * config/mn10300/mn10300.c (CC_FLAG_Z): New.
+       (CC_FLAG_N, CC_FLAG_C, CC_FLAG_V): New.
+       (cc_flags_for_mode, cc_flags_for_code): New.
+       (mn10300_print_operand) ['B']: Use nc/ns for GE/LT when the
+       overflow flag is not valid.  Validate that the flags we need
+       for the comparison are valid.
+       (mn10300_output_cmp): Remove.
+       (mn10300_output_add): New.
+       (mn10300_select_cc_mode): Use cc_flags_for_code.
+       (mn10300_split_cbranch): New.
+       (mn10300_match_ccmode): New.
+       (mn10300_split_and_operand_count): New.
+       * config/mn10300/mn10300.h (SELECT_CC_MODE): Pass all of the arguments
+       to the function.
+       * config/mn10300/mn10300.md (*am33_addsi3, *mn10300_addsi3): Merge...
+       (addsi3): ... here.  Use mn10300_output_add.
+       (*addsi3_flags): New.
+       (*am33_subsi3, *mn10300_subsi3): Merge...
+       (subsi3): ... here.  Use attribute isa.
+       (*subsi3_flags): New.
+       (negsi2): Rewrite from expander to insn_and_split.  Use NOT+INC
+       when possible.
+       (*am33_andsi3, *mn10300_andsi3): Merge...
+       (andsi3): ... here.
+       (*andsi3_flags): New.
+       (andsi3 splitters): New.
+       (*am33_iorsi3, *mn10300_iorsi3): Merge...
+       (iorsi3): ... here.
+       (*iorsi3_flags): New.
+       (*am33_xorsi3, *mn10300_xorsi3): Merge...
+       (xorsi3): ... here.
+       (*xorsi3_flags): New.
+       (*am33_cmpsi2, *mn10300_cmplsi2): Merge...
+       (one_cmplsi2): ... here.
+       (*one_cmplsi2_flags): New.
+       (*cbranchsi4_cmp): Rename from cbranchsi4_post_reload.  Use "r"
+       instead of "dax" in constraints.  Use mn10300_split_cbranch.
+       (*cmpsi): Rename from cmpsi.  Do not use mn10300_output_cmp.  Do not
+       use matching constraints to eliminate a self-comparison.
+       (*integer_conditional_branch): Rename from integer_conditional_branch.
+       Use int_mode_flags to match CC_REG.
+       (*cbranchsi4_btst, *btstsi): New.
+       (*cbranchsf4_cmp): Rename from *cbranchsf4_post_reload.  Use
+       mn10300_split_cbranch.
+       (*am33_cmpsf): Rename from am33_cmpsf.
+       (*float_conditional_branch): Rename from float_conditional_branch.
+       (*zero_extendqisi2_am33, *zero_extendqisi2_mn10300): Merge...
+       (zero_extendqisi2): ... here.
+       (*zero_extendhisi2_am33, *zero_extendhisi2_mn10300): Merge...
+       (zero_extendhisi2): ... here.
+       (*extendqisi2_am33, *extendqisi2_mn10300): Merge...
+       (extendqisi2): ... here.
+       (*extendhisi2_am33, *extendhisi2_mn10300): Merge...
+       (extendhisi2): ... here.
+       (*am33_ashlsi3, *mn10300_ashlsi3): Merge...
+       (ashlsi3): ... here.
+       (*am33_lshrsi3, *mn10300_lshrsi3): Merge...
+       (lshrsi3): ... here.
+       (*am33_ashrisi3, *mn10300_ashrsi3): Merge...
+       (ashrsi3): ... here.
+       (consecutive add peephole): Remove.
+       * config/mn10300/predicates.md (label_ref_operand): New.
+       (int_mode_flags): New.
+       (CCZN_comparison_operator): New.
+
        * config/mn10300/mn10300.md (UNSPEC_EXT): New.
        (throughput_42_latency_43): New reservation.
        (mulsidi3, umulsidi3): New expanders.