X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2FChangeLog;h=92f6d044b25532e0c8715461ea96db69273accbd;hb=dcfc8dc0c59396abc36f7645c80434082e3d3fc9;hp=3e94cc76c0998f2c1249657b1f968f6feed685cd;hpb=8b8777b9498d374bd2e42e7983c356846f5ee8d7;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3e94cc76c09..92f6d044b25 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,702 @@ +2011-01-22 Jan Hubicka + + 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 + + * 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 + + 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 + + * 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 + + * config/rx/rx.md (cstoresf4): Pass comparison operator to + rx_split_fp_compare. + +2011-01-22 Nick Clifton + + * 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 + + 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 + + PR debug/47402 + Temporarily revert: + 2011-01-21 Alexandre Oliva + PR debug/47106 + * tree-dfa.c (create_var_ann): Mark variable as used. + +2011-01-21 Jakub Jelinek + + 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 + + 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 + + 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 + + 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 + + PR middle-end/47395 + * tree.def (WIDEN_MULT_MINUS_EXPR): Fix printed name. + +2011-01-21 Richard Guenther + + 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 + + * 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 + + 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 + + * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Add + builtin_define __CMODEL_MEDIUM__ and __CMODEL_LARGE__. + +2011-01-20 Ramana Radhakrishnan + + * 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 + + * 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 + + PR debug/46583 + * tree-ssa-live.c (remove_unused_scope_block_p): Keep type decls. + +2011-01-20 Jakub Jelinek + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + * c-parser.c (c_parser_for_statement): Initialize + collection_expression. + +2011-01-19 Joseph Myers + + * config/spu/spu-elf.h (ASM_SPEC): Remove %{w:-W}. + +2011-01-19 Joseph Myers + + * 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 + + * 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 + + * 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 + + * ipa-split.c (find_return_bb): Use single_pred_p/single_pred_edge, + simplify. + + * ipa-split.c: Spelling fixes. + +2011-01-19 Richard Henderson + + * 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 + + * config/spu/spu.h (MOVE_RATIO): Return 4 in the !speed case. + +2011-01-19 Richard Henderson + + * 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 + + * 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 + + 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 + + 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 + + * 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 + + 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 + + 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 + + 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 + + * config/arm/cortex-a9.md (cortex-a9-neon.md): Actually + include. + (cortex_a9_dp): Handle neon types correctly. + +2011-01-18 Jakub Jelinek + + PR rtl-optimization/47299 + * expr.c (expand_expr_real_2) : 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 + + * doc/lto.texi (LTO): Ensure two spaces after period. Fix + spacing after 'e.g.', typos, comma, hyphenation. + 2011-01-17 Richard Henderson + * 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_. 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): 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.