X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2FChangeLog;h=c1b7a8e2f39ab680763e6c9a462e868597b0b17b;hb=e3c1d6a7f3d6aba0a858566d8b9656f6aa43a2eb;hp=9bef97dff15cc06924e88de292e2d96f959de6ef;hpb=dfff1aba9c4fa9df9a27e2cf7e4cac6391f9ed67;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9bef97dff15..c1b7a8e2f39 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,857 @@ +2011-12-01 Nathan Sidwell + + PR gcov-profile/51113 + * coverage.c (build_var): Keep coverage variables static. + +2011-12-01 Jakub Jelinek + + PR tree-optimization/51356 + * tree-vect-patterns.c (vect_recog_bool_pattern): Give up if + vectype doesn't have VECTOR_MODE_P. + + PR debug/50317 + * tree-ssa-dce.c (remove_dead_stmt): Add a debug stmt when removing + as unnecessary a store to a variable with gimple reg type. + * tree-ssa-live.c (remove_unused_locals): Clear TREE_ADDRESSABLE bit + on local unreferenced variables. + * cfgexpand.c (expand_gimple_basic_block): Don't emit DEBUG_INSNs + for !target_for_debug_bind variables. + +2011-12-01 Patrick Marlier + + PR middle-end/51273 + * cgraph.h (cgraph_call_node_duplication_hooks): Declare. + * cgraph.c (cgraph_call_node_duplication_hooks): Make global. + * cgraphunit.c (cgraph_copy_node_for_versioning): Call it. + +2011-12-01 Andrew Pinski + + PR lto/51198 + * tree.c (free_lang_data_in_decl): Clear FIELD_DECL's + DECL_INITIAL also. + +2011-12-01 Jakub Jelinek + + PR tree-optimization/51246 + * tree-predcom.c (replace_ref_with): Handle also clobber on the + rhs. + + PR rtl-optimization/51014 + * loop-unroll.c (apply_opt_in_copies): Ignore label DEBUG_INSNs + both from bb and orig_bb. + +2011-12-01 Joern Rennecke + + PR tree-optimization/50802 + * tree-vrp.c (simplify_conversion_using_ranges): Rewrite test + considering what happens to ranges during sign changes and/or + intermediate narrowing conversions. + +2011-11-30 John David Anglin + + PR middle-end/50283 + * config/pa/pa.md (in_branch_delay): Disallow frame related insns. + (in_nullified_branch_delay): Likewise. + (in_call_delay): Likewise. + +2011-11-30 Richard Henderson + + * predict.c (expr_expected_value_1): Assume compare-and-swap builtin + boolean return is true. + +2011-11-30 Jakub Jelinek + + PR rtl-optimization/51044 + * dse.c (emit_inc_dec_insn_before): Ensure new_insn is an instruction + rather than just insn body. + + PR target/50725 + * function.c (thread_prologue_and_epilogue_insns): If + stack_realign_drap, add drap_reg to SET_UP_BY_PROLOGUE + regset. + + PR middle-end/51089 + * tree-eh.c (cleanup_empty_eh_merge_phis): Add check to + avoid creating duplicate edges here. + (cleanup_empty_eh_unsplit): And remove it in the caller. + +2011-11-30 Andrew Pinski + + PR c/51321 + * c-parser.c (c_parser_postfix_expression): Check groktypename results + before looking at the main variant. + +2011-11-30 Jakub Jelinek + + PR rtl-optimization/48721 + * sched-deps.c (sched_analyze_insn): For SIBLING_CALL_P set + reg_pending_barrier to TRUE_BARRIER. + + PR rtl-optimization/48721 + * sched-ebb.c (begin_move_insn): Insert empty unreachable + block after BARRIER if insn is followed by it. + +2011-11-30 Richard Henderson + + * config/sparc/sparc-opts.h (enum sparc_memory_model_type): New. + * config/sparc/sparc.opt (mmemory-model=): New option. + * doc/invoke.texi (Sparc Options): Document it. + * config/sparc/sparc.c (sparc_option_override): Provide default + for sparc_memory_model. + (sparc_emit_membar_for_model): Omit barrier combinations that are + implied by the memory model. + +2011-11-30 Richard Henderson + + * config/sparc/sync.md (I124MODE): New mode iterator. + (memory_barrier): Remove. + (atomic_exchangesi): New. + (swapsi): Rename from *swapsi. + (atomic_test_and_set): New. + (ldstubqi): Rename from *ldstubqi, merge with expander. + (ldstub): Rename from *ldstub, merge with expander. + (sync_lock_test_and_setsi): Remove. + (sync_lock_test_and_set): Remove. + +2011-11-30 Richard Henderson + + * config/sparc/constraints.md ("w"): New. + * config/sparc/predicates.md (mem_noofs_operand): New. + * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): Make static. + Generate the boolean result of the atomic_compare_exchange. + (sparc_expand_compare_and_swap): New. + * config/sparc/sync.md (atomic_compare_and_swap): New. + (atomic_compare_and_swap_1): Rename from + *sync_compare_and_swap, use mem_noofs_operand. + (*atomic_compare_and_swapdi_v8plus): Rename from + *sync_compare_and_swapdi_v8plus, use mem_noofs_operand. + (sync_compare_and_swap): Remove. + (sync_compare_and_swap): Remove. + +2011-11-30 Richard Henderson + + * config/sparc/predicates.md (register_or_v9_zero_operand): New. + * config/sparc/sparc.md (UNSPEC_ATOMIC): New. + * config/sparc/sync.md (atomic_load): New. + (atomic_loaddi_1, atomic_store, atomic_storedi_1): New. + +2011-11-30 Richard Henderson + + * config/sparc/predicates.md (zero_or_v7_operand): New. + * config/sparc/sparc.c (sparc_emit_membar_for_model): New. + * config/sparc/sparc-protos.h: Update. + * config/sparc/sync.md (mem_thread_fence): New. + (memory_barrier): Use sparc_emit_membar_for_model. + (membar, *membar_empty, *membar_storestore, *membar_storeload): New. + (*membar_v8): Accept and ignore the membar mask. + (*membar): Accept and print the membar mask. + +2011-11-30 Matthew Gretton-Dann + + * config/arm/arm.c (arm_issue_rate): Cortex-A15 can triple issue. + * config/arm/arm.md (mul64): New attribute. + (generic_sched): Cortex-A15 is not scheduled generically. + (cortex-a15.md): Include. + * config/arm/cortex-a15.md: New machine description. + * config/arm/t-arm (MD_INCLUDES): Add cortex-a15.md. + +2011-11-30 Matthew Gretton-Dann + + * config/arm/t-arm (MD_INCLUDES): Ensure all md files are listed. + +2011-11-30 Iain Sandoe + + * doc/tm.texi.in (NEXT_OBJC_RUNTIME): Update macro description. + * doc/tm.texi: Regenerate. + * flags.h (flag_next_runtime): Remove references. + * toplev.c: Likewise. + * defaults.h (NEXT_OBJC_RUNTIME): Provide default. + * gccspec.c (lang_specific_driver): Adjust use of NEXT_OBJC_RUNTIME. + * config/darwin.c (darwin_override_options): Provide default + Objective-C abi settings and target conflict checks. + * config/darwin.h (SUBTARGET_C_COMMON_OVERRIDE_OPTIONS): Remove unused + code. Adjust indenting. + +2011-11-29 Joseph Myers + + * config/sh/sh.h (enum reg_class, REG_CLASS_NAMES) + (REG_CLASS_CONTENTS): Add NON_SP_REGS. + (REGCLASS_HAS_GENERAL_REG): Handle NON_SP_REGS. + * config/sh/constraints.md (u): New constraint. + +2011-11-29 Oleg Endo + + PR target/51337 + * config/sh/sh.c (sh_secondary_reload): Add case when FPUL + register is being loaded from a pseudo in memory. + +2011-11-29 DJ Delorie + + * config.gcc (rl78-*-elf): New case. + * doc/extend.texi: Add RL78 documentation. + * doc/invoke.texi: Likewise. + * doc/md.texi: Likewise. + * doc/contrib.texi: Add RL78. + * doc/install.texi: Add rl78-*-elf. + * config/rl78: New directory for the Renesas RL78. + +2011-11-29 Jakub Jelinek + + PR tree-optimization/51247 + * tree-vrp.c (extract_range_from_assert): For signed 1-bit precision + types instead of adding 1 subtract -1 and instead of subtracting 1 + add -1 to avoid overflows. + +2011-11-29 Andrew MacLeod + + PR target/50123 + * optabs.c (maybe_optimize_fetch_op): New. Look for more optimal + instructions for a FECTH_OP or OP_FECTH sequence. + (expand_atomic_fetch_op): Call maybe_optimize_fetch_op. + +2011-11-29 Uros Bizjak + + * config/i386/sync.md (UNSPEC_LDA, UNSPEC_STA): New unspecs. + (movdi_via_fpu): Remove. + (loaddi_via_fpu): New insn pattern. + (storedi_via_fpu): Ditto. + (atomic_loaddi_fpu): Use loaddi_via_fpu and storedi_via_fpu. + (atomic_storedi_fpu): Ditto. + * reg-stack.c (get_true_reg): Handle UNSPEC_LDA. + (subst_stack_regs_pat): Handle UNSPEC_STA. + +2011-11-29 Uros Bizjak + + * config/i386/i386.md (*floathi2_i387_with_temp): Do not + allocate scratch memory for alternative 0. + +2011-11-29 Michael Meissner + + * config/rs6000/rs6000-builtins.def: Completely rewrite builtin + handling to centralize more of the builtins in this file. Change + some builtin enumerations to be more consistant. Use a new mask + to hold the current builtins, including SPE and PAIRED builtins + which no longer are set via target_flags masks. Add + -mdebug=builtin debug support. For power machines, define all + Altivec and VSX buitins when the compiler starts, but don't allow + the use of a builtin unless the appropriate switch is used, or + #pragma GCC target is used to change the options. If the user + uses #pragma GCC target, update the appropriate hardware macros. + * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Ditto. + * config/rs6000/rs6000.opt (rs6000_builtin_mask): Ditto. + * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Ditto. + (rs6000_define_or_undefine_macro): Ditto. + (rs6000_target_modify_macros): Ditto. + (rs6000_cpu_cpp_builtins): Ditto. + (altivec_overloaded_builtins): Ditto. + (altivec_build_resolved_builtin): Ditto. + * config/rs6000/rs6000.c (rs6000_target_modify_macros_ptr): Ditto. + (rs6000_builtin_info): Ditto. + (def_builtin): Ditto. + (enable_mask_for_builtins): Ditto. + (DEBUG_FMT_X): Ditto. + (rs6000_debug_reg_global): Ditto. + (rs6000_builtin_mask_calculate): Ditto. + (rs6000_option_override_internal): Ditto. + (rs6000_builtin_conversion): Ditto. + (rs6000_builtin_vectorized_function): Ditto. + (bdesc_3arg): Ditto. + (bdesc_dst): Ditto. + (bdesc_2arg): Ditto. + (builtin_description_predicates): Ditto. + (bdesc_altivec_preds): Ditto. + (bdesc_spe_predicates): Ditto. + (bdesc_spe_evsel): Ditto. + (bdesc_paired_preds): Ditto. + (bdesc_abs): Ditto. + (bdesc_1arg): Ditto. + (rs6000_overloaded_builtin_p): Ditto. + (rs6000_expand_unop_builtin): Ditto. + (bdesc_2arg_spe): Ditto. + (spe_expand_builtin): Ditto. + (rs6000_invalid_builtin): Ditto. + (rs6000_expand_builtin): Ditto. + (rs6000_init_builtins): Ditto. + (spe_init_builtins): Ditto. + (paired_init_builtins): Ditto. + (altivec_init_builtins): Ditto. + (builtin_function_type): Ditto. + (rs6000_common_init_builtins): Ditto. + (rs6000_builtin_reciprocal): Ditto. + (rs6000_builtin_mask_names): Ditto. + (rs6000_pragma_target_parse): Ditto. + (rs6000_function_specific_print): Ditto. + * config/rs6000/rs6000.h (MASK_DEBUG_BUILTIN): Ditto. + (MASK_DEBUG_ALL): Ditto. + (TARGET_DEBUG_BUILTIN): Ditto. + (TARGET_EXTRA_BUILTINS): Ditto. + (REGISTER_TARGET_PRAGMAS): Ditto. + (enum rs6000_btc): Ditto. + (RS6000_BTC_*): Ditto. + (RS6000_BTM_*): Ditto. + (enum rs6000_builtins): Ditto. + * config/rs6000/rs6000-protos.h (rs6000_overloaded_builtin_p): Ditto. + (rs6000_target_modify_macros): Ditto. + (rs6000_target_modify_macros_ptr): Ditto. + + * config/rs6000/vector.md (unsfloat2): Use the + standard name for converting vector unsigned values to floating + point. Delete the TARGET_VECTORIZE_BUILTIN_CONVERSION hook, which + is handled by machine independent code. + * config/rs6000/rs6000.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Ditto. + (rs6000_builtin_conversion): Ditto. + +2011-11-29 Dodji Seketeli + + * tree-diagnostic (struct loc_t): Rename into struct loc_map_pair. + (maybe_unwind_expanded_macro_loc): Adjust. + +2011-11-29 David Edelsohn + Aldy Hernandez + + * trans-mem.c (ipa_tm_create_version_alias): Mangle new_decl + if DECL_ONE_ONLY. + (ipa_tm_create_version): Same. + +2011-11-29 Bernd Schmidt + + * haifa-sched.c (recompute_todo_spec): Simplify and correct the + code checking for a clobber of a condition register when deciding + whether to predicate. + +2011-11-29 Diego Novillo + + * gimple.c (gimple_call_set_cannot_inline): Move from gimple.h. + Update field call_stmt_cannot_inline_p from call graph edge, if needed. + * gimple.h (gimple_call_set_cannot_inline): Move to gimple.c. + +2011-11-29 Sameera Deshpande + + * config/arm/arm.md (arm_movdi): Update NEG_POOL_RANGE. + (movdf_soft_insn): Likewise. + * config/arm/fpa.md (thumb2_movdf_fpa): Likewise. + * config/arm/neon.md (neon_mov): Likewise. + * config/arm/vfp.md (movdi_vfp): Likewise. + (movdi_vfp_cortexa8): Likewise. + (movdf_vfp): Likewise. + +2011-11-29 Jakub Jelinek + + PR middle-end/50074 + * expr.c (expand_expr_addr_expr_1): Don't call force_operand for + EXPAND_SUM modifier. + +2011-11-29 Ira Rosen + + PR tree-optimization/51301 + * tree-vect-patterns.c (vect_recog_over_widening_pattern): Check that + the last statement doesn't convert to a bigger type than the original + type of the computation. + +2011-11-28 Richard Henderson + + * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): + Handle overlap between retval and oldval. Always compute boolval + from CR0 EQ value. + +2011-11-28 Jakub Jelinek + + PR debug/50317 + * tree-ssa.c (execute_update_addresses_taken): Remove + var ={v} {CLOBBER} stmts instead of rewriting them into + var_N ={v} {CLOBBER}. + + PR middle-end/50907 + * function.c (convert_jumps_to_returns): When redirecting an edge + succ to EXIT_BLOCK_PTR, clear EDGE_CROSSING flag. + + PR tree-optimization/50078 + * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Copy over + TREE_THIS_VOLATILE also from the old to new lhs resp. rhs. + + PR tree-optimization/50682 + * tree-eh.c (maybe_remove_unreachable_handlers): New function. + * tree-flow.h (maybe_remove_unreachable_handlers): New prototype. + * tree-optimize.c (execute_cleanup_cfg_post_optimizing): Call it. + +2011-11-28 Georg-Johann Lay + + * doc/extend.texi (AVR Built-in Functions): Add documentation for + __builtin_avr_map8 and __builtin_avr_map16. + + * config/avr/avr.md: Document new %t and %T asm output codes. + (define_c_enum "unspec"): Add UNSPEC_MAP_BITS. + (adjust_len): Add map_bits. + (map_bitsqi, map_bitshi): New insns. + * config/avr/avr-protos.h (avr_out_map_bits): New. + * config/avr/avr-protos.c (print_operand): Implement %t and %T. + (adjust_insn_length): Handle ADJUST_LEN_MAP_BITS. + (avr_double_int_push_digit): New function. + (avr_map, avr_revert_map, avr_swap_map, avr_id_map): New functions. + (avr_sig_map, avr_map_hamming_byte): New functions. + (avr_out_swap_bits, avr_out_revert_bits, avr_move_bits, + avr_out_map_bits): New functions. + (enum avr_builtin_id): Add AVR_BUILTIN_MAP8, AVR_BUILTIN_MAP16. + (avr_init_builtins): Populate __builtin_avr_map8, __builtin_avr_map16. + (bdesc_2arg): Add __builtin_avr_map8, __builtin_avr_map16 ... + (avr_expand_builtin): ...and expand them. + * config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in defines: + __BUILTIN_AVR_MAP8, __BUILTIN_AVR_MAP16. + +2011-11-27 Richard Sandiford + + PR target/51278 + * config/mips/mips.c (mips_rtx_costs): Handle baddu. + +2011-11-27 Richard Sandiford + + * config/mips/mips.c (mips16_unextended_reference_p): Test for BLKmode. + +2011-11-27 Richard Sandiford + + * config/mips/mips-protos.h (mips_emit_binary): Declare. + * config/mips/mips.c (mips_emit_binary): Make global. + (mips_set_mips16_mode): Turn off -mfix-r4000 in MIPS16 mode. + (mips_conditional_register_usage): Don't treat LO and HI as + register operands in MIPS16 mode. + (mips_mulsidi3_gen_fn): Use {u,}mulsidi3_{32,64}bit_mips16 + for MIPS16 code. + * config/mips/predicates.md (muldiv_target_operand): New predicate. + (move_operand): Allow hilo_operand. + * config/mips/mips.md (mul3): Explicitly specify LO as the + target of MIPS16 multiplies, then move it into the target register. + (mul3_internal, *macc2, *msac2): Use muldiv_target_operand. + (mulsidi3_32bit_mips16): New expander. + (mulsidi3_32bit): Use muldiv_target_operand. + (mulsidi3_32bit_r4000): Disable for ISA_HAS_DSP. + (mulsidi3_64bit): Require !TARGET_MIPS16. Split into + mulsidi3_64bit_split. + (mulsidi3_64bit_mips16): New expander. + (mulsidi3_64bit_split): Likewise, using expansions from + two previous define_splits. + (mulsidi3_64bit_hilo, *muls_di, msubsidi4): Use + muldiv_target_operand. + (mulsi3_highpart): Use mulsi3_highpart_split for MIPS16 code. + (mulsi3_highpart_internal): Require !TARGET_MIPS16. + Split into mulsi3_highpart_split. + (mulsi3_highpart_split): New expander. + (muldi3_highpart): Turn into a define_expand. + Use muldi3_highpart_split for MIPS16 code. + (muldi3_highpart_internal): Renamed from muldi3_highpart. + Require !TARGET_MIPS16. Split into muldi3_highpart_split. + (muldi3_highpart_split): New expander. + (mulditi3): Explicitly specify LO as the target of MIPS16 + multiplies, then move it into the target register. + (mulditi3_internal, maddsidi4): Use muldiv_target_operand. + (divmod4, udivmod4): Turn into define_expands. + Use divmod4_split for MIPS16 code, then explicitly + move LO into operand 0. + (divmod4_internal, udivmod4_internal): Renamed + from divmod4. Use muldiv_target_operand. + Require !TARGET_MIPS16. Split into divmod4_split. + (divmod4_split): New expander. + (divmod4_hilo_): Use muldiv_target_operand. + (mfhi_): Use hilo_operand. + +2011-11-27 Richard Sandiford + + * hard-reg-set.h (target_hard_regs): Add x_accessible_reg_set + and x_operand_reg_set. + (accessible_reg_set, operand_reg_set): New macros. + * reginfo.c (init_reg_sets): Initialize accessible_reg_set and + operand_reg_set. + (saved_accessible_reg_set, saved_operand_reg_set): New variables. + (save_register_info): Save them. + (restore_register_info): Restore them. + (init_reg_sets_1): Limit operand_reg_set to accessible_reg_set. + Remove NO_REGS registers from operand_reg_set. Treat members + of operand_reg_set as fixed. + * recog.c (general_operand): Check operand_reg_set rather than NO_REGS. + (register_operand, nonmemory_operand): Likewise. + * varasm.c (make_decl_rtl): Always use DECL_MODE as the mode of + register variables. Check accessible_reg_set and operand_reg_set. + * config/mips/mips.c (mips_conditional_register_usage): Remove + inaccessible register from accessible_reg_set, rather than just + making them fixed. + +2011-11-27 Gerald Pfeifer + + * config/pa/pa-linux.h (TARGET_GAS): Remove comment. + +2011-11-26 Richard Henderson + + * config/arm/arm.c (arm_init_libfuncs): Call init_sync_libfuncs + for Linux. + +2011-11-26 Richard Henderson + + * optabs.c (expand_atomic_fetch_op): Always return result. + + * optabs.c (init_sync_libfuncs_1): Include max in iteration. + + * omp-low.c (expand_omp_atomic): Assume anything aligned to + BIGGEST_ALIGNMENT is aligned. + +2011-11-26 Richard Henderson + + * config/m68k/m68k.md (UNSPECV_CAS_1, UNSPECV_CAS_2): New. + (UNSPECV_TAS_1, UNSPECV_TAS_2): New. + (I): New mode iterator. + (xz): New mode attribute. + * config/m68k/sync.md: New file. + + * config/m68k/linux.h (TARGET_INIT_LIBFUNCS): New. + * config/m68k/m68k.c (m68k_init_sync_libfuncs): New. + +2011-11-26 Nathan Sidwell + + PR gcov-profile/51297 + * gcov.c (main): Allocate initial names and sources arrays. + (find_source): Don't check for null name or source arrays here. + +2011-11-26 Jakub Jelinek + + PR rtl-optimization/49912 + * cfgrtl.c (rtl_verify_flow_info_1): Ignore also EDGE_PRESERVE bit + when counting n_branch. + +2011-11-26 Uros Bizjak + + * config/i386/sync.md (movdi_via_fpu): Add %Z insn suffixes. + +2011-11-26 Joern Rennecke + + PR middle-end/50074 + * calls.c (mem_overlaps_already_clobbered_arg_p): + Return false if no outgoing arguments have been stored so far. + +2011-11-25 Georg-Johann Lay + + * config/avr/avr.c (print_operand): Support code = 'i' for CONST_INT. + +2011-11-24 Andrew MacLeod + + PR other/51011 + * tree.h (is_builtin_name): No longer external. + * builtins.c (is_builtin_name): Make static. + * varasm.c (incorporeal_function_p): __sync and __atomic external calls + are not incorporeal and may need asm label processing. + +2011-11-25 Georg-Johann Lay + + PR target/50566 + * config/avr/avr-protos.h (avr_log_t): Add field .builtin. + * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it. + Don't bypass TARGET_ALL_DEBUG. Print self-info with ?. + (avr_log_vadump): Support %D and %X to print double_int. + (avr_double_int_pop_digit): New static function. + (avr_dump_double_int_hex): New static function. + +2011-11-24 Enkovich Ilya + + PR target/51287 + * config/i386/i386.c (distance_non_agu_define_in_bb): Fix insn + attr check. + +2011-11-24 Andrew MacLeod + + * optab.c (maybe_emit_atomic_exchange): New. Try to emit an + atomic_exchange pattern. + (maybe_emit_sync_lock_test_and_set): New. Try to emit an exchange + using __sync_lock_test_and_set. + (maybe_emit_compare_and_swap_exchange_loop): New. Try to emit an + exchange using a compare_and_swap loop. + (expand_sync_lock_test_and_set): New. Expand sync_lock_test_and_set. + (expand_atomic_test_and_set): New. Expand test_and_set operation. + (expand_atomic_exchange): Use new maybe_emit_* functions. + (expand_atomic_store): Use new maybe_emit_* functions. + * builtins.c (expand_builtin_sync_lock_test_and_set): Call + expand_sync_lock_test_and_set routine. + (expand_builtin_atomic_exchange): Remove parameter from call. + (expand_builtin_atomic_clear): Use atomic_clear pattern if present. + (expand_builtin_atomic_test_and_set): Add target and simply call + expand_atomic_test_and_set. + (expand_builtin): Add target to expand_builtin_atomic_test_and_set. + * expr.h (expand_atomic_exchange): Add parameter. + (expand_sync_lock_test_and_set): New prototype. + (expand_atomic_test_and_set, expand_atomic_clear): New prototypes. + +2011-11-24 H.J. Lu + + PR target/51134 + * config/i386/i386.h (processor_costs): Revert revision 181357. + * config/i386/i386.c (cost models): Likewise. + (core_cost): Likewise. + (promote_duplicated_reg): Likewise. + (promote_duplicated_reg_to_size): Likewise. + (processor_target): Likewise. + (expand_set_or_movmem_via_loop_with_iter): Likewise. + (expand_set_or_movmem_via_loop): Likewise. + (emit_strset): Likewise. + (expand_movmem_epilogue): Likewise. + (expand_setmem_epilogue): Likewise. + (expand_movmem_prologue): Likewise. + (expand_setmem_prologue): Likewise. + (expand_constant_movmem_prologue): Likewise. + (expand_constant_setmem_prologue): Likewise. + (decide_alg): Likewise. + (decide_alignment): Likewise. + (ix86_expand_movmem): Likewise. + (ix86_expand_setmem): Likewise. + (ix86_slow_unaligned_access): Likewise. + * config/i386/i386.md (strset): Likewise. + * config/i386/sse.md (vec_dupv4si): Likewise. + (vec_dupv2di): Likewise. + +2011-11-24 Georg-Johann Lay + + * config/avr/avr.md (*rotlhi2.15): Set length to 4. + +2011-11-24 Razya Ladelsky + + * tree-data-ref.c (initialize_data_dependence_relation): Update + comment for the self dependence case. + (compute_self_dependence): Remove. + * tree-vect-data-refs.c (vect_analyze_data_refs): Remove call to + compute_self_dependenc. + +2011-11-24 Alan Modra + + * c-decl.c (warn_if_shadowing): Don't warn if shadowed + identifier is from system header. + +2011-11-23 Jakub Jelinek + + PR target/51261 + * config/i386/i386.c (decide_alg): Initialize *dynamic_check + even if !optimize. + +2011-11-23 Vladimir Makarov + + PR rtl-optimization/48455 + * doc/invoke.texi (-fira-region): Document default values. + + * flags-types.h (enum ira_region): Add new value + IRA_REGION_AUTODETECT. + + * common.opt (fira-region): Set up initial value to + IRA_REGION_AUTODETECT. + + * toplev.c (process_options): Set up flag_ira_region depending on + -O options. + + * ira.c (ira.c): Remove optimize guard for ira_build. + +2011-11-23 Chung-Lin Tang + + PR rtl-optimization/50496 + * jump.c (redirect_jump): Assert fail on nlabel == NULL_RTX + only after epilogue is created. Add comments. + +2011-11-22 Richard Henderson + + * config/ia64/ia64.c (ia64_expand_atomic_op): Add model parameter. + Generate the barrier required for the memory model. + (rtx_needs_barrier): Handle UNSPEC_FETCHADD_REL, UNSPEC_CMPXCHG_REL. + * config/ia64/ia64-protos.h: Update. + * config/ia64/ia64.md (UNSPEC_FETCHADD_REL): New. + (UNSPEC_CMPXCHG_REL): New. + * config/ia64/sync.md (mem_thread_fence): New. + (atomic_load, atomic_store): New. + (atomic_compare_and_swap): New. + (cmpxchg_acq_, cmpxchg_acq_di): New. + (atomic_exchange): New. + (xchg_acq_): Rename from sync_lock_test_and_set. + (atomic_, atomic_nand): New. + (atomic_fetch_, atomic_fetch_nand): New. + (atomic__fetch, atomic_nand_fetch): New. + (fetchadd_rel_): New. + (sync_, sync_nand): Remove. + (sync_old_, sync_old_nand): Remove. + (sync_new_, sync_new_nand): Remove. + (sync_compare_and_swap): Remove. + (sync_lock_release): Remove. + + * config/ia64/ia64.md: Use define_c_enum for UNSPEC_* + and UNSPECV_* constants. + +2011-11-22 Tom de Vries + + PR rtl-optimization/50764 + * sched-deps.c (sched_analyze_insn): Make sure frame-related insns are + not moved past preceding jump. + +2011-11-22 Jeff Law + + * doc/contrib.texi: Add entry for David Binderman. + +2011-11-22 Andreas Krebbel + + * postreload.c (reload_combine): Mark reg_state as invalid at + volatile insns if there has been a use already. + +2011-11-21 Aldy Hernandez + + * opts.c (finish_options): Do not fail for -fgnu-tm. + * gimple-streamer-out.c (output_gimple_stmt): Handle + GIMPLE_TRANSACTION. + * gimple-streamer-in.c (input_gimple_stmt): Same. + * lto-cgraph.c (input_overwrite_node): Read tm_clone bit. + (lto_output_node): Write tm_clone bit. + +2011-11-22 Ian Lance Taylor + + * doc/install.texi (Configuration): Correct doc of + --enable-build-poststage1-with-cxx: it is not experimental. + +2011-11-22 Jakub Jelinek + + PR tree-optimization/51074 + * fold-const.c (fold_binary_loc): Fix up VEC_INTERLEAVE_*_EXPR + handling for BYTES_BIG_ENDIAN. + * optabs.c (can_vec_perm_for_code_p): Likewise. + +2011-11-22 Michael Matz + + PR other/51125 + * trans-mem.c (expand_block_tm): Ignore clobbers. + +2011-11-22 Iain Sandoe + + * config/darwin.h (ENDFILE_SPEC): New. + (DARWIN_CRT1_SPEC): Add crttms.o. + (STARTFILE_SPEC): Likewise for dynamic libs and bundles. + * config/i386.h (ENDFILE_SPEC): Amend to include crttme.o. + +2011-11-22 Michael Matz + + PR c++/51264 + * tree.c (iterative_hash_expr): Remove break after return. + +2011-11-22 Iain Sandoe + + * target.def (tm_clone_table_section): New hook. + * doc/tm.texi.in (TARGET_ASM_TM_CLONE_TABLE_SECTION): Define. + * doc/tm.texi: Regenerate. + * varasm.c (dump_tm_clone_pairs): Use target tm_clone_table_section. + * output.h (default_clone_table_section): New prototype. + * config/darwin.h (TARGET_ASM_TM_CLONE_TABLE_SECTION): New. + * config/darwin-protos.h (darwin_tm_clone_table_section): New prototype. + * config/darwin.c (darwin_tm_clone_table_section): New. + +2011-11-21 Torvald Riegel + + * trans-mem.c (diagnose_tm_1): Print an expression instead of a + declaration in error messages for indirect calls. + +2011-11-21 David S. Miller + + * config/sparc/sparc.c (sparc_regmode_natural_size): New function + implementing REGMODE_NATURAL_SIZE taking into consideration vector + modes. + (sparc_modes_tieable_p): Similarly for MODES_TIEABLE_P. + * config/sparc/sparc-protos.h (sparc_regmode_natural_size, + sparc_modes_tieable_p): Declare. + * gcc/config/sparc/sparc.h (REGMODE_NATURAL_SIZE, + MODES_TIEABLE_P): Use new helper functions. + + Revert + 2011-11-16 Andreas Krebbel + + PR middle-end/50325 + * expmed.c (store_bit_field_1): Use extract_bit_field on big + endian targets if the source cannot be exactly covered by word + mode chunks. + +2011-11-21 Jakub Jelinek + + PR debug/50827 + * var-tracking.c (loc_cmp): For ENTRY_VALUEs use ENTRY_VALUE_EXP + macro instead of XEXP. + +2011-11-21 Andreas Tobler + + * configure: Regenerate. + +2011-11-21 Georg-Johann Lay + + * config/avr/avr.c (output_reload_in_const): Loading a byte with 0 + must not affect cc0. + * config/avr/avr.md (*movhi, *movpsi, *movsi, *movsf): Zero to any + register does not change cc0. Same for any constant to ld-register. + +2011-11-21 Uros Bizjak + + * config/i386/mmx.md (unspec) : + Move from config/i386/i386.md + (unspecv) : Ditto. + * config/i386/sse.md (unspec) : Ditto. + (unspecv) : + Ditto. + * config/i386/sync.md (unspec) : Ditto. + (unspecv) : Ditto. + (sse2_lfence): Move from config/i386/sse.md. + (*sse2_lfence): Ditto. + (sse_sfence): Ditto. + (*sse_sfence): Ditto. + (sse2_mfence): Ditto. + (mfence_sse2): Ditto. Rename from *sse2_mfence. Enable also + for TARGET_64BIT. + (mem_thread_fence): Use mfence_sse2. + +2011-11-21 Georg-Johann Lay + + * config/avr/avr.h (struct base_arch_s): Add field sfr_offset. + * config/avr/avr-devices.c: Ditto. And initialize it. + * config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in define + __AVR_SFR_OFFSET__. + * config/avr/avr-protos.h (out_movqi_r_mr, out_movqi_mr_r): Remove. + (out_movhi_r_mr, out_movhi_mr_r): Remove. + (out_movsi_r_mr, out_movsi_mr_r): Remove. + * config/avr/avr.md (*cbi, *sbi): Use %i instead of %m-0x20. + (*insv.io, *insv.not.io): Ditto. + * config/avr/avr.c (out_movsi_r_mr, out_movsi_mr_r): Make static. + (print_operand): Implement "%i" to print address as I/O address. + (output_movqi): Clean up call of out_movqi_mr_r. + (output_movhi): Clean up call of out_movhi_mr_r. + (avr_file_start): Use avr_current_arch->sfr_offset instead of + magic -0x20. Use TMP_REGNO, ZERO_REGNO instead of 0, 1. + (avr_out_sbxx_branch): Use %i instead of %m-0x20. + (out_movqi_r_mr, out_movqi_mr_r): Ditto. And make static. + (out_movhi_r_mr, out_movhi_mr_r): Ditto. And use avr_asm_len. + (out_shift_with_cnt): Clean up code: Use avr_asm_len. + (output_movsisf): Use output_reload_insisf for all CONSTANT_P sources. + (avr_out_movpsi): USE avr_out_reload_inpsi for all CONSTANT_P sources. + Clean up call of avr_out_store_psi. + (output_reload_in_const): Don't cut symbols longer than 2 bytes. + (output_reload_insisf): Filter CONST_INT_P or CONST_DOUBLE_P to + try if setting pre-cleared register is advantageous. + (avr_out_plus_1): Use gen_int_mode instead of GEN_INT. + +2011-11-20 Joey Ye + + * expr.c (expand_expr_real_1): Correctly handle strict volatile + bitfield loads smaller than mode size. + +2011-11-20 Richard Henderson + + * config/mips/mips.c (mips_init_libfuncs): Call init_sync_libfuncs. + 2011-11-20 Uros Bizjak PR target/51235 @@ -226,6 +1080,12 @@ 2011-11-17 Richard Henderson + * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): Get + new pseudo for target after convert_modes. + (rs6000_expand_atomic_exchange, rs6000_expand_atomic_op): Likewise. + +2011-11-17 Richard Henderson + * builtins.c (expand_builtin_mem_thread_fence): Remove. (expand_builtin_mem_signal_fence): Remove. (expand_builtin_atomic_thread_fence): Use expand_mem_thread_fence.