OSDN Git Service

* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Add
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 8b269ef..de7d1b0 100644 (file)
@@ -1,3 +1,549 @@
+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.
+       (mulsidi3_internal): Rewrite from old mulsidi3 pattern.  Expose
+       the MDR register to allocation; separately allocate the low and
+       high parts of the DImode result.
+       (umulsidi3_internal): Similarly.
+       (*am33_mulsi3, *mn10300_mulsi3): Merge into ...
+       (*mulsi3): ... here.  Clobber MDR as a scratch as necessary.
+       (udivsi3, umodsi3): Remove.
+       (udivmodsi4, divmodsi4): New expanders.
+       (*udivmodsi4): Rename from udivmodsi4.  Expose MDR properly.
+       (*divmodsi4): Simiarly.
+       (ext_internal): New.
+
+       * config/mn10300/constraints.md ("z"): New constraint.
+       * config/mn10300/mn10300.h (MDR_REGNUM): Remove.
+       (FIXED_REGISTERS): Don't fix MDR.
+       (CALL_USED_REGSITERS): Reformat nicely.
+       (REG_ALLOC_ORDER): Add MDR.
+       (enum regclass): Add MDR_REGS.
+       (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update to match.
+       (IRA_COVER_CLASSES): Add MDR_REGS.
+       (REGNO_REG_CLASS): Handle MDR_REG.
+       * config/mn10300/mn10300.c (mn10300_secondary_reload): Handle MDR_REGS.
+       (mn10300_register_move_cost): Likewise.
+       * config/mn10300/mn10300.md (MDR_REG): New.
+       (*movsi_internal): Handle moves to/from MDR_REGS.
+
+       * config/mn10300/mn10300.c (mn10300_print_operand_address): Handle
+       POST_MODIFY.
+       (mn10300_secondary_reload): Tidy combination reload classes.
+       (mn10300_legitimate_address_p): Allow post-modify and reg+reg
+       addresses for AM33.  Allow symbolic offsets for reg+imm.
+       (mn10300_regno_in_class_p): New.
+       (mn10300_legitimize_reload_address): New.
+       * config/mn10300/mn10300.h (enum reg_class): Remove
+       DATA_OR_ADDRESS_REGS, DATA_OR_EXTENDED_REGS, ADDRESS_OR_EXTENDED_REGS,
+       SP_OR_EXTENDED_REGS, SP_OR_ADDRESS_OR_EXTENDED_REGS.  Add
+       SP_OR_GENERAL_REGS.
+       (REG_CLASS_NAMES): Update to match.
+       (REG_CLASS_CONTENTS): Likewise.
+       (INDEX_REG_CLASS): Use GENERAL_REGS for AM33.
+       (BASE_REG_CLASS): Use SP_OR_GENERAL_REGS for AM33.
+       (REGNO_IN_RANGE_P): Remove.
+       (REGNO_DATA_P): Use mn10300_regno_in_class_p.
+       (REGNO_ADDRESS_P, REGNO_EXTENDED_P): Likewise.
+       (REGNO_STRICT_OK_FOR_BASE_P): Likewise.
+       (REGNO_STRICT_OK_FOR_BIT_BASE_P): Likewise.
+       (REGNO_STRICT_OK_FOR_INDEX_P): Likewise.
+       (REGNO_SP_P, REGNO_AM33_P, REGNO_FP_P): Remove.
+       (REGNO_GENERAL_P): New.
+       (HAVE_POST_MODIFY_DISP): New.
+       (USE_LOAD_POST_INCREMENT, USE_STORE_POST_INCREMENT): New.
+       (LEGITIMIZE_RELOAD_ADDRESS): New.
+       * config/mn10300/mn10300-protos.h: Update.
+
+       * config/mn10300/mn10300.c (mn10300_preferred_reload_class): Allow
+       DATA_REGS for AM33 stack-pointer destination.
+       (mn10300_preferred_output_reload_class): Likewise.
+       (mn10300_secondary_reload): Rearrange mn10300_secondary_reload_class
+       into a form appropriate for ...
+       (TARGET_SECONDARY_RELOAD): New.
+       * config/mn10300/mn10300.h (SECONDARY_RELOAD_CLASS): Remove.
+       * config/mn10300/mn10300-protos.h: Update.
+       * config/mn10300/mn10300.md (reload_plus_sp_const): Rename from
+       reload_insi; use the "A" constraint for the scratch; handle AM33
+       moves of sp to non-address registers.
+
+       * config/mn10300/mn10300.md (*am33_movqi, *mn10300_movqi): Merge into
+       (*movqi_internal): ... here.
+       (*am33_movhi, *mn10300_movhi): Merge into...
+       (*movhi_internal): ... here.
+       (*movsi_internal): Use "r" instead of "dax" in constraints.  Use "A"
+       as the source/destination of moves from/to SP.
+       (movsf): Only allow for AM33-2.
+       (*movsf_internal): Use "r" instead of "dax"; use "F" instead of 
+       any integer constant constraint.  Only allow for AM33-2.  Tidy
+       all of the alternative outputs.
+       (movdi, movdf, *am33_2_movdf, *mn10300_movdf): Remove.
+       (udivmodsi4): Delete expander and promote *udivmodsi4.  Disallow
+       for MN103.
+       (udivsi3, umodsi3): New patterns for MN103 only.
+
+2011-01-19  Joern Rennecke  <amylaar@spamcop.net>
+
+       * doc/tm.texi.in: Spell out that a lack of register class unions
+       can lead to ICEs.
+       * doc/tm.texi: Regenerate.
+
+2011-01-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/47337
+       * dce.c (check_argument_store): New function.
+       (find_call_stack_args): Ignore debug insns.  Use check_argument_store.
+
+       PR tree-optimization/47290
+       * tree-eh.c (infinite_empty_loop_p): New function.
+       (cleanup_empty_eh): Use it.
+
+2011-01-18  Steve Ellcey  <sje@cup.hp.com>
+
+       PR target/46997
+       * ia64.c (ia64_expand_unpack): Fix code for TARGET_BIG_ENDIAN.
+       (a64_expand_widen_sum): Ditto.
+       * vect.md (mulv2si3): Disable for TARGET_BIG_ENDIAN.
+       (vec_extract_evenodd_help): Ditto.
+       (vec_extract_evenv4hi): Ditto.
+       (vec_extract_oddv4hi): Ditto.
+       (vec_extract_evenv2si): Ditto.
+       (vec_extract_oddv2si): Ditto.
+       (vec_extract_evenv2sf): Ditto.
+       (vec_extract_oddv2sf): Ditto.
+       (vec_pack_trunc_v4hi: Ditto.
+       (vec_pack_trunc_v2si): Ditto.
+       (vec_interleave_lowv8qi): Fix for TARGET_BIG_ENDIAN.
+       (vec_interleave_highv8qi): Ditto.
+       (mix1_r): Ditto.
+       (vec_extract_oddv8qi): Ditto.
+       (vec_interleave_lowv4hi): Ditto.
+       (vec_interleave_highv4hi): Ditto.
+       (vec_interleave_lowv2si): Ditto.
+       (vec_interleave_highv2si): Ditto.
+
+2011-01-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * doc/extend.texi: Mention __float128 support on hppa HP-UX.
+       * config/pa/pa-hpux.h (HPUX_LONG_DOUBLE_LIBRARY): Define to 1.
+       * config/pa/pa.c (pa_expand_builtin): New.  Include "langhooks.h".
+       (pa_c_mode_for_suffix): New.
+       (TARGET_EXPAND_BUILTIN): Define.
+       (TARGET_C_MODE_FOR_SUFFIX): Define.
+       (pa_builtins): Define.
+       (pa_init_builtins): Register __float128 type and init new support
+       builtins.
+       * config/pa/pa.h (HPUX_LONG_DOUBLE_LIBRARY): Define if not defined.
+       * config/pa/quadlib.c (_U_Qfcopysign): New.
+
+2011-01-18  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR middle-end/46894
+       * explow.c (allocate_dynamic_stack_space): Do not assume more than
+       BITS_PER_UNIT alignment if STACK_DYNAMIC_OFFSET or STACK_POINTER_OFFSET
+       are defined.
+
+2011-01-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       PR tree-optimization/47179
+       * config/spu/spu.c (spu_ref_may_alias_errno): New function.
+       (TARGET_REF_MAY_ALIAS_ERRNO): Define.
+
+2011-01-18  Richard Guenther  <rguenther@suse.de>
+
+       PR rtl-optimization/47216
+       * emit-rtl.c: Include tree-flow.h.
+       (set_mem_attributes_minus_bitpos): Use tree_could_trap_p instead
+       of replicating it with different semantics.
+       * Makefile.in (emit-rtl.o): Adjust.
+
+2011-01-18  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+
+        * config/arm/cortex-a9.md (cortex-a9-neon.md): Actually
+        include.
+        (cortex_a9_dp): Handle neon types correctly.
+
+2011-01-18  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/47299
+       * expr.c (expand_expr_real_2) <case WIDEN_MULT_EXPR>: Don't use
+       subtarget.  Use normal multiplication if both operands are
+       constants.
+       * expmed.c (expand_widening_mult): Don't try to optimize constant
+       multiplication if op0 has VOIDmode.  Convert op1 constant to mode
+       before using it.
+
+2011-01-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/lto.texi (LTO): Ensure two spaces after period.  Fix
+       spacing after 'e.g.', typos, comma, hyphenation.
+
+2011-01-17  Richard Henderson  <rth@redhat.com>
+
+       * config/rx/predicates.md (rx_constshift_operand): Use match_test.
+       (rx_restricted_mem_operand): New.
+       (rx_shift_operand): Use register_operand.
+       (rx_source_operand, rx_compare_operand): Likewise.
+       * config/rx/rx.md (addsi3_flags): New expander.
+       (adddi3): Rewrite as expander.
+       (adc_internal, *adc_flags, adddi3_internal): New patterns.
+       (subsi3_flags): New expander.
+       (subdi3): Rewrite as expander.
+       (sbb_internal, *sbb_flags, subdi3_internal): New patterns.
+
+       * config/rx/rx.c (RX_BUILTIN_SAT): Remove.
+       (rx_init_builtins): Remove sat builtin.
+       (rx_expand_builtin): Likewise.
+       * config/rx/rx.md (ssaddsi3): New.
+       (*sat): Rename from sat.  Represent the CC_REG input.
+
+       * config/rx/predicates.md (rshift_operator): New.
+       * config/rx/rx.c (rx_expand_insv): Remove.
+       * config/rx/rx-protos.h: Update.
+       * config/rx/rx.md (*bitset): Rename from bitset.  Swap the ashift
+       operand to the canonical position.
+       (*bitset_in_memory, *bitinvert, *bitinvert_in_memory): Similarly.
+       (*bitclr, *bitclr_in_memory): Similarly.
+       (*insv_imm, rx_insv_reg, *insv_cond, *bmcc, *insv_cond_lt): New.
+       (insv): Retain the zero_extract in the expansion.
+
+       * config/rx/rx.md (bswapsi2): Use = not + for output reload.
+       (bswaphi2, bitinvert, revw): Likewise.
+
+       * config/rx/rx.c (gen_rx_store_vector): Use VOIDmode for gen_rtx_SET.
+       (gen_rx_rtsd_vector, gen_rx_popm_vector): Likewise.
+       * config/rx/rx.md (pop_and_return): Use VOIDmode for SET.
+       (stack_push, stack_pushm, stack_pop, stack_popm): Likewise.
+       (bitset, bitset_in_memory): Likewise.
+       (bitinvert, bitinvert_in_memory): Likewise.
+       (bitclr, bitclr_in_memory): Likewise.
+       (insv, sync_lock_test_and_setsi, movstr, rx_movstr): Likewise.
+       (rx_strend, rx_cmpstrn): Likewise.
+       (rx_setmem): Likewise.  Make the source BLKmode to match the dest.
+       (bitop peep2 patterns): Remove.
+
+       * config/rx/rx.c (rx_match_ccmode): New.
+       * config/rx/rx-protos.h: Update.
+       * config/rx/rx.md (abssi2): Clobber, don't set flags.
+       (addsi3, adddi3, andsi3, negsi2, one_cmplsi2, iorsi3): Likewise.
+       (rotlsi3, rotrsi3, ashrsi3, lshrsi3, ashlsi3): Likewise.
+       (subsi3, subdi3, xorsi3, addsf3, divsf3, mulsf3, subsf3): Likewise.
+       (fix_truncsfsi2, floatsisf2): Likewise.
+       (*abssi2_flags, *addsi3_flags, *andsi3_flags, *negsi2_flags): New.
+       (*one_cmplsi2_flags, *iorsi3_flags, *rotlsi3_flags): New.
+       (*rotrsi3_flags, *ashrsi3_flags, *lshrsi3_flags, *ashlsi3_flags): New.
+       (*subsi3_flags, *xorsi3_flags): New.
+
+       * config/rx/rx.md (cstoresf4, *cstoresf4): New patterns.
+
+       * config/rx/rx.c (rx_print_operand): Remove workaround for
+       unsplit comparison operations.
+
+       * config/rx/rx.md (movsicc): Split after reload.
+       (*movsicc): Merge *movsieq and *movsine via match_operator.
+       (*stcc): New pattern.
+
+       * config/rx/rx.c (rx_float_compare_mode): Remove.
+       * config/rx/rx.h (rx_float_compare_mode): Remove.
+       * config/rx/rx.md (cstoresi4): Split after reload.
+       (*sccc): New pattern.
+
+       * config/rx/predicates.md (label_ref_operand): New.
+       (rx_z_comparison_operator): New.
+       (rx_zs_comparison_operator): New.
+       (rx_fp_comparison_operator): New.
+       * config/rx/rx.c (rx_print_operand) [B]: Examine comparison modes.
+       Validate that the flags are set properly for the comparison.
+       (rx_gen_cond_branch_template): Remove.
+       (rx_cc_modes_compatible): Remove.
+       (mode_from_flags): New.
+       (flags_from_code): Rename from flags_needed_for_conditional.
+       (rx_cc_modes_compatible): Re-write in terms of flags_from_mode.
+       (rx_select_cc_mode): Likewise.
+       (rx_split_fp_compare): New.
+       (rx_split_cbranch): New.
+       * config/rx/rx.md (most_cond, zs_cond): Remove iterators.
+       (*cbranchsi4): Use match_operator and rx_split_cbranch.
+       (*cbranchsf4): Similarly.
+       (*cbranchsi4_tst): Rename from *tstbranchsi4_<code>.  Use
+       match_operator and rx_split_cbranch.
+       (*cbranchsi4_tst_ext): Combine *tstbranchsi4m_eq and
+       tstbranchsi4m_ne.  Use match_operator and rx_split_cbranch.
+       (*cmpsi): Rename from cmpsi.
+       (*tstsi): Rename from tstsi.
+       (*cmpsf): Rename from cmpsf; use CC_Fmode.
+       (*conditional_branch): Rename from conditional_branch.
+       (*reveresed_conditional_branch): Remove.
+       (b<code>): Remove expander.
+       * config/rx/rx-protos.h: Update.
+
+       * config/rx/rx.c (rx_compare_redundant): Remove.
+       * config/rx/rx.md (cmpsi): Don't use it.
+       * config/rx/rx-protos.h: Update.
+
+       * config/rx/rx-modes.def (CC_F): New mode.
+       * config/rx/rx.c (rx_select_cc_mode): New.
+       * config/rx/rx.h (SELECT_CC_MODE): Use it.
+       * config/rx/rx-protos.h: Update.
+
+2011-01-17  Richard Henderson  <rth@redhat.com>
+
+       * except.c (dump_eh_tree): Fix stray ; after for statement.
+
+2011-01-17  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/47313
+       * tree-inline.c (tree_function_versioning): Move DECL_RESULT
+       handling before copying the body.  Properly deal with
+       by-reference result in SSA form.
+
 2011-01-17  Ian Lance Taylor  <iant@google.com>
 
        PR target/47219