+2011-11-16 Alan Modra <amodra@gmail.com>
+
+ PR rtl-optimization/51051
+ PR bootstrap/51086
+ * function.c (thread_prologue_and_epilogue_insns): Guard
+ emitting return with single_succ_p test.
+
+2011-11-15 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * config/epiphany/epiphany.md (mov<mode>cc): Fix code to
+ get mode from CMP_OP1 if CMP_OP0 is VOIDmode.
+
+2011-11-15 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/sse.md (vec_pack_trunc_v2df): Optimize sequence for AVX.
+ (vec_pack_sfix_trunc_v2df): Ditto.
+ (vec_pack_sfix_v2df): Ditto.
+ (vec_pack_sfix_trunc_v4df): Generate fix_truncv4dfv4si2 and
+ avx_vec_concatv8si patterns.
+ (vec_pack_sfix_v4df): Generate avx_cvtpd2dq256 and
+ avx_vec_concatv8si patterns.
+
+2011-11-15 Torvald Riegel <triegel@redhat.com>
+
+ * c-parser.c (c_parser_transaction_expression): Require parentheses
+ when parsing transaction expressions.
+
+2011-11-15 Tristan Gingold <gingold@adacore.com>
+
+ * incpath.c (get_added_cpp_dirs): New function.
+ * incpath.h (get_added_cpp_dirs): Declare.
+ * config/vms/vms-c.c (vms_c_register_includes): New function.
+ (vms_std_modules): New variable.
+ * config/vms/vms.h (TARGET_EXTRA_INCLUDES): Define.
+ (vms_c_register_includes): Declare.
+
+2011-11-15 Tristan Gingold <gingold@adacore.com>
+
+ * c-family/c-pragma.h (pragma_extern_prefix): Declare.
+ * c-family/c-pragma.c (pragma_extern_prefix): Make it public.
+ * config/vms/vms-c.c (saved_extern_prefix): New variable.
+ (vms_pragma_extern_prefix): New function.
+ (vms_c_register_pragma): Register vms_pragma_extern_prefix.
+
+2011-11-15 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/49868
+ * config/avr/avr.h (ADDR_SPACE_PGM): New address spaces.
+ (REGISTER_TARGET_PRAGMAS): New define.
+ * config/avr/avr-protos.h (avr_mem_pgm_p): New.
+ (avr_load_libgcc_p): New.
+ (avr_register_target_pragmas): New.
+ (asm_output_external_libcall): Remove.
+ (avr_log_t): Add field "progmem". Order alphabetically.
+ * config/avr/avr-log.c (avr_log_set_avr_log): Set avr_log.progmem.
+ * config/avr/avr-c.c (langhooks.h): New include.
+ (avr_register_target_pragmas): New function. Register address
+ space __pgm.
+ (avr_cpu_cpp_builtins): Add built-in define __PGM.
+
+ * config/avr/avr.c: Include "c-family/c-common.h".
+ (TARGET_LEGITIMATE_ADDRESS_P): Remove define.
+ (TARGET_LEGITIMIZE_ADDRESS): Remove define.
+ (TARGET_ADDR_SPACE_SUBSET_P): Define to...
+ (avr_addr_space_subset_p): ...this new static function.
+ (TARGET_ADDR_SPACE_CONVERT): Define to...
+ (avr_addr_space_convert): ...this new static function.
+ (TARGET_ADDR_SPACE_ADDRESS_MODE): Define to...
+ (avr_addr_space_address_mode): ...this new static function.
+ (TARGET_ADDR_SPACE_POINTER_MODE): Define to...
+ (avr_addr_space_pointer_mode): ...this new static function.
+ (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define to...
+ (avr_addr_space_legitimate_address_p): ...this new static function.
+ (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Define to...
+ (avr_addr_space_legitimize_address): ...this new static function.
+ (avr_mode_code_base_reg_class): Handle address spaces.
+ (avr_regno_mode_code_ok_for_base_p): Ditto.
+ (lpm_addr_reg_rtx, lpm_reg_rtx, all_regs_rtx): New static variables.
+ (avr_option_override): Initialize them.
+ (output_reload_in_const): Use all_regs_rtx. Fix signedness of loop
+ variables.
+ (avr_pgm_segment): New static function.
+ (avr_decl_pgm_p, avr_mem_pgm_p): New static functions.
+ (avr_out_lpm, avr_out_lpm_no_lpmx): New static functions.
+ (output_movqi, output_movhi, output_movsisf, avr_out_movpsi): Call
+ avr_out_lpm to handle loads from progmem.
+ (avr_load_libgcc_p): New static function.
+ (avr_progmem_p): Test if decl is in flash.
+ (avr_pgm_pointer_const_p): New static function.
+ (avr_nonconst_pointer_addrspace): New static function.
+ (avr_pgm_check_var_decl): New static function.
+ (avr_insert_attributes): Use it. Change error message to report
+ cause (progmem or address space) when code wants to write to flash.
+ (avr_section_type_flags): Unset section flag SECTION_BSS for
+ data in progmem.
+
+ * config/avr/predicates.md (nop_general_operand): New predicate.
+ (nox_general_operand): New predicate.
+ * config/avr/avr.md (LPM_REGNO): New define_constant.
+ (load<mode>_libgcc): New expander.
+ (*load.<mode>.libgcc): New insn.
+ (mov<mode>): Handle loads from non-generic AS.
+ (movmemhi): Ditto. Propagate address space information to newly
+ created MEM.
+ (movqi_insn, *movhi, *movpsi, *movsi, *movsf): Change predicate #1
+ to nox_general_operand.
+ (ashrqi3, ashrhi3, ashrsi3): Change predicate #1 to
+ nop_general_operand.
+ (ashlqi3, *ashlqi3, ashlhi3, ashlsi3): Ditto.
+ (lshrqi3, *lshrqi3, lshrhi3, lshrsi3): Ditto.
+ (split-lpmx): New split.
+ (*ashlhi3_const, *ashlsi3_const, *ashrhi3_const, *ashrsi3_const,
+ *lshrhi3_const, *lshrsi3_const): Indent, unquote C.
+
+2011-11-15 Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ * ipa-cp.c (ipa_value_from_jfunc): Make global.
+ (ipa_cst_from_jfunc): Remove, use ipa_value_from_jfunc instead.
+ (get_indirect_edge_target): Rename, make global.
+ (devirtualization_time_bonus, estimate_local_effects,)
+ (ipcp_discover_new_direct_edges): Update.
+ * ipa-inline-analysis.c (evaluate_conditions_for_edge):
+ Generalize to also handle types. Rename to ...
+ (evaluate_properties_for_edge): Use instead of
+ evaluate_conditions_for_edge.
+ (estimate_edge_devirt_benefit): New function.
+ (estimate_calls_size_and_time): Use it.
+ (estimate_node_size_and_time, estimate_ipcp_clone_size_and_time,)
+ (inline_merge_summary): Update.
+ (do_estimate_edge_time, do_estimate_edge_growth): Update. Calculate
+ parameter information at the call site and pass it on to subroutines.
+ * tree-inline.c (estimate_num_insns): Distinguish between direct and
+ indirect calls.
+ (init_inline_once): Set size and time costs or indirect calls.
+ * tree-inline.h (eni_weights): Add indirect_call_cost.
+
+2011-11-15 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/51005
+ * tree-ssa-tail-merge.c (delete_basic_block_same_succ): Rename to
+ mark_basic_block_deleted.
+ (update_worklist): Inline purge_bbs.
+ (purge_bbs, unlink_virtual_phi, update_vuses, vop_at_entry)
+ (delete_block_update_dominator_info): Remove.
+ (replace_block_by): Remove update_vops parameter. Partially evaluate
+ for update_vops == false.
+ (apply_clusters): Remove update_vops parameter. Remove update_vops
+ argument in replace_block_by call.
+ (update_debug_stmts): Remove MAY_HAVE_DEBUG_STMTS test.
+ (tail_merge_optimize): Remove update_vops argument to apply_clusters.
+ Remove call to purge_bbs. Add calls to calculate_dominance_info and
+ free_dominance_info. Add MAY_HAVE_DEBUG_STMTS before calling
+ update_debug_stmts. Mark vop var for renaming, if necessary.
+
+2011-11-15 Bernd Schmidt <bernds@codesourcery.com>
+
+ PR rtl-optimization/51051
+ * cfgrtl.c (cfg_layout_can_merge_blocks_p): Return FALSE if the
+ move would cause fallthrough into the exit block.
+
+2011-11-14 Richard Henderson <rth@redhat.com>
+
+ * config/rs6000/rs6000.c (emit_load_locked): Assert the mode is
+ handled.
+ (emit_store_conditional): Likewise.
+ (rs6000_pre_atomic_barrier, rs6000_post_atomic_barrier): New.
+ (rs6000_adjust_atomic_subword): New.
+ (rs6000_mask_atomic_subword, rs6000_finish_atomic_subword): New.
+ (rs6000_expand_atomic_op): Rename from rs6000_emit_sync; rewrite
+ for pre-reload expansion.
+ (rs6000_split_compare_and_swap, rs6000_split_compare_and_swapqhi,
+ rs6000_expand_compare_and_swapqhi): Merge into ...
+ (rs6000_expand_atomic_compare_and_swap): ... here. New function.
+ rs6000_split_lock_test_and_set; expand immediately. Handle
+ QImode and HImode.
+ * config/rs6000/rs6000.md (UNSPEC_LWSYNC): Move and rename
+ from UNSPECV_LWSYNC.
+ * config/rs6000/sync.md (fetchopsi_constr, fetchopdi_constr): Remove.
+ (mem_thread_fence): New.
+ (hwsync): Rename from memory_barrier.
+ (*hwsync): Rename from *sync_internal.
+ (lwsync, *lwsync): Mirror hwsync implementation.
+ (isync): Don't reference memory.
+ (loadsync): New.
+ (atomic_load<INT>, atomic_store<INT>): New.
+ (ATOMIC): New mode iterator.
+ (load_locked<ATOMIC>): Rename from load_locked_<GPR>.
+ (store_conditional<ATOMIC>): Rename from store_conditional_<GPR>.
+ (sync_compare_and_swap<GPR>): Remove.
+ (sync_compare_and_swaphi, sync_compare_and_swapqi): Remove.
+ (sync_compare_and_swapqhi_internal): Remove.
+ (sync_lock_test_and_set<GPR>): Remove.
+ (sync_<FETCHOP><INT1>): Remove.
+ (*sync_<FETCHOP>si_internal, *sync_<FETCHOP>di_internal): Remove.
+ (sync_nand<INT1>, *sync_nand<GPR>_internal): Remove.
+ (sync_old_<FETCHOP><GPR>): Remove.
+ (*sync_old_<FETCHOP>si_internal): Remove.
+ (*sync_old_<FETCHOP>di_internal): Remove.
+ (sync_old_nand<INT1>): Remove.
+ (*sync_old_nand<GPR>_internal): Remove.
+ (sync_new_<FETCHOP><GPR>): Remove.
+ (*sync_new_<FETCHOP>si_internal): Remove.
+ (*sync_new_<FETCHOP>di_internal): Remove.
+ (sync_new_nand<INT1>): Remove.
+ (*sync_new_nand<GPR>_internal): Remove.
+ (*atomic_andsi, *atomic_anddi): Remove.
+ (*sync_addshort_internal, *sync_subshort_internal): Remove.
+ (*sync_andsi_internal, *sync_boolsi_internal): Remove.
+ (*sync_boolcshort_internal): Remove.
+ (sync_lock_release<INT1>): Remove.
+ (atomic_compare_and_swap<INT1>): New.
+ (atomic_exchange<INT1>): New.
+ (atomic_<FETCHOP><INT1>, atomic_nand<INT1>): New.
+ (atomic_fetch_<FETCHOP><INT1>, atomic_fetch_nand<INT1>): New.
+ (atomic_<FETCHOP>_fetch<INT1>, atomic_nand_fetch<INT1>): New.
+
+2011-11-14 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/sse.md (round<mode>2): Use register_operand for
+ operand 1 predicate.
+ (round<mode>2_sfix): Ditto.
+ (round<mode>2_vec_pack_sfix): Ditto for operand 1 and operand 2.
+
+2011-11-14 Nathan Sidwell <nathan@acm.org>
+
+ * gcov.c (canonicalize_name): Protect use of S_ISLNK.
+
+2011-11-14 Jan Hubicka <jh@suse.cz>
+
+ PR target/51126
+ * config/i386/i386.c (core cost model): Correct pasto.
+
2011-11-14 Uros Bizjak <ubizjak@gmail.com>
* config/i386/sse.md (round<mode>2_sfix): New expander.