rtl.def (ATTR_FLAG): Remove probability indicating flags.
[platform/upstream/gcc.git] / gcc / ChangeLog
index 264c997..f09c70e 100644 (file)
@@ -1,8 +1,994 @@
+2012-05-04  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * rtl.def (ATTR_FLAG): Remove probability indicating flags.
+       * genattr.c (main): Remove ATTR_FLAG_likely, ATTR_FLAG_unlikely,
+       ATTR_FLAG_very_likely, and ATTR_FLAG_very_unlikely.
+       * reorg.c (get_jump_flags): Do not set the removed flags.
+
+2012-05-04  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/53228
+       * config/i386/i386.h (X86_ARCH_CMOV): Rename from X86_ARCH_CMOVE.
+       (TARGET_CMOV): Rename from TARGET_CMOVE.
+       (TARGET_CMOVE): New define.
+       * config/i386/i386.c (ix86_option_override_internal): Use TARGET_CMOV.
+       Do not set TARGET_CMOVE here.
+
+2012-05-04  Dodji Seketeli  <dodji@redhat.com>
+
+       Enable -Wunused-local-typedefs when -Wall or -Wunused is on
+       * opts.c (finish_options): Activate -Wunused-local-typedefs if
+       -Wunused is activated.
+       * doc/invoke.texi: Update blurb of -Wunused-local-typedefs.
+
+2012-05-04  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+       * config/s390/s390.md (*movmem_short, *clrmem_short)
+       (*cmpmem_short): Move the mode check from the insn condition to
+       the match_scratch.
+
+2012-05-04  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+       PR tree-optimization/52633
+       * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Swap order of
+       vect_recog_widen_shift_pattern and vect_recog_over_widening_pattern.
+       (vect_recog_over_widening_pattern): Remove handling of code that was
+       already detected as over-widening pattern.  Remove special handling
+       of "unsigned" cases.  Instead, support general case of conversion
+       of the shift result to another type.
+
+2012-05-04  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+       * tree-vect-patterns.c (vect_single_imm_use): New function.
+       (vect_recog_widen_mult_pattern): Use it instead of open-coding loop.
+       (vect_recog_over_widening_pattern): Likewise.
+       (vect_recog_widen_shift_pattern): Likewise.
+
+2012-05-04  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+       * tree-vect-patterns.c (vect_same_loop_or_bb_p): New function.
+       (vect_handle_widen_op_by_const): Use it instead of open-coding test.
+       (vect_recog_widen_mult_pattern): Likewise.
+       (vect_operation_fits_smaller_type): Likewise.
+       (vect_recog_over_widening_pattern): Likewise.
+       (vect_recog_widen_shift_pattern): Add to vect_same_loop_or_bb_p test.
+
+2012-05-04  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/50602
+       * lto-wrapper.c (merge_and_complain): Complain about mismatches
+       of -freg-struct-return and -fpcc-struct-return.
+       (run_gcc): Pass through -freg-struct-return and -fpcc-struct-return
+       from the input file options and ignore those from the link
+       command line.
+
+2012-05-04  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/53168
+       * tree-ssa-pre.c (phi_translate_1): Only handle type-punned
+       memory reads when the result is a constant we can pun.
+
+2012-05-04  Richard Guenther  <rguenther@suse.de>
+
+       * common.opt (flto-report): Do not mark as Optimization.
+
+2012-05-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR target/48496
+       * recog.c (constrain_operands): If extra constraints are present, also
+       accept pseudo-registers with equivalent memory locations during reload.
+
+2012-05-04  Olivier Hainque  <hainque@adacore.com>
+
+       * collect2.c (may_unlink_output_file): New global.
+       (maybe_unlink): Honor it.
+       * collect2.h: Add extern for it.
+       * tlink.c (do_tlink): Set it to true if the link succeeded.
+
+2012-05-04  Olivier Hainque  <hainque@adacore.com>
+
+       * gcc.c (eval_spec_function): Finalize/restore the current string
+       obstack state as part of the context push/pop operations.
+
+2012-05-04  Bin Cheng  <bin.cheng@arm.com>
+
+       PR rtl-optimization/52804
+       * reload1.c (reload_reg_reaches_end_p): Check whether successor
+       reload with type RELOAD_FOR_INPUT_ADDRESS kills reload register
+       of current one with type RELOAD_FOR_INPADDR_ADDRESS.
+       Same stands for reloads with type RELOAD_FOR_OUTPUT_ADDRESS and
+       RELOAD_FOR_OUTADDR_ADDRESS.
+
+2012-05-04  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       PR c++/24985
+       * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): Show caret
+       for macro expansion.
+
+2012-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       * flags.h (flag_permissive): Do not declare.
+       * diagnostic.c (diagnostic_report_diagnostic): Handle fpermissive
+       option specially.
+       * toplev.c (flag_permissive): Do not define.
+       * c-tree.h (system_header_p): Delete unused.
+
+2012-05-03  David S. Miller  <davem@davemloft.net>
+
+       PR target/52684
+       * config/sparc/sparc.c (emit_soft_tfmode_libcall): If we pass a
+       MEM directly into a libcall, mark it's MEM_EXPR as addressable.
+       (sparc_emit_float_lib_cmp): Likewise.
+
+2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       PR target/53199
+       * config/rs6000/rs6000.md (bswapdi splitters): If
+       -mavoid-indexed-addresses (or -mcpu=power6 which sets it by
+       default) is used, generate an alternate sequence that does not
+       depend on using indexed addressing.
+
+2012-05-03  Jason Merrill  <jason@redhat.com>
+
+       * gengtype.c (write_types): Fix warning message.
+       (write_local): Likewise.
+
+2012-05-02  Jason Merrill  <jason@redhat.com>
+
+       * dwarf2out.c (struct external_ref, build_local_stub): New.
+       (hash_external_ref, external_ref_eq, lookup_external_ref): New.
+       (optimize_external_refs, optimize_external_refs_1): New.
+       (change_AT_die_ref): New.
+       (clone_as_declaration): Add DW_AT_signature when cloning a declaration.
+       (build_abbrev_table): Take the external refs hashtable.
+       (output_comp_unit): Get it from optimize_external_refs and pass it in.
+
+2012-05-03  Jan Hubicka  <jh@suse.cz>
+
+       PR middle-end/53093
+       * tree-emutls.c (new_emutls_decl): Fix handling of aliases.
+
+2012-05-03  Jan Hubicka  <jh@suse.cz>
+
+       PR middle-end/53106
+       * ipa.c (cgraph_remove_unreachable_nodes): Fix handling of clones.
+
+2012-05-03  Jason Merrill  <jason@redhat.com>
+
+       * dwarf2out.c (die_struct): Add comdat_type_p flag.  Use it instead of
+       use_debug_types to discriminate the die_id union.
+       (print_die, assign_symbol_names, copy_decls_walk): Likewise.
+       (build_abbrev_table, output_die): Likewise.
+       (prune_unused_types_walk_attribs): Likewise.
+       (generate_type_signature, copy_declaration_context): Set it.
+       (remove_child_or_replace_with_skeleton): Set it.
+       (dwarf2out_start_source_file, dwarf2out_end_source_file): Don't
+       check use_debug_types.
+       (dwarf2out_finish): Do break_out_includes after .debug_types.
+
+2012-05-03  Jason Merrill  <jason@redhat.com>
+
+       * dwarf2out.c (modified_type_die): Use scope_die_for.
+       (gen_type_die_with_usage, dwarf2out_finish): Likewise.
+       (uses_local_type_r, uses_local_type): New.
+       (scope_die_for): Keep a type that uses a local type in local scope.
+       Use get_context_die for namespace and type scope.
+
+2012-05-03  Jason Merrill  <jason@redhat.com>
+
+       * config/i386/i386.c (ix86_code_end): Set DECL_IGNORED_P on the
+       pc thunk.
+       * dwarf2out.c (output_aranges): Skip DECL_IGNORED_P functions.
+       (dwarf2out_finish): Likewise.
+
+2012-05-03  Martin Jambor  <mjambor@suse.cz>
+
+       * builtins.c (get_object_alignment_1): Return whether we can determine
+       the alignment or conservatively assume byte alignment.  Return the
+       alignment by reference.  Use get_pointer_alignment_1 for dereference
+       alignment.
+       (get_pointer_alignment_1): Return whether we can determine the
+       alignment or conservatively assume byte alignment.  Return the
+       alignment by reference.  Use get_ptr_info_alignment to get SSA name
+       alignment.
+       (get_object_alignment): Update call to get_object_alignment_1.
+       (get_object_or_type_alignment): Likewise, fall back to type alignment
+       only when it returned false.
+       (get_pointer_alignment): Update call to get_pointer_alignment_1.
+       * fold-const.c (get_pointer_modulus_and_residue): Update call to
+       get_object_alignment_1.
+       * ipa-prop.c (ipa_modify_call_arguments): Update call to
+       get_pointer_alignment_1.
+       * tree-sra.c (build_ref_for_offset): Likewise, fall back to the type
+       of MEM_REF or TARGET_MEM_REF only when it returns false.
+       * tree-ssa-ccp.c (get_value_from_alignment): Update call to
+       get_object_alignment_1.
+       (ccp_finalize): Use set_ptr_info_alignment.
+       * tree.h (get_object_alignment_1): Update declaration.
+       (get_pointer_alignment_1): Likewise.
+       * gimple-pretty-print.c (dump_gimple_phi): Use get_ptr_info_alignment.
+       (dump_gimple_stmt): Likewise.
+       * tree-flow.h (ptr_info_def): Updated comments of fields align and
+       misalign.
+       (get_ptr_info_alignment): Declared.
+       (mark_ptr_info_alignment_unknown): Likewise.
+       (set_ptr_info_alignment): Likewise.
+       (adjust_ptr_info_misalignment): Likewise.
+       * tree-ssa-address.c (copy_ref_info): Use new access functions to get
+       and set alignment of SSA names.
+       * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Call
+       mark_ptr_info_alignment_unknown.
+       * tree-ssanames.c (get_ptr_info_alignment): New function.
+       (mark_ptr_info_alignment_unknown): Likewise.
+       (set_ptr_info_alignment): Likewise.
+       (adjust_ptr_info_misalignment): Likewise.
+       (get_ptr_info): Call mark_ptr_info_alignment_unknown.
+       * tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref):
+       Likewise.
+       (bump_vector_ptr): Likewise.
+       * tree-vect-stmts.c (create_array_ref): Use set_ptr_info_alignment.
+       (vectorizable_store): Likewise.
+       (vectorizable_load): Likewise.
+
+2012-05-03  Michael Matz  <matz@suse.de>
+
+       * basic-block.h (struct rtl_bb_info, struct gimple_bb_info): Move
+       in front of basic_block_def.
+       (struct basic_block_def): Make il.gimple the full struct, not a
+       pointer.
+       (__assert_gimple_bb_smaller_rtl_bb): Asserting typedef.
+
+       * cfgexpand.c (expand_gimple_basic_block): Clear all il.gimple members.
+       * gimple-iterator.c (gimple_stmt_iterator): Don't special case
+       NULL il.gimple, which can't happen anymore.
+       * gimple.h (bb_seq): il.gimple can't be NULL.
+       (bb_seq_add): Ditto.
+       (set_bb_seq): Adjust.
+       (gsi_start_bb, gsi_last_bb): Tidy.
+       * lto-streamer-in.c (make_new_block): Don't zero members that
+       are zeroed already, don't allocate a gimple_bb_info.
+       * tree-cfg.c (create_bb): Don't allocate a gimple_bb_info.
+       (remove_bb): Clear all il.gimple members.
+       (gimple_verify_flow_info): Adjust for flat il.gimple.
+       * tree-flow-inline.h (phi_nodes, phi_nodes_ptr, set_phi_nodes): Adjust.
+
+       * coretypes.h (const_gimple_seq): Remove typedef.
+       * gimple.h (gimple_seq_first): Take gimple_seq.
+       (gimple_seq_first_stmt): Ditto.
+       (gimple_seq_last): Ditto.
+       (gimple_seq_last_stmt): Ditto.
+       (gimple_seq_empty_p): Ditto.
+
+2012-05-03  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-pre.c (valid_in_sets): Remove checking of trapping
+       operations.
+       (prune_clobbered_mems): Do it here.  Do not uselessly sort expressions.
+       (compute_avail): Do not add possibly trapping operations to
+       EXP_GEN if they might not be executed in the block.
+
+2012-05-03  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Remove.
+
+2012-05-03  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * tree-switch-conversion.c (gen_inbound_check): Free post-dominance
+       information as early as possible.  Update dominance info instead of
+       discarding it.
+
+2012-05-03  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-pre.c (debug_bitmap_sets_for): New function.
+       (union_contains_value): Remove.
+       (vro_valid_in_sets): Likewise.
+       (op_valid_in_sets): New function.
+       (valid_in_sets): Use op_valid_in_sets.
+       (insert_into_preds_of_block): Move dumping ...
+       (do_regular_insertion): ... here.
+       (do_partial_partial_insertion): ... and here.  Dump that
+       we've found a partial partial redundancy.
+       (insert): Dump the current insert iteration.
+
+2012-05-03  Jakub Jelinek  <jakub@redhat.com>
+
+       PR plugins/53126
+       * gcc-ar.c (main): If GCC_EXEC_PREFIX is set in env,
+       append program name to it and pass that as first argument
+       to make_relative_prefix.  Always pass standard_libexec_prefix
+       as last argument to make_relative_prefix.  If
+       make_relative_prefix returns NULL, fall back to
+       standard_libexec_prefix.
+
+       PR debug/53174
+       * tree-predcom.c (remove_stmt): Call reset_debug_uses on stmts being
+       removed.
+
+       PR target/53187
+       * config/arm/arm.c (arm_select_cc_mode): If x has MODE_CC class
+       mode, return that mode.
+
+       PR target/53194
+       * config/i386/i386-c.c (ix86_target_macros_internal): Don't
+       define __ATOMIC_HLE_* macros here.
+       (ix86_target_macros): But here, using cpp_define_formatted.
+
+2012-05-03  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/53144
+       * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_constant_for_pieces):
+       Rename to ...
+       (vn_reference_lookup_or_insert_for_pieces): ... this.  Properly deal
+       with SSA name values.
+       (vn_reference_lookup_3): Adjust callers.
+
+2012-05-03  Ganesh Gopalasubramanian  <Ganesh.Gopalasubramanian@amd.com>
+
+       * config/i386/driver-i386.c (host_detect_local_cpu): Reset
+       has_fma4 for AMD processors with both fma3 and fma4 support.
+
+2012-05-03  Kirill Yukhin  <kirill.yukhin@intel.com>
+
+       PR target/53201
+       * config/i386/driver-i386.c (host_detect_local_cpu): Add space to
+       "-mno-hle".
+
+2012-05-03  Michael Matz  <matz@suse.de>
+
+       PR bootstrap/53197
+       * tree-ssa-dse.c (dse_optimize_stmt): Take pointer to iterator.
+       (dse_enter_block): Properly iterate the whole sequence even
+       if the last statement was removed.
+
+2012-05-02  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * config/alpha/vms.h (SUBTARGET_OVERRIDE_OPTIONS): For pic code,
+       unset flag_jump_tables.
+       * stmt.c (expand_case): Remove special flag_pic case conditional
+       on ASM_OUTPUT_ADDR_DIFF_ELT not being defined.
+
+2012-05-02  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+       * common/config/s390/s390-common.c (s390_option_optimization_table):
+       Enable -fsched-pressure using -fsched-pressure-algorithm=model by
+       default when optimizing.
+
+2012-05-02  Martin Jambor  <mjambor@suse.cz>
+
+       PR lto/52605
+       * dwarf2out.c (dwarf2out_decl): Only lookup die representing context
+       of a variable when the contect is a function.
+
+2012-05-02  Michael Matz  <matz@suse.de>
+
+       * coretypes.h (gimple_seq, const_gimple_seq): Typedef as gimple.
+       * gimple.h (struct gimple_seq_node_d, struct gimple_seq_d): Remove.
+       (const_gimple_seq_node): Remove.
+       (gimple_seq_node): Typedef as gimple.
+       (struct gimple_statement_base): Add next and prev members,
+       adjust all WORD markers in using structs.
+       (union gimple_statement_d): Link via gsbase.next field for GC and PCH.
+       (gimple_seq_first, gimple_seq_first_stmt, gimple_seq_last,
+       gimple_seq_last_stmt): Adjust as gimple_seq, gimple_seq_node and
+       gimple are the same.
+       (gimple_seq_set_last, gimple_seq_set_first): Don't allocate
+       gimple_seq, adjust.
+       (gimple_init_singleton): New function.
+       (gsi_start_1, gsi_last_1, gsi_end_p, gsi_one_before_end_p): Adjust.
+       (gsi_next, gsi_prev): Adjust, handle prev cyclic list correctly.
+       (gsi_stmt): Adjust.
+       (gsi_stmt_ptr): Remove.
+       (enum gimple_alloc_kind): Remove gimple_alloc_kind_seq member.
+
+       * gimple-iterator.c (update_bb_for_stmts): Take last parameter
+       again, adjust for above changes.
+       (update_call_edge_frequencies): Adjust for above changes.
+       (gsi_insert_seq_nodes_before): Rewrite for new data structure.
+       (gsi_insert_seq_nodes_after): Ditto.
+       (gsi_split_seq_after): Ditto.
+       (gsi_set_stmt): Ditto.
+       (gsi_split_seq_before): Ditto.
+       (gsi_remove): Ditto.
+       (gsi_insert_seq_before_without_update): Don't free sequence.
+       (gsi_insert_seq_after_without_update): Ditto.
+       (gsi_replace): Assert some more invariants.
+       (gsi_insert_before_without_update, gsi_insert_after_without_update):
+       Tidy.
+       (gsi_for_stmt): Don't search for stmt.
+       (gsi_insert_on_edge_immediate): Tidy.
+
+       * gimple.c (gimple_alloc_k): Remove "sequences".
+       (gimple_seq_cache): Remove.
+       (gimple_alloc_stat): Make stmt a singleton sequence.
+       (gimple_seq_alloc, gimple_seq_free): Remove.
+       (gimple_assign_set_rhs_with_ops_1): Ensure new stmt is a singleton.
+       (gimple_copy): Ditto.
+       * gimplify.c (gimplify_cleanup_point_expr): Use gsi_set_stmt,
+       create iterator from correct sequence.
+       * tree-phinodes.c (make_phi_node): Make stmt a singleton.
+
+2012-05-02  Michael Matz  <matz@suse.de>
+
+       * gimple.h (gimple_stmt_iterator <seq>): Make it be pointer to
+       gimple_seq.
+       (gimple_seq_set_last, gimple_seq_set_first): Take pointer to
+       sequence, lazily allocate it.
+       (bb_seq_addr): New function.
+       (gsi_start_1): Rename from gsi_start, but take pointer to sequence.
+       (gsi_start): Macro to wrap gsi_start_1 taking pointer of argument.
+       (gsi_none): New function.
+       (gsi_start_bb): Adjust.
+       (gsi_last_1): Rename from gsi_last, but take pointer to sequence.
+       (gsi_last): Macro to wrap gsi_last_1 taking pointer of argument.
+       (gsi_last_bb): Adjust.
+       (gsi_seq): Adjust.
+       * tree-flow-inline.h (phi_nodes_ptr): New function.
+
+       * gimple-iterator.c (gsi_insert_seq_nodes_before): Adjust to
+       datastructure and interface change.
+       (gsi_insert_seq_before_without_update): Ditto.
+       (gsi_insert_seq_nodes_after): Ditto.
+       (gsi_insert_seq_after_without_update): Ditto.
+       (gsi_split_seq_after): Ditto, don't use gimple_seq_alloc.
+       (gsi_split_seq_before): Ditto.
+       (gsi_start_phis): Adjust.
+       * tree-vect-loop.c (vect_determine_vectorization_factor): Use gsi_none.
+       (vect_transform_loop): Ditto.
+       * gimple.c (gimple_seq_add_stmt, gimple_seq_add_seq,
+       gimple_seq_copy): Don't use gimple_seq_alloc.
+       * gimplify.c (gimple_seq_add_stmt_without_update): Ditto.
+       (gimplify_seq_add_seq): Ditto.
+       * lto-streamer-in.c (make_new_block): Ditto.
+       * tree-cfg.c (create_bb): Ditto.
+       * tree-sra.c (initialize_parameter_reductions): Ditto.
+
+2012-05-02  Michael Matz  <matz@suse.de>
+
+       * gimple.h (gimple_seq_first, gimple_seq_first_stmt, gimple_seq_last,
+       gimple_seq_last_stmt, gimple_seq_set_last, gimple_seq_set_first,
+       gimple_seq_empty_p, gimple_seq_alloc_with_stmt, bb_seq,
+       set_bb_seq): Move down to after gimple_statement_d definition.
+
+2012-05-02  Michael Matz  <matz@suse.de>
+
+       * gimple-fold.c (gimplify_and_update_call_from_tree): Use
+       gsi_replace_with_seq, instead of inserting itself.
+       * gimple-iterator.c (gsi_replace_with_seq): New function.
+       * tree-ssa-forwprop.c (forward_propagate_comparison): Take
+       iterator instead of statement, advance it.
+       (ssa_forward_propagate_and_combine): Adjust call to above.
+
+2012-05-02  Michael Matz  <matz@suse.de>
+
+       * tree-phinodes.c (add_phi_node_to_bb): Tidy, don't use
+       gimple_seq_alloc.
+       * omp-low.c (finalize_task_copyfn): Don't use gimple_seq_alloc.
+       * tree-nested.c (walk_gimple_omp_for): Ditto.
+       * trans-mem.c (lower_transaction): Ditto.
+       * tree-eh.c (do_return_redirection): Ditto.
+       (do_goto_redirection): Ditto.
+       (lower_try_finally_switch): Ditto.
+       * gimplify.c (gimplify_stmt): Ditto.
+       (gimplify_scan_omp_clauses): Ditto.
+       (gimplify_omp_for): Ditto.
+       (gimplify_function_tree): Ditto.
+       * gimple-fold.c (gimplify_and_update_call_from_tree): Ditto.
+       * tree-mudflap.c (mf_decl_cache_locals): Ditto.
+       (mf_build_check_statement_for): Ditto.
+       (mx_register_decls): Ditto.
+       * graphite-sese-to-poly.c (remove_invariant_phi): Ditto,
+       and don't use itertors to append.
+       (insert_stmts): Ditto.
+       (insert_out_of_ssa_copy): Ditto.
+       (insert_out_of_ssa_copy_on_edge): Ditto.
+
+2012-05-02  Michael Matz  <matz@suse.de>
+
+       * gimple.h (gimple_bind_body_ptr): New function.
+       (gimple_bind_body): Use it.
+       (gimple_catch_handler): Use gimple_catch_handler_ptr.
+       (gimple_eh_filter_failure_ptr): New function.
+       (gimple_eh_filter_failure): Use it.
+       (gimple_eh_else_n_body_ptr): New function.
+       (gimple_eh_else_n_body): Use it.
+       (gimple_eh_else_e_body_ptr): New function.
+       (gimple_eh_else_e_body): Use it.
+       (gimple_try_eval_ptr): New function.
+       (gimple_try_eval): Use it.
+       (gimple_try_cleanup_ptr): New function.
+       (gimple_try_cleanup): Use it.
+       (gimple_wce_cleanup_ptr): New function.
+       (gimple_wce_cleanup): Use it.
+       (gimple_omp_body_ptr): New function.
+       (gimple_omp_body): Use it.
+       (gimple_omp_for_pre_body_ptr): New function.
+       (gimple_omp_for_pre_body): Use it.
+       (gimple_transaction_body_ptr): New function.
+       (gimple_transaction_body): Use it.
+       (gsi_split_seq_before): Adjust to return nothing and take pointer
+       to sequence.
+       (gsi_set_stmt): Declare.
+       (gsi_replace_with_seq): Declare.
+       (walk_gimple_seq_mod): Declare.
+       * function.h (struct function <gimple_body>): Use typedef gimple_seq.
+
+       * gimple-iterator.c (gsi_set_stmt): New function.
+       (gsi_split_seq_before): Return new sequence via pointer argument.
+       (gsi_replace): Use gsi_set_stmt.
+
+       * tree-ssa-loop-im.c (move_computations_stmt): First remove
+       then insert stmt.
+       * tree-complex.c (update_complex_components_on_edge): Don't copy gsi.
+       * tree-phinodes.c (resize_phi_node): Don't resize stmt in-place,
+       return new stmt.
+       (reserve_phi_args_for_new_edge): Change call to above,
+       use gsi_set_stmt.
+
+       * omp-low.c (lower_omp): Change prototype to take pointer to sequence.
+       (lower_rec_input_clauses): Use gimple_seq_add_seq instead of
+       iterators.  Adjust call to lower_omp.
+       (lower_lastprivate_clauses): Adjust call to lower_omp.
+       (lower_reduction_clauses): Ditto.
+       (expand_omp_taskreg): Nullify non-cfg body of child_fn.
+       (lower_omp_sections): Don't explicitely count sequence length,
+       nullify lowered bodies earlier, ensure stmts are part of only
+       one sequence, adjust call to lower_omp.
+       (lower_omp_single): Ensure stmts are part of only one sequence,
+       adjust call to lower_omp.
+       (lower_omp_master): Ditto.
+       (lower_omp_ordered): Ditto.
+       (lower_omp_critical): Ditto.
+       (lower_omp_for): Ditto.
+       (lower_omp_taskreg): Ditto, tidy.
+       (lower_omp_1): Adjust calls to lower_omp.
+       (execute_lower_omp): Ditto.
+       (lower_omp): Adjust to take pointer to sequence.
+       (diagnose_sb_2): Use walk_gimple_seq_mod.
+       (diagnose_omp_structured_block_errors): Ditto and set possibly
+       changed function body.
+       * gimple-low.c (lower_function_body): Set function body after
+       it stabilizes.
+       (lower_sequence): Adjust to take pointer to sequence.
+       (lower_omp_directive): Ensure stmt isn't put twice into the
+       sequence, adjust call to lower_sequence.
+       (lower_stmt): Adjust calls to lower_sequence.
+       (lower_gimple_bind): Ditto.
+       (gimple_try_catch_may_fallthru): Call gsi_start with lvalue.
+       * tree-nested.c (walk_body): Take pointer to sequence, use
+       walk_gimple_seq_mod.
+       (walk_function): Adjust call to walk_body, set possibly changed body.
+       (walk_gimple_omp_for): Adjust calls to walk_body.
+       (convert_nonlocal_omp_clauses): Ditto.
+       (convert_nonlocal_reference_stmt): Ditto.
+       (convert_local_omp_clauses): Ditto.
+       (convert_local_reference_stmt): Ditto.
+       (convert_tramp_reference_stmt): Ditto.
+       (convert_gimple_call): Ditto.
+       (convert_nl_goto_reference): Use local iterator copy.
+       * gimple.c (walk_gimple_seq_mod): Renamed from walk_gimple_seq,
+       but taking pointer to sequence, ensure gsi_start is called with
+       callers lvalue.
+       (walk_gimple_seq): New wrapper around walk_gimple_seq_mod,
+       asserting that the sequence head didn't change.
+       (walk_gimple_stmt): Replace all calls to walk_gimple_seq with
+       walk_gimple_seq_mod.
+       * trans-mem.c (lower_transaction): Use walk_gimple_seq_mod.
+       (execute_lower_tm): Ditto, and set possibly changed body.
+       * tree-eh.c (lower_eh_constructs_1): Take pointer to sequence,
+       call gsi_start with that lvalue.
+       (replace_goto_queue_stmt_list): Ditto.
+       (replace_goto_queue_1): Adjust calls to replace_goto_queue_stmt_list.
+       (replace_goto_queue): Ditto.
+       (lower_try_finally_nofallthru): Adjust calls to lower_eh_constructs_1.
+       (lower_try_finally_onedest): Ditto.
+       (lower_try_finally_copy): Ditto.
+       (lower_try_finally_switch): Ditto.
+       (lower_try_finally): Ditto.
+       (lower_eh_filter): Ditto.
+       (lower_eh_must_not_throw): Ditto.
+       (lower_cleanup): Ditto.
+       (lower_eh_constructs_2): Ditto.
+       (lower_catch): Ditto, and ensure gsi_start is called with lvalue.
+       (lower_eh_constructs): Adjust calls to lower_eh_constructs_1, and
+       set possibly changed body.
+       (optimize_double_finally): Call gsi_start with lvalue.
+
+       * tree-cfg.c (make_blocks): Adjust call to gsi_split_seq_before.
+       (gimple_split_block): Ditto.
+       (gimple_merge_blocks): Use gsi_start_phis.
+       (move_stmt_r): Use walk_gimple_seq_mod.
+       * tree-ssa-dse.c (dse_enter_block): Use gsi_last_bb.
+       * cgraphbuild.c (build_cgraph_edges): Use gsi_start_phis.
+       (rebuild_cgraph_edges): Ditto.
+       (cgraph_rebuild_references): Ditto.
+       * ipa-prop.c (ipa_analyze_params_uses): Ditto.
+       * tree-inline.c (copy_phis_for_bb): Ditto.
+       * tree-ssa-dce.c: Ditto.
+
+       * cgraphunit.c (cgraph_analyze_function): Use gimple_has_body_p.
+
+2012-05-02  Kirill Yukhin  <kirill.yukhin@intel.com>
+           Andi Kleen <ak@linux.intel.com>
+
+       * coretypes.h (MEMMODEL_MASK): New.
+       * builtins.c (get_memmodel): Add val. Call target.memmodel_check
+       and return new variable.
+       (expand_builtin_atomic_exchange):  Mask memmodel values.
+       (expand_builtin_atomic_compare_exchange): Ditto.
+       (expand_builtin_atomic_load): Ditto.
+       (expand_builtin_atomic_store): Ditto.
+       (expand_builtin_atomic_clear): Ditto.
+       * doc/extend.texi: Mention port-dependent memory model flags.
+       * config/i386/cpuid.h (bit_HLE): New.
+       * config/i386/driver-i386.c (host_detect_local_cpu): Detect
+       HLE support.
+       * config/i386/i386-protos.h (ix86_generate_hle_prefix): New.
+       * config/i386/i386-c.c (ix86_target_macros_internal): Set HLE defines.
+       (ix86_target_string)<-mhle>: New.
+       (ix86_valid_target_attribute_inner_p) <OPT_mhle>: Ditto.
+       * config/i386/i386.c (ix86_target_string) <OPTION_MASK_ISA_HLE>: New.
+       (ix86_valid_target_attribute_inner_p) <OPT_mhle>: Ditto.
+       (ix86_option_override_internal) <PTA_HLE>: New switch, set it
+       enabled for generic, generic64 and core-avx2.
+       (ix86_print_operand): Generate HLE lock prefixes.
+       (ix86_memmodel_check): New.
+       (TARGET_MEMMODEL_CHECK): Ditto.
+       * config/i386/i386.h (OPTION_ISA_HLE): Ditto.
+       (IX86_HLE_ACQUIRE): Ditto.
+       (IX86_HLE_RELEASE): Ditto.
+       * config/i386/i386.h (ix86_generate_hle_prefix): Ditto.
+       * config/i386/i386.opt (mhle): Ditto.
+       * config/i386/sync.md(atomic_compare_and_swap<mode>): Pass
+       success model to instruction emitter.
+       (atomic_fetch_add<mode>): Ditto.
+       (atomic_exchange<mode>): Ditto.
+       (atomic_add<mode>): Ditto.
+       (atomic_sub<mode>): Ditto.
+       (atomic_<code><mode>): Ditto.
+       (*atomic_compare_and_swap_doubledi_pic): Ditto.
+       (atomic_compare_and_swap_single<mode>): Define and use argument
+       for success model.
+       (atomic_compare_and_swap_double<mode>): Ditto.
+       * configure.ac: Check if assembler support HLE prefixes.
+       * configure: Regenerate.
+       * config.in: Ditto.
+
+2012-05-02  Steven Bosscher  <steven@gcc.gnu.org>
+
+       PR middle-end/53153
+       * gimplify.c (preprocess_case_label_vec_for_gimple): New function,
+       split out from ...
+       (gimplify_switch_expr): ... here.
+       * gimple.h (preprocess_case_label_vec_for_gimple): Add prototype.
+       * tree-ssa-forwprop.c (simplify_gimple_switch_label_vec): New function
+       to clean up case labels with values outside the index type range.
+       (simplify_gimple_switch): Call it if something changed.
+       Remove strange and unnecessary assert.
+
+2012-05-02  Richard Guenther  <rguenther@suse.de>
+
+       * fold-const.c (div_if_zero_remainder): sizetypes no longer
+       sign-extend.
+       (int_const_binop_1): New worker for int_const_binop with
+       overflowable parameter.  Pass it through to force_fit_type_double.
+       (int_const_binop): Wrap around int_const_binop_1 with overflowable
+       equal to one.
+       (size_binop_loc): Call int_const_binop_1 with overflowable equal
+       to minus one, forcing overflow detection for even unsigned types.
+       (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE special-casing.
+       (fold_binary_loc): Call try_move_mult_to_index with signed offset.
+       * stor-layout.c (initialize_sizetypes): sizetypes no longer
+       sign-extend.
+       (layout_type): For zero-sized arrays ignore overflow on the
+       size calculations.
+       * tree-ssa-ccp.c (bit_value_unop_1): Likewise.
+       (bit_value_binop_1): Likewise.
+       * tree.c (double_int_to_tree): Likewise.
+       (double_int_fits_to_tree_p): Likewise.
+       (force_fit_type_double): Likewise.
+       (host_integerp): Likewise.
+       (int_fits_type_p): Likewise.
+       * varasm.c (output_constructor_regular_field): Sign-extend the
+       field-offset to cater for negative offsets produced by the Ada
+       frontend.
+       * omp-low.c (extract_omp_for_data): Convert the loop step to
+       signed for pointer adjustments.
+
+2012-05-02  Richard Guenther  <rguenther@suse.de>
+
+       * tree.c (valid_constant_size_p): New function.
+       * tree.h (valid_constant_size_p): Declare.
+       * cfgexpand.c (expand_one_var): Adjust check for too large
+       variables by using valid_constant_size_p.
+       * varasm.c (assemble_variable): Likewise.
+
+       * c-decl.c (grokdeclarator): Properly check for sizes that
+       cover more than half of the address-space.
+
+2012-05-02  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/53163
+       * tree-ssa-phiopt.c (cond_if_else_store_replacement): Don't ignore
+       return value from compute_all_dependences.
+
+       PR rtl-optimization/53160
+       * ree.c (combine_reaching_defs): Handle the case where cand->insn
+       has been modified by ree pass already.
+
+2012-05-01  Ian Lance Taylor  <iant@google.com>
+
+       PR c/37303
+       * c-decl.c (build_compound_literal): Make the decl readonly if it
+       an array of a readonly type.
+       * gimplify.c (gimplify_compound_literal_expr): Add fallback
+       parameter.  Change all callers.  If the decl is not addressable
+       and is not an l-value, make it readonly.
+
+2012-05-01  Bernd Schmidt  <bernds@codesourcery.com>
+
+       * ira.c (allocated_reg_info_size): New static variable.
+       (expand_reg_info): Manage it. Call
+       setup_preferred_alternate_classes_for_new_pseudos.
+       (ira): Don't do it here.  Remove local allocated_reg_info_size,
+       set the global before calling find_moveable_pseudos.
+       (find_moveable_pseudos): Call expand_reg_info rather than
+       resize_reg_info.
+
+2012-05-01  Richard Henderson  <rth@redhat.com>
+
+       * common.opt (fsync-libcalls): New.
+       * doc/invoke.texi: Document it.
+       * optabs.c (init_sync_libfuncs): Honor it.
+
+2012-05-01  Kenneth Zadeck  <zadeck@naturalbridge.com>
+           Richard Sandiford  <r.sandiford@uk.ibm.com>
+
+       PR rtl-optimization/52543
+       * Makefile.in (lower-subreg.o, target-globals.o): Depend on
+       lower-subreg.h.
+       * lower-subreg.h: New file.
+       * target-globals.h (this_target_lower_subreg): Declare.
+       (target_globals): Add lower_subreg;
+       (restore_target_globals): Restore this_target_lower_subreg.
+       * target-globals.c: Include it.
+       (default_target_globals): Add default_target_lower_subreg.
+       (save_target_globals): Initialize target_lower_subreg.
+       * rtl.h (init_lower_subreg): Added declaration.
+       * toplev.c (backend_init_target): Call initializer for lower-subreg
+       pass.
+       * lower-subreg.c (LOG_COSTS, FORCE_LOWERING): New macros.
+       (default_target_lower_subreg): New variable.
+       (this_target_lower_subreg): Likewise.
+       (twice_word_mode, choices): New macros.
+       (shift_cost, compute_splitting_shift, compute_costs)
+       (init_lower_subreg): New functions.
+       (resolve_simple_move): Add speed_p argument.  Check choices.
+       (find_pseudo_copy): Don't check the mode size here.
+       (resolve_simple_move): Assert the mode size.
+       (find_decomposable_shift_zext): Add speed_p argument and return
+       a bool.  Check choices.
+       (resolve_shift_zext): Add comment.
+       (dump_shift_choices, dump_choices): New functions.
+       (decompose_multiword_subregs): Dump list of profitable
+       transformations.  Add code to skip non profitable transformations.
+       Update calls to simple_move and find_decomposable_shift_zext.
+
+2012-05-01  Ian Bolton  <ian.bolton@arm.com>
+           Sameera Deshpande  <sameera.deshpande@arm.com>
+           Greta Yorsh  <greta.yorsh@arm.com>
+
+       * config/arm/arm-protos.h (thumb_unexpanded_epilogue): Rename to...
+       (thumb1_unexpanded_epilogue): ...this.
+       * config/arm/arm.c (thumb_unexpanded_epilogue): Rename to...
+       (thumb1_unexpanded_epilogue): ...this.
+       * config/arm/arm.md (thumb_unexpanded_epilogue): Rename to...
+       (thumb1_unexpanded_epilogue): ...this.
+
+2012-05-01  Richard Earnshaw  <rearnsha@arm.com>
+
+       * arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_DEFAULT): Avoid ifdef
+       comparing enumeration values.  Update comments.
+
+2012-05-01  Alan Modra  <amodra@gmail.com>
+
+       PR target/53038
+       * config/rs6000/rs6000.c (load_lr_save, restore_saved_lr,
+       load_cr_save, add_crlr_cfa_restore): New functions.
+       (rs6000_restore_saved_cr): Rename to..
+       (restore_saved_cr): ..this.  Add cfa_restore notes for cr.
+       (rs6000_emit_epilogue): Use new functions.  Adjust condition
+       for emitting lr and cr cfa_restore.  Emit cfa_restores for fp
+       regs when using out-of-line restore only when shrink wrapping.
+
+2012-04-30  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR middle-end/53136
+       * ipa-prop.c (ipa_print_node_jump_functions): Wrap multiple
+       calls to cgraph_node_name in xstrdup.
+       (ipa_make_edge_direct_to_target): Ditto.
+       * cgraph.c (dump_cgraph_node): Ditto.
+       * tree-sra.c (convert_callers_for_node): Ditto.
+       * lto-symtab.c (lto_cgraph_replace_node): Ditto.
+       * ipa-cp.c (perhaps_add_new_callers): Ditto.
+       * cgraphunit.c (cgraph_redirect_edge_call_stmt_to_callee): Ditto.
+       (cgraph_materialize_all_clones): Ditto.
+       * ipa-inline.c (report_inline_failed_reason): Ditto.
+       (want_early_inline_function_p): Ditto.
+       (edge_badness): Ditto.
+       (update_edge_key): Ditto.
+       (flatten_function): Ditto.
+       (ipa_inline): Ditto.
+       (inline_always_inline_functions): Ditto.
+       (early_inline_small_functions): Ditto.
+
+2012-04-30  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/53141
+       * config/i386/i386.md (*umul<mode><dwi>3_1): Switch places of
+       constraints 0 and 1.
+
+012-04-30  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.c (ld_plugin_symbol_resolution_names): Move to symtab.c
+       (cgraph_asm_nodes, cgraph_asm_last_node): Move to cgraphunit.c
+       (cgraph_add_to_same_comdat_group): Remove.
+       (cgraph_add_asm_node): Move to cgraphunit.c.
+       (cgraph_make_decl_local): Move to symtab.c
+       (cgraph_make_node_local_1): Update.
+       (cgraph_can_remove_if_no_direct_calls_and): Update.
+       (used_from_object_file_p): Update.
+       (resolution_used_from_other_file_p): Move to symtab.c
+       (cgraph_used_from_object_file_p): move to symtab.c
+       (verify_cgraph_node): Verify same comdat groups.
+       * cgraph.h (cgraph_asm_node): Rename to ...
+       (asm_node): ... this one.
+       (cgraph_asm_nodes): Rename to ...
+       (asm_nodes): ... this one.
+       (symtab_add_to_same_comdat_group): New function.
+       (symtab_dissolve_same_comdat_group_list): New function.
+       (symtab_used_from_object_file_p): Declare.
+       (symtab_make_decl_local): Declare.
+       (cgraph_add_to_same_comdat_group): Remove.
+       (cgraph_add_asm_node): Remove.
+       (cgraph_used_from_object_file_p, varpool_used_from_object_file_p):
+       Remove.
+       (cgraph_finalize_compilation_unit): Rename to ...
+       (finalize_compilation_unit): ... this one.
+       (cgraph_optimize): Rename to ....
+       (compile): ... this one.
+       (add_asm_node): Declare.
+       (fixup_same_cpp_alias_visibility): Declare.
+       (cgraph_make_decl_local): Remove.
+       (varpool_assemble_pending_decls): Rename to ...
+       (varpool_output_variables): ... this one.
+       (varpool_remove_unreferenced_decls): Remove.
+       * ipa-inline-transform.c (clone_inlined_nodes): Dissolve comdat groups.
+       (preserve_function_body_p): Make static.
+       * toplev.c (compile_file): Update comments; update.
+       * cgraphunit.c: Update comments.
+       (cgraph_expand_all_functions): Rename to ...
+       (expand_all_functions): ... this one; update.
+       (cgraph_mark_functions_to_output): Rename to ...
+       (mark_functions_to_output): ... this one; cleanup.
+       (cgraph_output_pending_asms): Remove prototype.
+       (asm_nodes, asm_last_node): New static vars.
+       (cgraph_process_new_functions): Update.
+       (cgraph_reset_node): Cleanup; add comment.
+       (cgraph_add_new_function): Update.
+       (cgraph_output_pending_asms): Rename to ...
+       (output_asm_statements): ... this one.
+       (add_asm_node): New function.
+       (fixup_same_cpp_alias_visibility): New function based on code
+       in cgraph_analyze_function.
+       (cgraph_analyze_function): Use it.
+       (cgraph_order_sort): Update.
+       (cgraph_output_in_order): Update.
+       (cgraph_function_versioning): Update.
+       (cgraph_optimize): Rename to ...
+       (compile): ... this one; initialize streamer hooks here.
+       (cgraph_finalize_compilation_unit): Rename to ...
+       (finalize_compilation_unit): ... this one; do not initialize streamer
+       hook here.
+       * lto-streamer-out.c (lto_output_toplevel_asms): Update.
+       * dwarf2out.c: Update ocmment.
+       * optimize.c (maybe_clone_body): Use symtab_add_to_same_comdat_group.
+       * method.c (use_thunk): Likewise.
+       * semantics.c (maybe_add_lambda_conv_op): Likewise.
+       * decl2.c (maybe_emit_vtables): Likewise.
+       (cp_write_global_declarations): Use finalize_compilation_unit.
+       * parser.c (cp_parser_asm_definition): Use add_asm_node.
+       * lto-streamer-in.c (lto_input_toplevel_asms): Use add_asm_node
+       * c-decl.c (c_write_global_declarations): Use
+       finalize_compilation_unit.
+       * langhooks.c (write_global_declarations): Update.
+       * ipa.c (cgraph_externally_visible_p): Update.
+       (dissolve_same_comdat_group_list): Remove.
+       (function_and_variable_visibility): Update.
+       * symtab.c: Inlcude lto-streamer.h and rtl.h
+       (ld_plugin_symbol_resolution_names): New.
+       (symtab_add_to_same_comdat_group): New.
+       (symtab_dissolve_same_comdat_group_list): New.
+       (resolution_used_from_other_file_p): Move here from cgraph.c
+       (symtab_used_from_object_file_p): New.
+       (symtab_make_decl_local): New.
+       * passes.c (register_pass): Update comments.
+       * c-parser.c (c_parser_asm_definition): Update.
+       * varpool.c (varpool_analyze_node): Use
+       fixup_same_cpp_alias_visibility.
+       (varpool_remove_unreferenced_decls): Make static.
+       (varpool_assemble_pending_decls): Rename to ...
+       (varpool_output_variables): ... this one; call
+       varpool_remove_unreferenced_decls.
+       (varpool_used_from_object_file_p): Remove.
+
+2012-04-30  Marc Glisse  <marc.glisse@inria.fr>
+
+       PR c++/51033
+       * c-typeck.c (build_array_ref): Call
+       convert_vector_to_pointer_for_subscript.
+       * doc/extend.texi (Vector Extensions): Subscripting not just for C.
+
+2012-04-30  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (and<mode>3): Change runtime operand mode checks
+       to compile-time "mode == <MODE>mode" checks.
+       (and splitter): Ditto.
+
+2012-04-30  Richard Henderson  <rth@redhat.com>
+
+       * config/arm/arm.md (UNSPEC_LL): New.
+       * config/arm/sync.md (atomic_loaddi, atomic_loaddi_1): New.
+       (arm_load_exclusivedi): Use %H0.
+
+2012-04-30  Jason Merrill  <jason@redhat.com>
+
+       * dwarf2out.c (comdat_symbol_id): Add const.
+       (union die_symbol_or_type_node): Add const to die_symbol.
+       (output_die_symbol, output_die, output_comp_unit): Adjust.
+
+2012-04-30  Andrew Stubbs  <ams@codesourcery.com>
+
+       * config/arm/arm.md (negdi2): Use gen_negdi2_neon.
+       * config/arm/neon.md (negdi2_neon): New insn.
+       Also add splitters for core and NEON registers.
+
+2012-04-30  Andrew Stubbs  <ams@codesourcery.com>
+
+       * config/arm/arm.c (neon_valid_immediate): Allow const_int.
+       (arm_print_operand): Add 'x' format.
+       * config/arm/constraints.md (Dn): Allow const_int.
+       * config/arm/neon.md (neon_mov<mode>): Use VDX to allow DImode.
+       Use 'x' format to print constants.
+       * config/arm/predicates.md (imm_for_neon_mov_operand): Allow const_int.
+       * config/arm/vfp.md (movdi_vfp): Disable for const_int when neon
+       is enabled.
+       (movdi_vfp_cortexa8): Likewise.
+
+2012-04-30  Ian Bolton <ian.bolton@arm.com>
+           Sameera Deshpande  <sameera.deshpande@arm.com>
+           Greta Yorsh  <greta.yorsh@arm.com>
+
+       * config/arm/arm-protos.h (ldm_stm_operation_p): New declaration.
+       * config/arm/arm.c (ldm_stm_operation_p): New function.
+       * config/arm/predicates.md (load_multiple_operation): Update predicate.
+       (store_multiple_operation): Likewise.
+
+       * config/arm/arm-protos.h (ldm_stm_operation_p): New parameters.
+       * config/arm/arm.c (ldm_stm_operation_p): New parameters.
+       * config/arm/predicates.md (load_multiple_operation): Add arguments.
+       (store_multiple_operation): Likewise.
+
+2012-04-30  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (and<mode>3): Expand masking operations with
+       0xff, 0xffff or 0xffffffff immediates to corresponding zero_extend RTX.
+       (and splitter): Split to DImode zero_extend RTX for DImode operand[0].
+
 2012-04-30  Dodji Seketeli  <dodji@redhat.com>
 
        Add -Wvarargs option
        * builtins.c (fold_builtin_next_arg):  Use OPT_Wvarargs as an
-       argument for the various warning_at calls.
+       argument for the various warning_at calls.
        * docs/invoke.texi: Update the documentation.
 
 2012-04-30  Dodji Seketeli  <dodji@redhat.com>
        Make conversion warnings work on NULL with -ftrack-macro-expansion
        * input.h (expansion_point_location_if_in_system_header): Declare
        new function.
-       * input.c (expansion_point_location_if_in_system_header): Define
-       it.
+       * input.c (expansion_point_location_if_in_system_header): Define it.
 
        Fix -Wuninitialized for -ftrack-macro-expansion
-       * tree-ssa.c (warn_uninit): Use the spelling location of the
-       variable declaration.  Use linemap_location_before_p for source
-       locations.
+       * tree-ssa.c (warn_uninit): Use the spelling location of the variable
+       declaration.  Use linemap_location_before_p for source locations.
 
        Strip "<built-in>" loc from displayed expansion context
        * input.c (expand_location_1): When expanding to spelling location
 
 2012-04-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
-        * opts.c (finish_options): Do not handle -Wmissing-noreturn here.
-        * common.opt (Wmissing-noreturn): Alias of -Wsuggest-attribute=noreturn.
+       * opts.c (finish_options): Do not handle -Wmissing-noreturn here.
+       * common.opt (Wmissing-noreturn): Alias of
+       -Wsuggest-attribute=noreturn.
 
 2012-04-29  Hans-Peter Nilsson  <hp@axis.com>
 
 
 2012-04-27  Paolo Bonzini  <bonzini@gnu.org>
 
-       * tree-ssa-phiopt.c (conditional_replacement): Replace PHIs
-       whose arguments are -1 and 0, by negating the result of the
-       conditional.
+       * tree-ssa-phiopt.c (conditional_replacement): Replace PHIs whose
+       arguments are -1 and 0, by negating the result of the conditional.
 
 2012-04-27  Paolo Bonzini  <bonzini@gnu.org>
 
        * config/sparc/sparc.md (attr type): Delete 'fgm_cmp'.
        (fpack16_vis, fpackfix_vis, fpack32_vis): Set type to fgm_pack.
        (fmul8x16_vis, fmul8x16au_vis, fmul8x16al_vis, fmul8sux16_vis,
-       fmul8ulx16_vis, fmuld8sux16_vis, fmuld8ulx16_vis): Set type to
-       fgm_mul.
+       fmul8ulx16_vis, fmuld8sux16_vis, fmuld8ulx16_vis): Set type to fgm_mul.
        (alignaddrsi_vis, alignaddrdi_vis, alignaddrlsi_vis,
        alignaddrldi_vis): Set type to gsr.
        (pdist_vis, pdistn<mode>_vis): Set type to fgm_pdsit.
 2012-04-25  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR debug/52857
-       * dwarf2out.c (dbx_reg_number): Assert return value !=
-       INVALID_REGNUM.
+       * dwarf2out.c (dbx_reg_number): Assert return value != INVALID_REGNUM.
 
 2012-04-25  Jakub Jelinek  <jakub@redhat.com>
 
 
 2012-04-25  Jan Hubicka  <jh@suse.cz>
 
-       PR middle-end/53089 
-       * cgraphunit.c (referred_to_p): Move ahead in file to avoid forward declaration.
+       PR middle-end/53089
+       * cgraphunit.c (referred_to_p): Move ahead in file to avoid
+       forward declaration.
        (cgraph_finalize_function): Finalize them here.
        * symtab.c (dump_symtab): Dump ctors and dtors.
 
        Also check that unit bytes long store at bitpos / unit * unit
        doesn't affect bits beyond bitregion_end.
        * expmed.c (store_bit_field_1): Avoid trying insv if OP_MODE MEM
-       would not fit into bitregion_start ... bitregion_end + 1 bit
-       region.
+       would not fit into bitregion_start ... bitregion_end + 1 bit region.
        (store_split_bit_field): Decrease unit close to end of bitregion_end
        if access is restricted in order to avoid mutual recursion.
 
        prototypes.
        * double-int.c (double_int_max_value, double_int_min_value): New
        functions.
-       * tree-vrp.c (register_edge_assert_for_2): Compare mask
-       for LE_EXPR or GT_EXPR with double_int_max_value
-       instead of double_int_mask.
+       * tree-vrp.c (register_edge_assert_for_2): Compare mask for LE_EXPR
+       or GT_EXPR with double_int_max_value instead of double_int_mask.
 
 2012-04-25  Richard Guenther  <rguenther@suse.de>
 
        * tree-vect-loop.c (vect_transform_loop): Adjust.
        * tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): Record
        the maximum number of iterations for the epilogue loop.
-       (vect_loop_versioning): Remove case re-using the peeled
-       epilogue loop.
+       (vect_loop_versioning): Remove case re-using the peeled epilogue loop.
 
 2012-04-25  Jakub Jelinek  <jakub@redhat.com>