OSDN Git Service

In gcc/c-family/:
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index b034a2e..f047ac3 100644 (file)
@@ -1,3 +1,699 @@
+2011-04-15  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * c-decl.c (detect_field_duplicates): Call
+       objc_detect_field_duplicates instead of objc_get_interface_ivars.
+
+2011-04-15  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * gimple.h (gimple_asm_clobbers_memory_p): Declare.
+       * gimple.c (gimple_asm_clobbers_memory_p): Define.
+       * ipa-pure-const.c (check_stmt): Call it.
+       * tree-ssa-operands.c (get_asm_expr_operands): Likewise.
+
+2011-04-15  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/48290
+       * tree-ssa-copy.c (copy_prop_visit_phi_node): Propagate constants.
+       Properly decide inhibiting propagation based on the valueized
+       operand.  Do loop-closed SSA form preserving here ...
+       (init_copy_prop): ... not here.
+
+2011-04-15  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/48612
+       * config/i386/sse.md (*ieee_smin<mode>3): Switch mnemonics.
+       (*ieee_smax<mode>3): Likewise.
+
+2011-04-15  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+       * config/s390/s390.md (popcountdi2, popcountsi2, popcounthi2):
+       Replace match_operand with match_dup for the third operand in
+       these expanders.
+
+2011-04-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+       * combine.c (subst, combine_simlify_rtx): Add new argument, use it
+       to track processing of conditionals.  Update all callers.
+       (try_combine, simplify_if_then_else): Update.
+
+2011-04-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+       * config/m68k/m68k.c (m68k_sched_variable_issue): Handle
+       -fsched-pressure.
+
+2011-04-15  Georg-Johann Lay  <avr@gjlay.de>
+       
+       * config/avr/avr.md ("rotl<mode>3",mode=HIDI): Use match_dup
+       instead of match_operand for operand 3.
+
+2011-04-15  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * recog.h (insn_operand_data): Add an "allows_mem" field.
+       * genoutput.c (output_operand_data): Initialize it.
+       * optabs.c (maybe_legitimize_operand_same_code): New function.
+       (maybe_legitimize_operand): Use it when matching the original
+       op->value.
+
+2011-04-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gimplify.c: Fix issues in comments throughout.
+       (voidify_wrapper_expr): Fix long line.
+       (build_stack_save_restore): Likewise.
+       (gimplify_loop_expr): Likewise.
+       (gimplify_compound_lval): Likewise.
+       (gimplify_init_ctor_eval): Likewise.
+       (gimplify_modify_expr_rhs): Likewise.
+       (omp_notice_threadprivate_variable): Likewise.
+
+2011-04-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * cfgexpand.c (expand_call_stmt): Convert the function type to the
+       original one if this is not a builtin function.
+
+2011-04-14  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/48605
+       * config/i386/sse.md (sse4_1_insertps): If operands[2] is a MEM,
+       offset it as needed based on top 2 bits in operands[3], change
+       MEM mode to SFmode and mask those 2 bits away from operands[3].
+
+2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * c-parser.c (c_parser_objc_protocol_definition): Updated for
+       change from objc_declare_protocols() to objc_declare_protocol().
+
+2011-04-14  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/sse.md (sse4_1): New mode attribute.
+       (<sse4_1>_blend<ssemodesuffix><avxmodesuffix>): Macroize from
+       avx_blend<ssemodesuffix><avxmodesuffix> and
+       sse4_1_blend<ssemodesuffix> using VF mode iterator.
+       (<sse4_1>_blendv<ssemodesuffix><avxmodesuffix>): Macroize from
+       avx_blendv<ssemodesuffix><avxmodesuffix> and
+       sse4_1_blendv<ssemodesuffix> using VF mode iterator.
+       (<sse4_1>_dp<ssemodesuffix><avxmodesuffix>): Macroize from
+       avx_dp<ssemodesuffix><avxmodesuffix> and
+       sse4_1_dp<ssemodesuffix> using VF mode iterator.
+       (sse4_1_mpsadbw): Merge with *avx_mpsadbw.
+       (sse4_1_packusdw): Merge with *avx_packusdw.
+       (sse4_1_pblendvb): Merge with *avx_pblendvb.
+       (sse4_1_pblendw): Merge with *avx_pblendw.
+       (avx_vtest<ssemodesuffix><avxmodesuffix>): Use VF mode iterator.
+       (<sse4_1>_round<ssemodesuffix><avxmodesuffix>): Macroize from
+       avx_round<ssemodesuffix>256 and sse4_1_round<ssemodesuffix> using
+       VF mode iterator.
+       (sse4_1_round<ssescalarmodesuffix>): Merge with
+       *avx_round<ssescalarmodesuffix>.
+       (aesenc): Merge with *avx_aesenc.
+       (aesenclast): Merge with *avx_aesenclast.
+       (aesdec): Merge with *avx_aesdec.
+       (aesdeclast): Merge with *avx_aesdeclast.
+       (pclmulqdq): Merge with *pclmulqdq.
+       * config/i386/predicates.md (reg_not_xmm0_operand_maybe_avx):
+       New predicate.
+       (nonimm_not_xmm0_operand_maybe_avx): Ditto.
+
+2011-04-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR middle-end/48608
+       * cfgexpand.c (get_decl_align_unit): Renamed to ...
+       (align_local_variable): This.  Update DECL_ALIGN.
+       (add_stack_var): Updated.
+       (expand_one_stack_var): Likewise.
+
+2011-04-14  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-dse.c (struct dse_global_data, struct dse_block_local_data):
+       Remove.
+       (dse_initialize_block_local_data, dse_leave_block,
+       record_voperand_set, get_stmt_uid): Likewise.
+       (dse_possible_dead_store_p): Allow any kind of killing stmt.
+       (dse_optimize_stmt): Remove voperand set handling code.
+       Simplify and improve to handle any kind of killing stmt.
+       (dse_record_phi): Remove.
+       (dse_enter_block): Simplify.
+       (tree_ssa_dse): Likewise.
+       * tree-ssa-alias.c (stmt_kills_ref_p_1): Handle some builtins.
+
+2011-04-14  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.c (dump_cgraph_node): Do not dump inline summaries.
+       * cgraph.h (struct inline_summary): Move to ipa-inline.h
+       (cgraph_local_info): Remove inline_summary.
+       * ipa-cp.c: Include ipa-inline.h.
+       (ipcp_cloning_candidate_p, ipcp_estimate_growth,
+       ipcp_estimate_cloning_cost, ipcp_insert_stage): Use inline_summary
+       accesor.
+       * lto-cgraph.c (lto_output_node): Do not stream inline summary.
+       (input_overwrite_node): Do not set inline summary.
+       (input_node): Do not stream inline summary.
+       * ipa-inline.c (cgraph_decide_inlining): Dump inline summaries.
+       (cgraph_decide_inlining_incrementally): Do not try to estimate overall
+       growth; we do not have inline parameters computed for that anyway.
+       (cgraph_early_inlining): After inlining compute call_stmt_sizes.
+       * ipa-inline.h (struct inline_summary): Move here from ipa-inline.h
+       (inline_summary_t): New type and VECtor.
+       (debug_inline_summary, dump_inline_summaries): Declare.
+       (inline_summary): Use VOCtor.
+       (estimate_edge_growth): Kill hack computing call stmt size directly.
+       * lto-section-in.c (lto_section_name): Add inline section.
+       * ipa-inline-analysis.c: Include lto-streamer.h
+       (node_removal_hook_holder, node_duplication_hook_holder): New holders
+       (inline_node_removal_hook, inline_node_duplication_hook): New functions.
+       (inline_summary_vec): Define.
+       (inline_summary_alloc, dump_inline_summary, debug_inline_summary,
+       dump_inline_summaries): New functions.
+       (estimate_function_body_sizes): Properly compute size/time of outgoing
+       calls.
+       (compute_inline_parameters): Alloc inline_summary; do not compute
+       size/time of incomming calls.
+       (estimate_edge_time): Avoid missing time summary hack.
+       (inline_read_summary): Read inline summary info.
+       (inline_write_summary): Write inline summary info.
+       (inline_free_summary): Free all hooks and inline summary vector.
+       * lto-streamer.h: Add LTO_section_inline_summary section.
+       * Makefile.in (ipa-cp.o, ipa-inline-analysis.o): Update dependencies.
+       * ipa.c (cgraph_remove_unreachable_nodes): Fix dump file formating.
+
+2011-04-14  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * tree-vectorizer.h (vect_strided_store_supported): Add a
+       HOST_WIDE_INT argument.
+       (vect_strided_load_supported): Likewise.
+       (vect_permute_store_chain): Return void.
+       (vect_transform_strided_load): Likewise.
+       (vect_permute_load_chain): Delete.
+       * tree-vect-data-refs.c (vect_strided_store_supported): Take a
+       count argument.  Check that the count is a power of two.
+       (vect_strided_load_supported): Likewise.
+       (vect_permute_store_chain): Return void.  Update after above changes.
+       Assert that the access is supported.
+       (vect_permute_load_chain): Likewise.
+       (vect_transform_strided_load): Return void.
+       * tree-vect-stmts.c (vectorizable_store): Update calls after
+       above interface changes.
+       (vectorizable_load): Likewise.
+       (vect_analyze_stmt): Don't check for strided powers of two here.
+
+2011-04-14  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/48590
+       * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Handle
+       BUILT_IN_ALLOCA, BUILT_IN_STACK_SAVE and BUILT_IN_STACK_RESTORE.
+       (call_may_clobber_ref_p_1): Handle BUILT_IN_ALLOCA and
+       BUILT_IN_STACK_SAVE.
+       * tree-ssa-dce.c (propagate_necessity): Handle
+       BUILT_IN_ALLOCA, BUILT_IN_STACK_SAVE and BUILT_IN_STACK_RESTORE.
+
+2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * c-parser.c (c_parser_objc_class_declaration): Updated call to
+       objc_declare_class.
+
+2011-04-14  Richard Guenther  <rguenther@suse.de>
+
+       * tree.h (get_object_alignment_1): Declare.
+       * builtins.c (get_object_alignment_1): Split out worker from ...
+       (get_object_alignment): ... here.
+       * fold-const.c (get_pointer_modulus_and_residue): Use
+       get_object_alignment_1.
+
+2011-04-14  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * tree-vectorizer.h (vect_create_data_ref_ptr): Add an extra
+       type parameter.
+       * tree-vect-data-refs.c (vect_create_data_ref_ptr): Add an aggr_type
+       parameter.  Generalise code to handle arrays as well as vectors.
+       (vect_setup_realignment): Update accordingly.
+       * tree-vect-stmts.c (vectorizable_store): Likewise.
+       (vectorizable_load): Likewise.
+
+2011-04-14  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * tree-vect-stmts.c (vectorizable_load): Allocate and free dr_chain
+       within the per-copy loop.
+
+2011-04-14  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * tree-vect-stmts.c (vectorizable_load): Print the number of copies
+       in the dump file.
+
+2011-04-14  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * doc/options.texi (Negative): Explicitly mention that the
+       Negative chain must be circular.
+
+2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * function.h (block_chainon): Declare.
+       * function.c (block_chainon): Define.
+
+2011-04-14  Anatoly Sokolov  <aesok@post.ru>
+           Eric Weddington  <eric.weddington@atmel.com>
+           Georg-Johann Lay <avr@gjlay.de>
+
+       * config/avr/avr.c: ("insn-codes.h", "optabs.h", "langhooks.h"):
+       New Includes
+       (avr_init_builtins, avr_expand_builtin,
+       avr_expand_delay_cycles, avr_expand_unop_builtin,
+       avr_expand_binop_builtin ): New functions.
+       (avr_builtin_id): New enum
+       (struct avr_builtin_description): New struct
+       (bdesc_1arg, bdesc_2arg): New arrays describing some RTL builtins.
+       (TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN): Define.
+
+       * config/avr/avr.md (UNSPEC_FMUL, UNSPEC_FMULS, UNSPEC_FMULSU,
+       UNSPECV_ENABLE_IRQS, UNSPECV_NOP, UNSPECV_SLEEP, UNSPECV_WDR,
+       UNSPECV_DELAY_CYCLES): new enumeration values
+       (UNSPEC_SEI, UNSPEC_CLI): Remove enumeration values
+       ("enable_interrupt"): Use UNSPECV_ENABLE_IRQS
+       ("disable_interrupt"): Use UNSPECV_ENABLE_IRQS
+       ("*rotlqi3_4"): rename insn to "rotlqi3_4"
+       ("delay_cycles_1", "delay_cycles_2", "delay_cycles_3",
+       "delay_cycles_4", "nopv", "sleep", "wdr", "fmul", "fmuls",
+       "fmulsu"): New insns
+
+       * config/avr/avr-c.c: fix line endings
+       (avr_cpu_cpp_builtins): New builtin defines: __BUILTIN_AVR_NOP,
+       __BUILTIN_AVR_SEI, __BUILTIN_AVR_CLI, __BUILTIN_AVR_WDR,
+       __BUILTIN_AVR_SLEEP, __BUILTIN_AVR_SWAP,
+       __BUILTIN_AVR_DELAY_CYCLES, __BUILTIN_AVR_FMUL,
+       __BUILTIN_AVR_FMULS, __BUILTIN_AVR_FMULSU.
+
+       * doc/extend.texi (AVR Built-in Functions): New node
+       (Target Builtins): Add documentation of AVR
+       built-in functions.
+
+2011-04-14  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/44643
+       * config/avr/avr.c (avr_insert_attributes): Leave TREE_READONLY
+       alone. Error if non-const data has attribute progmem.
+
+2011-04-13  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * tree.h (struct tree_constructor): Include tree_typed instead of
+       tree_common.
+       * tree.c (initialize_tree_contains_struct): Mark TS_CONSTRUCTOR as
+       TS_TYPED instead of TS_COMMON.
+
+2011-04-13  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/sse.md (*sse2_uavgv16qi3): Merge with *avx_uavgv16qi3.
+       (*sse2_uavgv8hi3): Merge with *avx_uavgv8hi3.
+       (sse2_psadbw): Merge with *avx_psadbw.
+       (ssse3_phaddwv8hi3): Merge with *avx_phaddwv8hi3.
+       (ssse3_phadddv4si3): Merge with *avx_phadddv4si3.
+       (ssse3_phaddswv8hi3): Merge with *avx_phaddswv8hi3.
+       (ssse3_phsubwv8hi3): Merge with *avx_phsubwv8hi3.
+       (ssse3_phsubdv4si3): Merge with *avx_phsubdv4si3.
+       (ssse3_phsubswv8hi3): Merge with *avx_phsubswv8hi3.
+       (ssse3_pmaddubsw128): Merge with *avx_pmaddubsw128.
+       (*ssse3_pmulhrswv8hi3): Merge with *avx_pmulhrswv8hi3.
+       (ssse3_pshufbv16qi3): Merge with *avx_pshufbv16qi3.
+       (ssse3_psign<mode>3): Merge with *avx_psign<mode>3.
+       (ssse3_palignrti): Merge with *avx_palignrti.
+
+2011-04-13  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * tree-flow.h (struct gimple_df): Make free_ssanames a VEC.
+       * tree-ssanames.c (fini_ssanames): VEC_free it.
+       (make_ssa_name_fn): Update for VECness of free_ssanames.
+       (release_ssa_name, release_dead_ssa_names): Likewise.
+       * tree.h (struct tree_ssa_name): Include tree_typed instead of
+       tree_common.
+       * tree.c (initialize_tree_contains_struct): Mark TS_SSA_NAME as
+       TS_TYPED instead of TS_COMMON.
+
+2011-04-13  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * postreload-gcse.c (gcse_after_reload_main): Add calls to
+       statistics_counter_event.
+       * tree-ssa-copyrename.c (stats): Define.
+       (rename_ssa_copies): Count coalesced SSA_NAMEs.  Add call to
+       statistics_counter_event.
+       * tree-ssa-math-opts.c (reciprocal_stats, sincos_stats): Define.
+       (bswap_stats, widen_mul_stats): Define.
+       (insert_reciprocals): Increment rdivs_inserted.
+       (execute_cse_reciprocals): Zeroize reciprocal_stats.  Increment
+       rfuncs_inserted.  Add calls to statistics_counter_event.
+       (execute_cse_sincos_1): Increment inserted.
+       (execute_cse_sincos): Zeroize sincos_stats.  Add call to
+       statistics_counter_event.
+       (execute_optimize_bswap): Zeroize bswap_stats.  Increment fields
+       of bswap_stats.  Add calls to statistics_counter_event.
+       (convert_mult_to_widen): Increment widen_mults_inserted.
+       (convert_plusminus_to_widen): Increment maccs_inserted.
+       (convert_mult_to_fma): Increment fmas_inserted.
+       (execute_optimize_widening_mul): Zeroize widen_mul_stats.  Add
+       calls to statistics_counter_event.
+
+2011-04-13  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR rtl-optimization/48455
+       * ira-costs.c (find_costs_and_classes): Use i_mem_cost instead of
+       `temp_costs->mem_cost'.
+
+2011-04-13  Jan Hubicka  <jh@suse.cz>
+
+       * ipa-inline.h: New file.
+       * ipa-inline-analysis.c: New file. Broken out of ...
+       * ipa-inline.c: ... this file; update toplevel comment;
+       include ipa-inline.h
+       (inline_summary): Move to ipa-inline.h
+       (cgraph_estimate_edge_time): Rename to estimate_edge_time; move to
+       ipa-inline-analysis.c.
+       (cgraph_estimate_time_after_inlining): Rename to estiamte_time_after_inlining;
+       move to ipa-inline-analysis.c
+       (cgraph_estimate_edge_growth): Move to ipa-inline-analysis.c; rename
+       to estimate_edge_growth.
+       (cgraph_estimate_size_after_inlining): Move to ipa-inline-analysis.c;
+       rename to estimate_size_after_inlining.
+       (cgraph_mark_inline_edge): Update for new naming convention.
+       (cgraph_check_inline_limits): Likewise.
+       (cgraph_edge_badness): Likewise.
+       (cgraph_decide_recursive_inlining): Likewise.
+       (cgraph_decide_inlining_of_small_functions): Likewise.
+       (cgraph_decide_inlining_incrementally): Likewise.
+       (cgraph_estimate_growth): Rename to estimate_growth; move to ipa-inline-analysis.c.
+       (eliminated_by_inlining_prob): Move to ipa-inline-analysis.c.
+       (estimate_function_body_sizes): Move to ipa-inline-analysis.c.
+       (compute_inline_parameters): Likewise.
+       (compute_inline_parameters_for_current): Likewise.
+       (pass_inline_parameters): Likewise.
+       (inline_indirect_intraprocedural_analysis): Likewise.
+       (analyze_function): Rename to inline_analyze_function; likewise.
+       (add_new_function): Move to ipa-inline-analysis.c.
+       (inline_generate_summary): Likewise.
+       (inline_read_summary): Likewise.
+       (inline_write_summary): Likewise.
+       * Makefile.in (ipa-inline-analysis.c): New file.
+
+2011-04-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * configure.ac (gcc_cv_as_sparc_gotdata_op): Remove GNU ld check.
+       * configure: Regenerate.
+
+2011-04-13  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * tree.h (struct tree_int_cst, struct real_value): Include tree_typed
+       instead of tree_common.
+       (struct tree_fixed_cst, struct tree_string, struct tree_complex):
+       Likewise.
+       * tree.c (initialize_tree_contains_struct): Mark such nodes as being
+       TS_TYPED rather than TS_COMMON.
+       * print-tree.c (print_node) [STRING_CST]: Don't print TREE_CHAIN.
+
+2011-04-01  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/45263
+       * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Don't use
+       r20 around calls of __tablejump_elpm__
+
+2011-04-13  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/48591
+       * omp-low.c (expand_omp_atomic_fetch_op): Return false if decl is
+       NULL.
+       (expand_omp_atomic_pipeline): Return false if cmpxchg is NULL.
+
+2011-04-13  Bernd Schmidt  <bernds@codesourcery.com>
+
+       * dwarf2out.c (struct dw_cfi_struct): Remove member dw_cfi_next.
+       (dw_cfi_ref): Add DEF_VEC_P and some DEF_VEC_ALLOC_Ps.
+       (cfi_vec): New typedef.
+       (struct dw_fde_struct): Make dw_fde_cfi a cfi_vec. Replace
+       dw_fde_switch_cfi with an integer dw_fde_switch_cfi_index.
+       (cie_cfi_vec): New static variable.
+       (cie_cfi_head): Delete.
+       (add_cfi): Accept a cfi_vec * as first argument. All callers and
+       declaration changed. Use vector rather than list operations.
+       (new_cfi): Don't initialize the dw_cfi_next field.
+       (add_fde_cfi): Allocate cie_cfi_vec if necessary. Use vector
+       rather than list operations.
+       (lookup_cfa): Use vector rather than list operations.
+       (output_cfis): New argument upto. Accept a cfi_vec rather than
+       a dw_cfi_ref list head as argument. All callers changed.
+       Iterate over the vector using upto as a maximum index.
+       (output_all_cfis): New static function.
+       (output_fde): Use vector rather than list operations. Use the
+       new upto argument for output_cfis rather than manipulating a
+       list.
+       (dwarf2out_begin_prologue): Change initializations to match
+       new struct members.
+       (dwarf2out_switch_text_section): Initialize dw_fde_switch_cfi_index
+       from the vector length rather than searching for the end of a list.
+       Use output_all_cfis.
+       (convert_cfa_to_fb_loc_list): Use vector rather than list operations.
+
+2011-04-13  Nick Clifton  <nickc@redhat.com>
+
+       * config/rx/rx.md (movmemsi): Do not use this pattern when
+       volatile pointers are involved.
+
+2011-04-13  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/sse.md (pinsrbits): Remove.
+       (sse2_packsswb): Merge with *avx_packsswb.
+       (sse2_packssdw): Merge with *avx_packssdw.
+       (sse2_packuswb): Merge with *avx_packuswb.
+       (vec_interleave_highv16qi): Merge with *avx_interleave_highv16qi.
+       (vec_interleave_lowv16qi): Merge with *avx_interleave_lowv16qi.
+       (vec_interleave_highv8hi): Merge with *avx_interleave_highv8hi.
+       (vec_interleave_lowv8hi): Merge with *avx_interleave_lowv8hi.
+       (vec_interleave_highv4si): Merge with *avx_interleave_highv4si.
+       (vec_interleave_lowv4si): Merge with *avx_interleave_lowv4si.
+       (*sse4_1_pinsrb): Merge with *avx_pinsr<ssevecsize>.
+       (*sse2_pinsrw): Merge with *avx_pinsr<ssevecsize>.
+       (*sse4_1_pinsrd): Merge with *avx_pinsr<ssevecsize>.
+       (*sse4_1_pinsrq): Merge with *avx_pinsrq.
+       (sse2_loadld): Merge with *avx_loadld.
+       (*vec_extractv2di_1_rex64): Merge with *vec_extractv2di_1_rex64_avx.
+       (*vec_extractv2di_1_sse2): Merge with *vec_extractv2di_1_avx.
+       (*vec_concatv2si_sse4_1): Merge with *vec_concatv2si_avx.
+       (*vec_concatv2di_rex64_sse4_1): Merge with *vec_concatv2di_rex64_avx.
+       (vec_concatv2di): Merge with *vec_concatv2di_avx.
+
+2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * c-decl.c (union lang_tree_node): Check for TS_COMMON before
+       calling TREE_CHAIN.
+       * print-tree.c (print_node): Likewise.
+       * tree-inline.c (copy_tree_r): Likewise.
+       * c-lang.c (LANG_HOOKS_INIT_TS): Define.
+       * lto-streamer-in.c (lto_input_tree_pointers): Check for TS_TYPED
+       instead of TS_COMMON.
+       * lto-streamer-out.c (lto_output_tree_pointers): Likewise.
+       * tree.c (initialize_tree_contains_struct): Handle TS_TYPED.
+       (copy_node_stat): Zero TREE_CHAIN only if necessary.
+       (MARK_TS_BASE, MARK_TS_TYPED, MARK_TS_COMMON): Move these...
+       (MARK_TS_DECL_COMMON, MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL):
+       ...and these...
+       (MARK_TS_DECL_WITH_VIS, MARK_TS_DECL_NON_COMMON): ...and these...
+       * tree.h: ...here.
+       (TREE_CHAIN): Check for a TS_COMMON structure.
+       (TREE_TYPE): Check for a TS_TYPED structure.
+
+2011-04-12  Pat Haugen <pthaugen@us.ibm.com>
+
+       * config/rs6000/rs6000.c (call_ABI_of_interest): Call
+       cgraph_get_create_node instead of cgraph_node.
+
+2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * c-parser.c (c_parser_initelt): Updated call to
+       objc_build_message_expr.
+       (c_parser_postfix_expression): Likewise.
+
+2011-04-12  Kai Tietz  <ktietz@redhat.com>
+
+       * config/i386/mingw32.h (TARGET_SUBTARGET_DEFAULT): Add
+       MASK_MS_BITFIELD_LAYOUT bit.
+
+2011-04-12  Jakub Jelinek  <jakub@redhat.com>
+
+       * combine.c (update_cfg_for_uncondjump): Instead of testing at_end
+       assert it is always true.
+       (try_combine): Don't call update_cfg_for_uncondjump for noop non-jump
+       moves.
+
+2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * c-parser.c (c_lex_one_token): Rewritten conditional used when
+       compiling Objective-C to be more efficient.
+
+2011-04-12  Axel Freyn  <axel-freyn@gmx.de>
+
+       * opts-common.c (decode_cmdline_options_to_array): Remove variable
+       argv_copied.
+
+2011-04-12  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * recog.h, genoutput.c, optabs.c: Revert last patch.
+
+2011-04-12  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
+
+       PR target/48090
+       * config/arm/arm.md (*arm_negdi2): Fix early clobber constraints.
+
+2011-04-12  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * recog.h (insn_operand_data): Add an "allows_mem" field.
+       * genoutput.c (output_operand_data): Initialize it.
+       * optabs.c (maybe_legitimize_operand_same_code): New function.
+       (maybe_legitimize_operand): Use it when matching the original
+       op->value.
+
+2011-04-12  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * genpreds.c (process_define_predicate): Move most processing
+       to gensupport.c.  Continue to validate the expression.
+       * genrecog.c (did_you_mean_codes, compute_predicate_codes)
+       (process_define_predicate): Move processing to gensupport.c.
+       (main): Remove DEFINE_PREDICATE and DEFINE_SPECIAL_PREDICATE cases.
+       * gensupport.c (did_you_mean_codes): Moved from genrecog.c.
+       (compute_predicate_codes): Moved from genrecog.c.  Add lineno
+       argument.
+       (valid_predicate_name_p): New function, split out from old
+       genpreds.c:process_define_predicate.
+       (process_define_predicate): New function, combining code from
+       old genpreds.c and genrecog.c functions.
+       (process_rtx): Call it for DEFINE_PREDICATE and
+       DEFINE_SPECIAL_PREDICATE.
+
+2011-04-12  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * config/arm/arm.c (arm_print_operand): Use MEM_SIZE to get the
+       size of a '%A' memory reference.
+       (T_DREG, T_QREG): New neon_builtin_type_bits.
+       (arm_init_neon_builtins): Assert that the load and store operands
+       are neon_struct_operands.
+       (locate_neon_builtin_icode): Provide the neon_builtin_type_bits.
+       (NEON_ARG_MEMORY): New builtin_arg.
+       (neon_dereference_pointer): New function.
+       (arm_expand_neon_args): Add a neon_builtin_type_bits argument.
+       Handle NEON_ARG_MEMORY.
+       (arm_expand_neon_builtin): Update after above interface changes.
+       Use NEON_ARG_MEMORY for loads and stores.
+       * config/arm/predicates.md (neon_struct_operand): New predicate.
+       * config/arm/iterators.md (V_two_elem): Tweak formatting.
+       (V_three_elem): Use BLKmode for accesses that have no associated mode.
+       (V_four_elem): Tweak formatting.
+       * config/arm/neon.md (neon_vld1<mode>, neon_vld1_dup<mode>)
+       (neon_vst1_lane<mode>, neon_vst1<mode>, neon_vld2<mode>)
+       (neon_vld2_lane<mode>, neon_vld2_dup<mode>, neon_vst2<mode>)
+       (neon_vst2_lane<mode>, neon_vld3<mode>, neon_vld3_lane<mode>)
+       (neon_vld3_dup<mode>, neon_vst3<mode>, neon_vst3_lane<mode>)
+       (neon_vld4<mode>, neon_vld4_lane<mode>, neon_vld4_dup<mode>)
+       (neon_vst4<mode>): Replace pointer operand with a memory operand.
+       Use %A in the output template.
+       (neon_vld3qa<mode>, neon_vld3qb<mode>, neon_vst3qa<mode>)
+       (neon_vst3qb<mode>, neon_vld4qa<mode>, neon_vld4qb<mode>)
+       (neon_vst4qa<mode>, neon_vst4qb<mode>): Likewise, but halve
+       the width of the memory access.  Remove post-increment.
+       * config/arm/neon-testgen.ml: Allow addresses to have an alignment.
+
+2011-04-12  Nick Clifton  <nickc@redhat.com>
+
+       * config/v850/v850.c (expand_prologue): Do not use the CALLT
+       instruction for interrupt handlers if the target is the basic V850
+       architecture.
+       (expand_epilogue): Likewise.
+
+2011-04-12  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/48549
+       * combine.c (propagate_for_debug): Also stop after BB_END of
+       this_basic_block.  Process LAST and just stop processing after it.
+       (combine_instructions): If last_combined_insn has been deleted,
+       set last_combined_insn to its PREV_INSN.
+
+2011-04-12  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/46076
+       * gimple.h (struct gimple_statement_call): Add fntype field.
+       (gimple_call_fntype): Adjust.
+       (gimple_call_set_fntype): New function.
+       * gimple.c (gimple_build_call_1): Set the call function type.
+       * gimplify.c (gimplify_call_expr): Preserve the function
+       type the frontend used for the call.
+       (gimplify_modify_expr): Likewise.
+       * lto-streamer-in.c (input_gimple_stmt): Input the call stmts
+       function type.
+       * lto-streamer-out.c (output_gimple_stmt): Output the call stmts
+       function type.
+       * tree-ssa.c (useless_type_conversion_p): Function pointer
+       conversions are useless.
+
+2011-04-12  Martin Jambor  <mjambor@suse.cz>
+
+       * cgraph.h (cgraph_node): Remove function declaration.
+       (cgraph_create_node): Declare.
+       (cgraph_get_create_node): Likewise.
+       * cgraph.c (cgraph_create_node): Renamed to cgraph_create_node_1.
+       Updated all callers.
+       (cgraph_node): Renamed to cgraph_create_node, assert that a node for
+       the decl does not already exist.  Call cgraph_get_create_node instead
+       of cgraph_node.
+       (cgraph_get_create_node): New function.
+       (cgraph_same_body_alias): Update comment.
+       (cgraph_set_call_stmt): Call cgraph_get_node instead of cgraph_node,
+       assert it does not return NULL.
+       (cgraph_update_edges_for_call_stmt): Likewise.
+       (cgraph_clone_edge): Likewise.
+       (cgraph_create_virtual_clone): Likewise.
+       (cgraph_update_edges_for_call_stmt_node): Call cgraph_get_create_node
+       instead of cgraph_node.
+       (cgraph_add_new_function): Call cgraph_create_node or
+       cgraph_get_create_node instead of cgraph_node.
+       * cgraphbuild.c (record_reference): Call cgraph_get_create_node
+       instead of cgraph_node.
+       (record_eh_tables): Likewise.
+       (mark_address): Likewise.
+       (mark_load): Likewise.
+       (build_cgraph_edges): Call cgraph_get_create_node instead
+       of cgraph_node.
+       (rebuild_cgraph_edges): Likewise.
+       * cgraphunit.c (cgraph_finalize_function): Call cgraph_get_create_node
+       instead of cgraph_node.
+       (cgraph_copy_node_for_versioning): Call cgraph_create_node instead of
+       cgraph_node.
+       * lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Call
+       cgraph_create_node instead of cgraph_node.
+       * c-decl.c (finish_function): Call cgraph_get_create_node instead
+       of cgraph_node.
+       * lto-cgraph.c (input_node): Likewise.
+       * lto-streamer-in.c (input_function): Likewise.
+       * varasm.c (mark_decl_referenced): Likewise.
+       (assemble_alias): Likewise.
+
+2011-04-12  Martin Jambor  <mjambor@suse.cz>
+
+       * tree-inline.c (tree_function_versioning): Call cgraph_get_node
+       instead of cgraph_node and assert it does not return NULL.
+       * lto-streamer-in.c (lto_read_body): Likewise.
+       * omp-low.c (new_omp_context): Likewise.
+       (create_task_copyfn): Likewise.
+       * tree-emutls.c (lower_emutls_function_body): Likewise.
+       * matrix-reorg.c (transform_allocation_sites): Likewise.
+
+2011-04-12  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/48552
+       * c-typeck.c (build_asm_expr): Error out on attempts to use
+       void type outputs or inputs for constraints that allow reg or
+       don't allow memory.
+
+2011-04-11  Chung-Lin Tang  <cltang@codesourcery.com>
+           Richard Earnshaw  <rearnsha@arm.com>
+
+       PR target/48250
+       * config/arm/arm.c (arm_legitimize_reload_address): Update cases
+       to use sign-magnitude offsets. Reject unsupported unaligned
+       cases. Add detailed description in comments.
+       * config/arm/arm.md (reload_outdf): Disable for ARM mode; change
+       condition from TARGET_32BIT to TARGET_ARM.
+
 2011-04-11  Nathan Froyd  <froydnj@codesourcery.com>
 
        * tree.h (struct typed_tree): New.