+2012-01-17 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/51782
+ * expr.c (expand_assignment): Take address-space information
+ from the address operand of MEM_REF and TARGET_MEM_REF.
+ (expand_expr_real_1): Likewise.
+
+2012-01-17 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * ira.c (do_reload): Make sure ira_dump_file is re-set if no
+ reload dump is requested.
+
+2012-01-17 Aldy Hernandez <aldyh@redhat.com>
+
+ PR other/51165
+ * trans-mem.c (requires_barrier): Call may_be_aliased.
+
+2012-01-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/51877
+ * tree-ssa-tail-merge.c (gimple_equal_p): Don't return true whenever
+ call arguments and fndecls compare equal, instead return false if they
+ don't. Return true only if lhs1 and lhs2 are either both NULL, or
+ both SSA_NAMEs that are valueized the same, or they satisfy
+ operand_equal_p.
+
+2012-01-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * configure.ac (gcc_cv_target_dl_iterate_phdr): Only check on
+ Solaris 11+.
+ * configure: Regenerate.
+
+2012-01-16 Jan Hubicka <jh@suse.cz>
+
+ PR c/12245
+ PR c++/14179
+ * convert.c (convert_to_integer): Use fold_convert for
+ converting an INTEGER_CST to integer type.
+
+2012-01-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/14179
+ * vec.c (vec_gc_o_reserve_1): Use ggc_round_alloc_size.
+
+2012-01-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR bootstrap/51860
+ * config/s390/s390.c (s390_chunkify_start): Don't skip
+ call insns followed by NOTE_INSN_CALL_ARG_LOCATION note. Skip
+ NOTE_INSN_VAR_LOCATION and NOTE_INSN_CALL_ARG_LOCATION notes.
+ If insn is followed by NOTE_INSN_VAR_LOCATION or
+ NOTE_INSN_CALL_ARG_LOCATION notes, insert jump after all those notes.
+ Don't use location of note insns.
+
+ PR tree-optimization/51865
+ * tree-inline.c (tree_function_versioning): Call remap_decl
+ on DECL_RESULT whenever it has VOID_TYPE_P type.
+
+2012-01-15 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.c (mips16_build_call_stub): Don't use a stub
+ for calls to locally-binding MIPS16 functions if only the return
+ type uses float regs.
+
+2012-01-15 Chung-Lin Tang <cltang@codesourcery.com>
+ Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): Delete.
+ (SYMBOL_32_HIGH): Likewise.
+ (mips_output_tls_reloc_directive): Declare.
+ * config/mips/mips.h (PIC_FUNCTION_ADDR_REGNUM): Move to mips.md.
+ (mips_use_pcrel_pool_p, mips_lo_relocs, mips_hi_relocs): Declare.
+ * config/mips/mips.c (mips_use_pcrel_pool_p): New variable.
+ (mips_lo_relocs, mips_hi_relocs): Make extern.
+ (mips16_stub_function): Move up file.
+ (mips_classify_symbol): Remove SYMBOL_FORCE_TO_MEM handling.
+ (mips_symbolic_constant_p): Likewise. Remove SYMBOL_32_HIGH too.
+ (mips_symbol_insns_1): Likewise. Check mips_use_pcrel_pool_p.
+ (mips_cannot_force_const_mem): Use mips_use_pcrel_pool_p instead
+ of SYMBOL_FORCE_TO_MEM. Only check mips_tls_symbol_ref_1
+ if it's false.
+ (mips_get_tp): Add MIPS16 support.
+ (mips_legitimize_tls_address): Remove MIPS16 sorry().
+ Generalize DTPREL and TPREL handling.
+ (mips_init_relocs): Initialize mips_use_pcrel_pool_p.
+ Add MIPS16 TLS support.
+ (mips_output_tls_reloc_directive): New function.
+ (mips16_rewrite_pool_refs): Ignore UNSPEC_TLS_GET_TPs.
+ * config/mips/predicates.md (symbolic_operand_with_high)
+ (tls_reloc_operand): New predicates.
+ (force_to_mem_operand): Use mips_use_pcrel_pool_p.
+ * config/mips/mips.md (UNSPEC_UNSHIFTED_HIGH): New unspec.
+ (PIC_FUNCTION_ADDR_REGNUM): Moved from mips.h.
+ (*unshifted_high): New instruction. Use it for MIPS16
+ high splitter.
+ (consttable_tls_reloc, tls_get_tp_mips16_<mode>): New patterns.
+ (*tls_get_tp_mips16_call_<mode>): Likewise.
+
+2012-01-15 Uros Bizjak <ubizjak@gmail.com>
+
+ PR rtl-optimization/51821
+ * recog.c (peep2_find_free_register): Determine clobbered registers
+ from insn pattern.
+
+2012-01-14 Denis Chertykov <chertykov@gmail.com>
+
+ PR target/50925
+ * config/avr/avr-protos.h: Revert change of 2012-01-09.
+ * config/avr/avr.c: Likewise.
+ * config/avr/avr.h: Likewise.
+
+2012-01-13 Ian Lance Taylor <iant@google.com>
+
+ PR c++/50012
+ * tree.h (TYPE_QUALS): Add cast to int.
+ (TYPE_QUALS_NO_ADDR_SPACE): Likewise.
+
+2012-01-13 Ian Lance Taylor <iant@google.com>
+
+ * ipa-cp.c (ipa_get_indirect_edge_target): Add typecasts when
+ comparing param_index to VEC_length result.
+
+2012-01-13 Steven Bosscher <steven@gcc.gnu.org>
+
+ * c-decl.c: Do not include tree-mudflap.h
+ * tree-optimize.c: Likewise.
+ * Makefile.in: Update dependencies.
+
+2012-01-13 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/8081
+ * gimplify.c (gimplify_modify_expr_rhs): For calls with a
+ variable-sized result always use RSO.
+
+2012-01-12 DJ Delorie <dj@redhat.com>
+
+ * cfgexpand.c (convert_debug_memory_address): Allow any valid
+ pointer type, not just the default pointer type.
+
+2012-01-09 Richard Henderson <rth@redhat.com>
+ Denis Chertykov <chertykov@gmail.com>
+
+ PR target/50925
+ * config/avr/avr-protos.h (avr_hard_regno_nregs): Declare.
+ * config/avr/avr.c (avr_can_eliminate): Simplify.
+ (avr_initial_elimination_offset): Likewise.
+ (avr_prologue_setup_frame): Use hard_frame_pointer_rtx.
+ (expand_epilogue): Likewise.
+ (avr_legitimize_address): Gut.
+ (avr_legitimize_reload_address): Use hard_frame_pointer_rtx.
+ (avr_hard_regno_nregs): New.
+ (avr_hard_regno_ok): Allow only Pmode for arg and frame_pointers.
+ (avr_regno_mode_code_ok_for_base_b): Handle arg and frame pointers.
+ * config/avr/avr.h (FIXED_REGISTERS): Adjust arg pointer,
+ add soft frame pointer.
+ (CALL_USED_REGISTERS): Likewise.
+ (REG_CLASS_CONTENTS): Likewise.
+ (REGISTER_NAMES): Likewise.
+ (HARD_REGNO_NREGS): Use avr_hard_regno_nregs.
+ (HARD_FRAME_POINTER_REGNUM): New.
+ (FRAME_POINTER_REGNUM): Use soft frame pointer.
+ (ELIMINABLE_REGS): Eliminate from the soft frame pointer,
+ remove the HARD_FRAME_POINTER self-elimination.
+
+2012-01-12 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/51756
+ * config/avr/avr.c (avr_encode_section_info): Test for absence of
+ DECL_EXTERNAL when checking for initializers of progmem variables.
+
+2012-01-12 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/51799
+ * tree-vect-patterns.c (vect_recog_over_widening_pattern): Check
+ that the last operation is a type demotion.
+
+2012-01-12 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (*zero_extendsidi2_rex64): Correct movl template.
+ (x86_shift<mode>_adj_1): Remove operand constraint from operand 3.
+
+2012-01-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR bootstrap/51796
+ * combine.c (distribute_notes): If i3 is a noreturn call,
+ allow old_size to be equal to args_size and make sure the
+ noreturn call gets REG_ARGS_SIZE note.
+ * expr.c (fixup_args_size_notes): Put REG_ARGS_SIZE notes
+ on noreturn calls even when the delta is 0.
+
+2012-01-11 Nathan Sidwell <nathan@acm.org>
+
+ * gcov.c (STRING_SIZE): Remove.
+ (generate_results): Erase annotations for source files with no
+ coverage information.
+ (read_line): New.
+ (output_lines): Use it.
+
+2012-01-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gimple.h (gimplify_body): Remove first argument.
+ * gimplify.c (copy_if_shared): Add DATA argument. Do not create the
+ pointer set here, instead just pass DATA to walk_tree.
+ (unshare_body): Remove BODY_P argument and adjust. Create the pointer
+ set here and invoke copy_if_shared on the size trees of DECL_RESULT.
+ (unvisit_body): Likewise, but with unmark_visited.
+ (gimplify_body): Remove BODY_P argument and adjust.
+ (gimplify_function_tree): Adjust call to gimplify_body.
+ * omp-low.c (finalize_task_copyfn): Likewise.
+
+2012-01-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree.h (build_function_decl_skip_args): Add boolean parameter.
+ (build_function_type_skip_args): Delete.
+ * tree.c (build_function_type_skip_args): Make static and add
+ SKIP_RETURN parameter. Fix thinko in the handling of variants.
+ (build_function_decl_skip_args): Add SKIP_RETURN parameter and
+ pass it to build_function_type_skip_args.
+ * cgraph.h (cgraph_function_versioning): Add boolean parameter.
+ (tree_function_versioning): Likewise.
+ * cgraph.c (cgraph_create_virtual_clone): Adjust call to
+ build_function_decl_skip_args.
+ * cgraphunit.c (cgraph_function_versioning): Add SKIP_RETURN parameter
+ and pass it to build_function_decl_skip_args/tree_function_versioning.
+ (cgraph_materialize_clone): Adjust call to tree_function_versioning.
+ * ipa-inline-transform.c (save_inline_function_body): Likewise.
+ * trans-mem.c (ipa_tm_create_version): Likewise.
+ * tree-sra.c (modify_function): Ditto for cgraph_function_versioning.
+ * tree-inline.c (declare_return_variable): Remove always-true test.
+ (tree_function_versioning): Add SKIP_RETURN parameter. If the function
+ returns non-void and SKIP_RETURN, create a void-typed RESULT_DECL.
+ * ipa-split.c (split_function): Skip the return value for the split
+ part if it doesn't return.
+
+2012-01-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR tree-optimization/49642
+ * ipa-split.c (forbidden_dominators): New variable.
+ (check_forbidden_calls): New function.
+ (dominated_by_forbidden): Likewise.
+ (consider_split): Check for forbidden dominators.
+ (execute_split_functions): Initialize and free forbidden
+ dominators info; call check_forbidden_calls.
+
+2012-01-11 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * config/arm/arm.md (mov_notscc): Use MVN for false condition.
+
+2012-01-11 Nick Clifton <nickc@redhat.com>
+
+ * config/rx/rx.md (return): Define pattern.
+
+2012-01-11 Richard Guenther <rguenther@suse.de>
+
+ * doc/extend.texi (malloc attribute): Adjust according to
+ implementation.
+
+2012-01-10 Aldy Hernandez <aldyh@redhat.com>
+ Patrick Marlier <patrick.marlier@gmail.com>
+
+ PR middle-end/51516
+ * trans-mem.c (get_cg_data): Traverse aliases if requested.
+ (ipa_tm_scan_calls_block): Update parameters to get_cg_data.
+ (ipa_tm_note_irrevocable): Same.
+ (ipa_tm_scan_irr_block): Same.
+ (ipa_tm_decrement_clone_counts): Same.
+ (ipa_tm_scan_irr_function): Same.
+ (ipa_tm_create_version_alias): Same.
+ (ipa_tm_create_version): Same.
+ (ipa_tm_transform_calls_redirect): Same.
+ (ipa_tm_transform_calls): Same.
+ (ipa_tm_transform_transaction): Same.
+ (ipa_tm_execute): Same.
+
+2012-01-10 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/51806
+ * opts.c (common_handle_option): Handle -Werror.
+
+2012-01-10 Andreas Schwab <schwab@linux-m68k.org>
+
+ * config/m68k/sync.md ("atomic_compare_and_swap<mode>_1"): Fix
+ operand number.
+
+2012-01-10 Jason Merrill <jason@redhat.com>
+
+ * doc/invoke.texi (C++ Dialect Options): Update -fabi-version=6
+ information.
+
+2012-01-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * configure.ac (gcc_cv_as_ix86_tlsgdplt): Check if linker
+ supports R_386_TLS_GD_PLT reloc.
+ (gcc_cv_as_ix86_tlsldmplt): Check if linker
+ supports R_386_TLS_LDM_PLT reloc.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+
+2012-01-10 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/49868
+ Extend __pgmx semantics to linearize memory.
+ * config/avr/avr.md (mov<mode>): Use avr_xload_libgcc_p to
+ determine if code comes inline or from libgcc.
+ (MOVMEM_r_d:HI): Add "w" to constraint for better preference.
+ (movmem_qi, movmem_qi): Set constraint #2 to "n".
+ (movmem_qi_elpm, movmem_hi_elpm): Remove insns.
+ (movmemx_qi, movmemx_hi): New insns.
+ (xload_<mode>_libgcc): Rewrite to new insn condition.
+ (xload_<mode>): Remove insns.
+ * config/avr/avr.c (avr_out_xload): Rewrite: Only need to handle
+ cases that don't satisfy avr_xload_libgcc_p().
+ (avr_addr_space_convert): Allow converting in any direction.
+ (avr_addr_space_subset_p): Return always true.
+ (avr_xload_libgcc_p): Rewrite to fit new __pgmx semantics.
+ (avr_emit_movmemhi): Ditto.
+ (avr_out_lpm): No need to handle ADDR_SPACE_PGMX any more.
+ (avr_out_movmem): Ditto.
+ (AVR_SYMBOL_FLAG_PROGMEM): New macro.
+ (AVR_SYMBOL_SET_ADDR_SPACE): New macro.
+ (AVR_SYMBOL_GET_ADDR_SPACE): New macro.
+ (avr_encode_section_info): Encode 'progmem' in symbol flags.
+ (output_reload_in_const): Don't zero-extend any 24-bit symbols.
+
+2012-01-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50913
+ * graphite-scop-detection.c (stmt_has_simple_data_refs_p):
+ Require data-refs to be representable by Graphite with respect
+ to any loop nest.
+
+2012-01-10 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/constraints.md ("L"): Return true for 0xffffffff.
+ * config/i386/i386.c (*anddi_1): Emit AND with 0xffffffff as MOV.
+
+2012-01-10 Tom de Vries <tom@codesourcery.com>
+
+ PR rtl-optimization/51271
+ * dwarf2cfi.c (scan_trace): Save and restore cur_row->reg_save when
+ handling annulled branch.
+
+2012-01-10 Richard Henderson <rth@redhat.com>
+
+ * config/arm/arm.c (arm_vectorize_vec_perm_const_ok,
+ TARGET_VECTORIZE_VEC_PERM_CONST_OK, neon_split_vcombine, MAX_VECT_LEN,
+ struct expand_vec_perm_d, arm_expand_vec_perm_1, arm_expand_vec_perm,
+ arm_evpc_neon_vuzp, arm_evpc_neon_vzip, arm_evpc_neon_vrev,
+ arm_evpc_neon_vtrn, arm_evpc_neon_vtbl, arm_expand_vec_perm_const_1,
+ arm_expand_vec_perm_const): New.
+ * config/arm/arm-protos.h: Update.
+ * config/arm/neon.md (UNSPEC_VCONCAT): New.
+ (*neon_vswp<VDQX>): New.
+ (neon_vcombine<VDX>): Use neon_split_vcombine.
+ (neon_vtbl1v16qi, neon_vtbl2v16qi, neon_vcombinev16qi): New.
+ * config/arm/vec-common.md (vec_perm_const<VALL>): New.
+ (vec_perm<VE>): New.
+
+2012-01-10 Richard Henderson <rth@redhat.com>
+
+ * config/arm/arm.c (arm_gen_compare_reg): Add scratch argument;
+ use it if reload_completed.
+ (arm_legitimize_sync_memory, arm_emit, arm_insn_count, arm_count,
+ arm_output_asm_insn, arm_process_output_memory_barrier,
+ arm_output_memory_barrier, arm_ldrex_suffix, arm_output_ldrex,
+ arm_output_strex, arm_output_it, arm_output_op2, arm_output_op3,
+ arm_output_sync_loop, arm_get_sync_operand, FETCH_SYNC_OPERAND,
+ arm_process_output_sync_insn, arm_output_sync_insn,
+ arm_sync_loop_insns, arm_call_generator, arm_expand_sync): Remove.
+ (arm_pre_atomic_barrier, arm_post_atomic_barrier): New.
+ (arm_emit_load_exclusive, arm_emit_store_exclusive): New.
+ (emit_unlikely_jump): New.
+ (arm_expand_compare_and_swap, arm_split_compare_and_swap): New.
+ (arm_split_atomic_op): New.
+ * config/arm/arm-protos.h: Update.
+ * config/arm/arm.h (enum arm_sync_generator_tag): Remove.
+ (struct arm_sync_generator): Remove.
+ * config/arm/arm.md (VUNSPEC_SYNC_COMPARE_AND_SWAP, VUNSPEC_SYNC_LOCK,
+ VUNSPEC_SYNC_OP, VUNSPEC_SYNC_NEW_OP, VUNSPEC_SYNC_OLD_OP): Remove.
+ (VUNSPEC_ATOMIC_CAS, VUNSPEC_ATOMIC_XCHG, VUNSPEC_ATOMIC_OP): New.
+ (VUNSPEC_LL, VUNSPEC_SC): New.
+ (sync_result, sync_memory, sync_required_value, sync_new_value,
+ sync_t1, sync_t2, sync_release_barrier, sync_op): Remove.
+ (attr length): Don't use arm_sync_loop_insns.
+ (cbranch_cc, cstore_cc): Update call to arm_gen_compare_reg.
+ (movsfcc, movdfcc): Likewise.
+ * config/arm/constraints.md (Ua): New.
+ * config/arm/prediates.md (mem_noofs_operand): New.
+ (sync_compare_and_swap<QHSD>, sync_lock_test_and_set<QHSD>): Remove.
+ (sync_clobber, sync_t2_reqd): Remove.
+ (sync_<syncop><QHSD>, sync_nand<QHSD>): Remove.
+ (sync_new_<syncop><QHSD>, sync_new_nand<QHSD>): Remove.
+ (sync_old_<syncop><QHSD>, sync_old_nand<QHSD>): Remove.
+ (arm_sync_compare_and_swap<SIDI>): Remove.
+ (arm_sync_compare_and_swap<NARROW>): Remove.
+ (arm_sync_lock_test_and_set<SIDI>): Remove.
+ (arm_sync_lock_test_and_set<NARROW>): Remove.
+ (arm_sync_new_<syncop><SIDI>): Remove.
+ (arm_sync_new_<syncop><NARROW>): Remove.
+ (arm_sync_new_nand<SIDI>): Remove.
+ (arm_sync_new_nand<NARROW>): Remove.
+ (arm_sync_old_<syncop><SIDI>): Remove.
+ (arm_sync_old_<syncop><NARROW>): Remove.
+ (arm_sync_old_nand<SIDI>): Remove.
+ (arm_sync_old_nand<NARROW>): Remove.
+ (*memory_barrier): Merge arm_output_memory_barrier.
+ (atomic_compare_and_swap<QHSD>): New.
+ (atomic_compare_and_swap<NARROW>_1): New.
+ (atomic_compare_and_swap<SIDI>_1): New.
+ (atomic_exchange<QHSD>): New.
+ (cas_cmp_operand, cas_cmp_str): New.
+ (atomic_op_operand, atomic_op_str): New.
+ (atomic_<syncop><QHSD>, atomic_nand<QHSD>): New.
+ (atomic_fetch_<syncop><QHSD>, atomic_fetch_nand<QHSD>): New.
+ (atomic_<syncop>_fetch<QHSD>, atomic_nand_fetch<QHSD>): New.
+ (arm_load_exclusive<NARROW>): New.
+ (arm_load_exclusivesi, arm_load_exclusivedi): New.
+ (arm_store_exclusive<QHSD>): New.
+
+2012-01-09 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add DF
+ reload patterns if -mvsx-scalar-memory.
+
+ * config/rs6000/vsx.md (vsx_xscvspdp): Allow xscvspdp to be
+ generated, even -mno-vsx-scalar-double was used.
+ (vsx_xscvdpsp_scalar): Likewise.
+ (vsx_xscvspdp_scalar2): Likewise.
+
+2012-01-09 Tom de Vries <tom@codesourcery.com>
+ Andrew Pinski <apinski@cavium.com>
+
+ PR debug/51471
+ * reorg.c (fill_slots_from_thread): Don't speculate
+ frame-related insns.
+
+2012-01-09 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * sched-int.h (bb_note): Move to...
+ * basic-block.h: ...here.
+ * haifa-sched.c (bb_note): Move to...
+ * cfgrtl.c: ...here.
+ * function.c (next_block_for_reg): New function.
+ (move_insn_for_shrink_wrap): Likewise.
+ (prepare_shrink_wrap): Rewrite to use the above.
+
+2012-01-09 Aldy Hernandez <aldyh@redhat.com>
+
+ * gimple.c (is_gimple_non_addressable): Remove.
+ * gimple.h: Remove is_gimple_non_addressable.
+ * gimplify.c (gimplify_modify_expr_rhs): Use is_gimple_reg instead of
+ is_gimple_non_addressable.
+ * trans-mem.c (expand_assign_tm): Same.
+
+2012-01-09 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/51775
+ * tree-ssa-sccvn.c (visit_use): Value-number throwing stmts.
+ * tree-ssa-pre.c (eliminate): Properly fixup EH info.
+
2012-01-09 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
* config/arm/arm-cores.def (cortex-a15): Use cortex_a15_tune for
2012-01-06 Torvald Riegel <triegel@redhat.com>
PR rtl-optimization/51771
- * builtin-attrs.def (ATTR_RETURNS_TWICE, ATTR_TM_NOTHROW_RT_LIST):
- New.
+ * builtin-attrs.def (ATTR_RETURNS_TWICE, ATTR_TM_NOTHROW_RT_LIST): New.
* gtm-builtins.def (BUILT_IN_TM_START): Add returns-twice attrib.
2012-01-05 Eric Botcazou <ebotcazou@adacore.com>