+2011-10-13 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode
+ to V.
+
+2011-10-13 Jakub Jelinek <jakub@redhat.com>
+ Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa.c (maybe_optimize_var): Drop TREE_ADDRESSABLE
+ from vector or complex vars even if their DECL_UID is in not_reg_needs
+ bitmap.
+
+2011-10-13 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/sse.md (reduc_umin_v8hi): New pattern.
+ * config/i386/i386.c (ix86_build_const_vector): Handle
+ also V32QI, V16QI, V16HI and V8HI modes.
+ (emit_reduc_half): New function.
+ (ix86_expand_reduc): Use phminposuw insn for V8HImode UMIN.
+ Use emit_reduc_half helper function.
+
+2011-10-13 Lawrence Crowl <crowl@google.com>
+ Diego Novillo <dnovillo@google.com>
+
+ * lto-streamer-in.c (input_struct_function_base): Factor out of ...
+ (input_function): ... here.
+ * lto-streamer-out.c (output_struct_function_base): Factor out of ...
+ (output_function): ... here.
+
+2011-10-13 Gabriel Charette <gchare@google.com>
+ Diego Novillo <dnovillo@google.com>
+
+ * streamer-hooks.h (struct streamer_hooks): Add hooks
+ input_location and output_location.
+ * lto-streamer-in.c (lto_input_location): Use
+ streamer_hooks.input_location, if set.
+ * lto-streamer-out.c (lto_output_location): Use
+ streamer_hooks.output_location, if set.
+
+2011-10-13 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50712
+ * ipa-split.c (split_function): Always re-gimplify parameters
+ when they are not gimple vals before passing them. Properly
+ check for type compatibility.
+
+2011-10-13 Tom de Vries <tom@codesourcery.com>
+
+ * function.c (gimplify_parameters): Set number of arguments of call to
+ BUILT_IN_ALLOCA_WITH_ALIGN to 2.
+
+2011-10-13 Tom de Vries <tom@codesourcery.com>
+
+ * emit-rtl.c (set_mem_attributes_minus_bitpos): Set MEM_READONLY_P
+ for static const strings.
+ * varasm.c (build_constant_desc): Generate the memory location of the
+ constant using gen_const_mem.
+
+2011-10-13 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50698
+ * tree-data-ref.c (split_constant_offset_1): Also process
+ offsets of &MEM.
+
+2011-10-12 David S. Miller <davem@davemloft.net>
+
+ * config/sparc/sparc.md (UNSPEC_FPMERGE): Delete.
+ (UNSPEC_MUL16AU, UNSPEC_MUL8, UNSPEC_MUL8SU, UNSPEC_MULDSU): New
+ unspecs.
+ (fpmerge_vis): Remove inaccurate comment, represent using vec_select
+ of a vec_concat.
+ (vec_interleave_lowv8qi, vec_interleave_highv8qi): New insns.
+ (fmul8x16_vis, fmul8x16au_vis, fmul8sux16_vis, fmuld8sux16_vis):
+ Reimplement as unspecs and remove inaccurate comments.
+ (vis3_shift_patname): New code attr.
+ (<vis3_shift_insn><vbits>_vis): Rename to "v<vis3_shift_patname><mode>3".
+ (vis3_addsub_ss_patname): New code attr.
+ (<vis3_addsub_ss_insn><vbits>_vis): Rename to
+ "<vis3_addsub_ss_patname><mode>3".
+ * config/sparc/sparc.c (sparc_vis_init_builtins): Update to
+ accommodate pattern name changes.
+
+ * config/sparc/sparc.h: Do not force TARGET_VIS3 and TARGET_FMAF
+ to zero when assembler lacks support for such instructions.
+ * config/sparc/sparc.c (sparc_option_override): Clear MASK_VIS3
+ and MASK_FMAF in defaults when assembler lacks necessary support.
+
+2011-10-12 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/sse.md (vec_unpacks_lo_<mode>,
+ vec_unpacks_hi_<mode>, vec_unpacku_lo_<mode>,
+ vec_unpacku_hi_<mode>): Change VI124_128 mode to
+ VI124_AVX2.
+ * config/i386/i386.c (ix86_expand_sse_unpack): Handle
+ V32QImode, V16HImode and V8SImode for TARGET_AVX2.
+
+ * config/i386/sse.md (vec_avx2): New mode_attr.
+ (mulv16qi3): Macroize to cover also mulv32qi3 for
+ TARGET_AVX2 into ...
+ (mul<mode>3): ... this.
+
+ * config/i386/i386.md (UNSPEC_VPERMDI): Remove.
+ * config/i386/i386.c (ix86_expand_vec_perm): Handle
+ V16QImode and V32QImode for TARGET_AVX2.
+ (MAX_VECT_LEN): Increase to 32.
+ (expand_vec_perm_blend): Add support for 32-byte integer
+ vectors with TARGET_AVX2.
+ (valid_perm_using_mode_p): New function.
+ (expand_vec_perm_pshufb): Add support for 32-byte integer
+ vectors with TARGET_AVX2.
+ (expand_vec_perm_vpshufb2_vpermq): New function.
+ (expand_vec_perm_vpshufb2_vpermq_even_odd): New function.
+ (expand_vec_perm_even_odd_1): Handle 32-byte integer vectors
+ with TARGET_AVX2.
+ (ix86_expand_vec_perm_builtin_1): Try expand_vec_perm_vpshufb2_vpermq
+ and expand_vec_perm_vpshufb2_vpermq_even_odd.
+ * config/i386/sse.md (VEC_EXTRACT_EVENODD_MODE): Add for TARGET_AVX2
+ 32-byte integer vector modes.
+ (vec_pack_trunc_<mode>): Use VI248_AVX2 instead of VI248_128.
+ (avx2_interleave_highv32qi, avx2_interleave_lowv32qi): Remove pasto.
+ (avx2_pshufdv3, avx2_pshuflwv3, avx2_pshufhwv3): Generate
+ 4 new operands.
+ (avx2_pshufd_1, avx2_pshuflw_1, avx2_pshufhw_1): Don't use
+ match_dup, instead add 4 new operands and require they have
+ right cross-lane values.
+ (avx2_permv4di): Change into define_expand.
+ (avx2_permv4di_1): New instruction.
+ (avx2_permv2ti): Use nonimmediate_operand instead of register_operand
+ for "xm" constrained operand.
+ (VEC_PERM_AVX2): Add V32QI and V16QI for TARGET_AVX2.
+
+ * config/i386/sse.md (avx2_gathersi<mode>,
+ avx2_gatherdi<mode>, avx2_gatherdi<mode>256): Add clobber of
+ match_scratch, change memory_operand to register_operand,
+ add (mem:BLK (scratch)) use.
+ (*avx2_gathersi<mode>, *avx2_gatherdi<mode>,
+ *avx2_gatherdi<mode>256): Add clobber of match_scratch,
+ add earlyclobber to the output operand and match_scratch,
+ add (mem:BLK (scratch)) use, change the other mem to match_operand.
+ Use %p6 instead of %c6 in the pattern.
+ * config/i386/i386.c (ix86_expand_builtin): Adjust for
+ operand 2 being a Pmode register_operand instead of memory_operand.
+
+2011-10-12 Kai Tietz <ktietz@redhat.com>
+
+ * config/i386/i386.md (simple_return): Disable
+ if TARGET_SEH is active.
+
+2011-10-12 Steve Ellcey <sje@cup.hp.com>
+
+ * config/ia64/ia64.c (ia64_init_builtins): Fix unbalanced parentheses.
+
+2011-10-12 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-alias.c (maybe_skip_until): Cache also at the point
+ of the first store we visit in a basic-block.
+ (get_continuation_for_phi): Search for a candidate VUSE that
+ might dominates all others. Do pairwise disambiguation against
+ that candidate.
+
+2011-10-12 Paul Koning <pkoning@gcc.gnu.org>
+
+ PR tree-optimization/50189
+ * tree-vrp.c (extract_range_from_assert): Use the type of
+ the variable, not the limit.
+
+2011-10-12 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50700
+ * tree-object-size.c (addr_object_size): Simplify and treat
+ MEM_REF bases consistently.
+
+2011-10-12 Bernd Schmidt <bernds@codesourcery.com>
+
+ * function.c (prepare_shrink_wrap, bb_active_p): New function.
+ (thread_prologue_and_epilogue_insns): Use bb_active_p.
+ Call prepare_shrink_wrap, then recompute bb_active_p for the
+ last block.
+
+2011-10-12 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/50565
+ * convert.c (convert_to_integer): Do not narrow operands of
+ pointer subtraction.
+
+2011-10-12 Nick Clifton <nickc@redhat.com>
+
+ * config/arm/arm.h (EMIT_EABI_ATTRIBUTE): New macro. Used to
+ emit a .eabi_attribute assembler directive, possibly with a
+ comment attached.
+ * config/arm/arm.c (arm_file_start): Use the new macro.
+ * config/arm/arm-c.c (arm_output_c_attributes): Likewise.
+
+2011-10-12 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/49939
+ * config/avr/avr.md (*movqi): Rename to movqi_insn.
+ (*call_insn): Rename to call_insn.
+ (*call_value_insn): Rename to call_value_insn.
+ * config/avr/avr.c (avr_2word_insn_p): New static function.
+ (jump_over_one_insn_p): Use it.
+
+2011-10-12 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * expr.h (copy_blkmode_to_reg): Declare.
+ * expr.c (copy_blkmode_to_reg): New function.
+ (expand_assignment): Don't expand register RESULT_DECLs before
+ the lhs. Use copy_blkmode_to_reg to copy BLKmode values into a
+ RESULT_DECL register.
+ (expand_expr_real_1): Handle BLKmode decls when looking for promotion.
+ * stmt.c (expand_return): Move BLKmode-to-register code into
+ copy_blkmode_to_reg.
+
+2011-10-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/49965
+ * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
+ (mov<F:mode>cc): Likewise.
+
+2011-10-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * tree-ssa-address.c (copy_ref_info): Remove copy of TREE_THIS_NOTRAP.
+
+2011-10-11 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ * tree.h (built_in_decls): Delete old interface with two parallel
+ arrays to hold standard builtin declarations, and replace it with
+ a function based interface that can support creating builtins on
+ the fly in the future. Change all uses, and poison the old
+ names. Make sure 0 is not a legitimate builtin index.
+ (implicit_built_in_decls): Ditto.
+ (built_in_info): Ditto.
+ (BUILTIN_VALID_P): Ditto.
+ (builtin_decl_explicit): Ditto.
+ (builtin_decl_implicit): Ditto.
+ (set_builtin_decl): Ditto.
+ (set_builtin_decl_implicit_p): Ditto.
+ (builtin_decl_explicit_p): Ditto.
+ (builtin_decl_implicit_p): Ditto.
+ * tree-complex.c (expand_complex_libcall): Ditto.
+ * tree-loop-distribution.c (generate_memset_zero): Ditto.
+ * tree-ssa-strlen.c (get_string_length): Ditto.
+ (handle_builtin_strcpy): Ditto.
+ (handle_builtin_strcat): Ditto.
+ * tree.c (iterative_hash_expr): Ditto.
+ (local_define_builtin): Ditto.
+ (build_common_builtin_nodes): Ditto.
+ * builtins.c (built_in_decls): Ditto.
+ (implicit_built_in_decls): Ditto.
+ (built_in_info): Ditto
+ (expand_builtin_classify_type): Ditto.
+ (mathfn_built_in_1): Ditto.
+ (expand_builtin_cexpi): Ditto.
+ (expand_builtin_mempcpy_args): Ditto.
+ (expand_builtin_stpcpy): Ditto.
+ (gimplify_va_arg_expr): Ditto.
+ (expand_builtin_sync_operation): Ditto.
+ (build_builtin_expect_predicate): Ditto.
+ (fold_builtin_memory_op): Ditto.
+ (fold_builtin_strcpy): Ditto.
+ (fold_builtin_stpcpy): Ditto.
+ (fold_builtin_strncpy): Ditto.
+ (fold_builtin_interclass_mathfn): Ditto.
+ (fold_builtin_classify): Ditto.
+ (fold_builtin_2): Ditto.
+ (fold_builtin_strstr): Ditto.
+ (fold_builtin_strrchr): Ditto.
+ (fold_builtin_strpbrk): Ditto.
+ (fold_builtin_strcat): Ditto.
+ (fold_builtin_strncat): Ditto.
+ (fold_builtin_strcspn): Ditto.
+ (fold_builtin_fputs): Ditto.
+ (fold_builtin_sprintf): Ditto.
+ (fold_builtin_snprintf): Ditto.
+ (expand_builtin_memory_chk): Ditto.
+ (fold_builtin_memory_chk): Ditto.
+ (fold_builtin_stxcpy_chk): Ditto.
+ (fold_builtin_strncpy_chk): Ditto.
+ (fold_builtin_strcat_chk): Ditto.
+ (fold_builtin_strncat_chk): Ditto.
+ (fold_builtin_sprintf_chk_1): Ditto.
+ (fold_builtin_snprintf_chk_1): Ditto.
+ (fold_builtin_printf): Ditto.
+ (fold_builtin_fprintf): Ditto.
+ (fold_call_stmt): Ditto.
+ (set_builtin_user_assembler_name): Ditto.
+ * tree-emutls.c (emutls_common_1): Ditto.
+ * omp-low.c (scan_omp): Ditto.
+ (lower_rec_input_clauses): Ditto.
+ (lower_reduction_clauses): Ditto.
+ (expand_parallel_call): Ditto.
+ (expand_task_call): Ditto.
+ (maybe_catch_exception): Ditto.
+ (optimize_omp_library_calls): Ditto.
+ (expand_omp_for_generic): Ditto.
+ (expand_omp_for_static_nochunk): Ditto.
+ (expand_omp_for_static_chunk): Ditto.
+ (expand_omp_sections): Ditto.
+ (expand_omp_atomic_fetch_op): Ditto.
+ (expand_omp_atomic_pipeline): Ditto.
+ (expand_omp_atomic_mutex): Ditto.
+ (lower_omp_single_simple): Ditto.
+ (lower_omp_single_copy): Ditto.
+ (lower_omp_master): Ditto.
+ (lower_omp_ordered): Ditto.
+ (lower_omp_critical): Ditto.
+ * tree-ssa-ccp.c (optimize_stdarg_builtin): Ditto.
+ * builtins.c (DEF_BUILTIN_STUB): Ditto.
+ (BUILT_IN_NONE): Ditto.
+ * tree-ssa-math-opts.c (execute_optimize_bswap): Ditto.
+ * gimple-low.c (lower_function_body): Ditto.
+ (lower_builtin_setjmp): Ditto.
+ * c-decl.c (merge_decls): Ditto.
+ * tree-eh.c (lower_resx): Ditto.
+ (lower_resx): Ditto.
+ (lower_eh_dispatch): Ditto.
+ * function (gimplify_parameters): Ditto.
+ * c-typeck.c (build_function_call_vec): Ditto.
+ * gimplify.c (build_stack_save_restore): Ditto.
+ (gimplify_vla_decl): Ditto.
+ (gimplify_modify_expr_to_memcpy): Ditto.
+ (gimplify_modify_expr_to_memset): Ditto.
+ (gimplify_variable_sized_compare): Ditto.
+ (gimplify_function_tree): Ditto.
+ * calls.c (emit_call_1): Ditto.
+ * tree-ssa-forprop.c (simplify_builtin_call): Ditto.
+ * tree-nested.c (convert_nl_goto_reference): Ditto.
+ (convert_tramp_reference_op): Ditto.
+ (finalize_nesting_tree_1): Ditto.
+ * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
+ (tree_ssa_prefetch_arrays): Ditto.
+ * tree-streamer-in.c (streamer_get_builtin_tree): Ditto.
+ * system.h (built_in_decls): Ditto.
+ (implicit_built_in_decls): Ditto.
+ * tree-vect-generic.c (expand_vector_operations_1): Ditto.
+ * config/sparc/sparc.c (sparc_gimplify_va_arg): Ditto.
+ * config/i386/i386.c (ix86_gimplify_va_arg): Ditto.
+ (ix86_veclibabi_svml): Ditto.
+ (ix86_veclibabi_acml): Ditto.
+ * config/vms/vms.c (vms_patch_builtins): Ditto.
+ * config/ia64/ia64.c (ia64_init_builtins): Ditto.
+ * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Ditto.
+ (rs6000_builtin_vectorized_libmass): Ditto.
+ (rs6000_init_builtins): Ditto.
+ * config/darwin.c (darwin_override_options): Ditto.
+ (darwin_patch_builtin): Ditto.
+ (darwin_rename_builtins): Ditto.
+ * config/pa/pa.c (pa_init_builtins): Ditto.
+
+2011-10-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * tree.h (copy_ref_info): Expose existing function.
+ * tree-ssa-loop-ivopts.c (copy_ref_info): Move function to...
+ * tree-ssa-address.c (copy_ref_info): ...here, and remove static token.
+
+2011-10-11 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/avr-protos.h (avr_mode_code_base_reg_class): New prototype.
+ (avr_regno_mode_code_ok_for_base_p): New prototype.
+ * config/avr/avr.h (BASE_REG_CLASS): Remove.
+ (REGNO_OK_FOR_BASE_P): Remove.
+ (REG_OK_FOR_BASE_NOSTRICT_P): Remove.
+ (REG_OK_FOR_BASE_STRICT_P): Remove.
+ (MODE_CODE_BASE_REG_CLASS): New define.
+ (REGNO_MODE_CODE_OK_FOR_BASE_P): New define.
+ * config/avr/avr.c (avr_mode_code_base_reg_class): New function.
+ (avr_regno_mode_code_ok_for_base_p): New function.
+ (avr_reg_ok_for_addr_p): New static function.
+ (avr_legitimate_address_p): Use it. Beautify.
+
+2011-10-11 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/50447
+ * config/avr/avr.md (cc): Add out_plus attribute alternative.
+ (addsi3): Use it. Adapt avr_out_plus to new prototype. Use
+ avr_out_plus for all CONST_INT addends.
+ * config/avr/avr-protos.h (avr_out_plus): Change prototype.
+ * config/avr/avr.c (notice_update_cc): Call avr_out_plus on
+ CC_OUT_PLUS.
+ (avr_out_plus_1): Change prototype and report effect on cc0.
+ (avr_out_plus): Ditto.
+ (adjust_insn_length): Adapt call to avr_out_plus to new prototype.
+
+2011-10-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/i386/i386.c (ix86_expand_special_args_builtin): Remove
+ the extra break.
+
+2011-10-11 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
+
+ * doc/invoke.texi: Document new warning.
+ * common.opt (Wvector-operation-performance): Define new warning.
+ * tree-vect-generic.c (expand_vector_piecewise): Warn about expanded
+ vector operation.
+ (exapnd_vector_parallel): Warn about expanded vector operation.
+ (lower_vec_shuffle): Warn about expanded vector operation.
+ * c-typeck.c (c_build_vec_perm_expr): Store correct location
+ when creating VEC_PERM_EXPR.
+
+2011-10-11 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50204
+ * tree-ssa-alias.c (get_continuation_for_phi_1): Split out
+ two argument handling from ...
+ (get_continuation_for_phi): ... here. Handle arbitrary number
+ of PHI args.
+
+2011-10-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/33067
+ * c-family/c-pretty-print.c (pp_c_floating_constant): Output
+ max_digits10 (in the ISO C++ WG N1822 sense) decimal digits.
+
+2011-10-11 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * modulo-sched.c: Fix comment typo. Mention the possibility
+ of using scheduling windows of II+1 cycles.
+
+2011-10-11 Tristan Gingold <gingold@adacore.com>
+
+ * doc/invoke.texi (C Dialect Options): Document
+ -fallow-parameterless-variadic-functions.
+ * c-parser.c (c_parser_parms_list_declarator): Handle it.
+
+2011-10-10 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/avr.c (avr_option_override): Set
+ flag_omit_frame_pointer to 0 if frame pointer is needed for
+ unwinding.
+
+2011-10-10 Uros Bizjak <ubizjak@gmail.com>
+
+ PR bootstrap/50665
+ * optabs.h (DOI_vec_perm): Rename from OTI_vec_perm. Move from enum
+ optab_index to enum direct_optab_index.
+ (vec_perm_optab): Update.
+
+2011-10-10 Anatoly Sokolov <aesok@post.ru>
+
+ * config/cris/cris.c (cris_preferred_reload_class): New function.
+ (TARGET_PREFERRED_RELOAD_CLASS): Define.
+ * config/cris/cris.h (PREFERRED_RELOAD_CLASS): Remove.
+
+2011-10-10 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/avr.md (*tablejump_rjmp): Change insn condition to
+ !AVR_HAVE_JMP_CALL.
+ (*tablejump_lib): Change insn condition to AVR_HAVE_JMP_CALL.
+ (*tablejump_enh, *tablejump): Remove insns.
+ * config/avr/libgcc.S (__tablejump__): Use RET instead of EIND +
+ EIJMP for indirect jump. Use LPM Z+ where available.
+
+2011-10-10 Richard Henderson <rth@redhat.com>
+
+ * doc/md.texi (vec_perm_const): Fix typo in cindex.
+
+2011-10-10 Kirill Yukhin <kirill.yukhin@intel.com>
+ Yakovlev Vladimir <vladimir.b.yakovlev@intel.com>
+
+ * config/i386/sse.md (fma_fnmsub_<mode>): Fix a typo.
+
+2011-10-10 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/50389
+ * gimple-fold.c (gimplify_and_update_call_from_tree): Do not
+ mark symbols for renaming. Append the VUSE to all statements
+ that possibly can have one.
+
+2011-10-10 Richard Guenther <rguenther@suse.de>
+
+ * ipa-split.c (pass_split_functions): Add verification TODOs.
+ (pass_feedback_split_functions): Likewise.
+
+2011-10-10 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/50195
+ * fold-const.c (fold_binary_loc): Canonicalize x*x to pow (x, 2)
+ only when optimizing.
+
+2011-10-10 Nick Clifton <nickc@redhat.com>
+
+ PR middle-end/49801
+ * compare-elim.c (find_comparisons_in_bb): Use df_get_live_in and
+ df_get_live_out instead of accessing the bitmaps directly.
+ (execute_compare_elim_after_reload): Remove calls to df_set_flags,
+ df_live_add_problem and df_analyze.
+
+2011-10-10 Michael Matz <matz@suse.de>
+
+ PR middle-end/50638
+ * tree-emutls.c (gen_emutls_addr): Call add_referenced_var.
+
+2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * modulo-sched.c (ps_reg_move_info): Add num_consecutive_stages.
+ (SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES): Delete.
+ (node_sched_params): Remove first_reg_move and nreg_moves.
+ (ps_num_consecutive_stages, extend_node_sched_params): New functions.
+ (update_node_sched_params): Move up file.
+ (print_node_sched_params): Print the stage. Don't dump info related
+ to first_reg_move and nreg_moves.
+ (set_columns_for_row): New function.
+ (set_columns_for_ps): Move up file and use set_columns_for_row.
+ (schedule_reg_move): New function.
+ (schedule_reg_moves): Call extend_node_sched_params and
+ schedule_reg_move. Extend size of uses bitmap. Initialize
+ num_consecutive_stages. Return false if a move could not be
+ scheduled.
+ (apply_reg_moves): Don't emit moves here.
+ (permute_partial_schedule): Handle register moves.
+ (duplicate_insns_of_cycles): Remove for_prolog. Emit moves according
+ to the same stage-count test as ddg nodes.
+ (generate_prolog_epilog): Update calls accordingly.
+ (sms_schedule): Allow move-scheduling to add a new first stage.
+
+2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * modulo-sched.c (ps_insn): Adjust comment.
+ (ps_reg_move_info): New structure.
+ (partial_schedule): Add reg_moves field.
+ (SCHED_PARAMS): Use node_sched_param_vec instead of node_sched_params.
+ (node_sched_params): Turn first_reg_move into an identifier.
+ (ps_reg_move): New function.
+ (ps_rtl_insn): Cope with register moves.
+ (ps_first_note): Adjust comment and assert that the instruction
+ isn't a register move.
+ (node_sched_params): Replace with...
+ (node_sched_param_vec): ...this vector.
+ (set_node_sched_params): Adjust accordingly.
+ (print_node_sched_params): Take a partial schedule instead of a ddg.
+ Use ps_rtl_insn and ps_reg_move.
+ (generate_reg_moves): Rename to...
+ (schedule_reg_moves): ...this. Remove rescan parameter. Record each
+ move in the partial schedule, but don't emit it here. Don't perform
+ register substitutions here either.
+ (apply_reg_moves): New function.
+ (duplicate_insns_of_cycles): Use register indices directly,
+ rather than finding instructions using PREV_INSN. Use ps_reg_move.
+ (sms_schedule): Call schedule_reg_moves before committing to
+ a partial schedule. Try the next ii if the schedule fails.
+ Use apply_reg_moves instead of generate_reg_moves. Adjust
+ call to print_node_sched_params. Free node_sched_param_vec
+ instead of node_sched_params.
+ (create_partial_schedule): Initialize reg_moves.
+ (free_partial_schedule): Free reg_moves.
+
+2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * modulo-sched.c (ps_insn): Replace node field with an identifier.
+ (SCHED_ASAP): Replace with..
+ (NODE_ASAP): ...this macro.
+ (SCHED_PARAMS): New macro.
+ (SCHED_TIME, SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES, SCHED_ROW)
+ (SCHED_STAGE, SCHED_COLUMN): Redefine using SCHED_PARAMS.
+ (node_sched_params): Remove asap.
+ (ps_rtl_insn, ps_first_note): New functions.
+ (set_node_sched_params): Use XCNEWVEC. Don't copy across the
+ asap values.
+ (print_node_sched_params): Use SCHED_PARAMS and NODE_ASAP.
+ (generate_reg_moves): Pass ids to the SCHED_* macros.
+ (update_node_sched_params): Take a ps insn identifier rather than
+ a node as parameter. Use ps_rtl_insn.
+ (set_columns_for_ps): Update for above field and SCHED_* macro changes.
+ (permute_partial_schedule): Use ps_rtl_insn and ps_first_note.
+ (optimize_sc): Update for above field and SCHED_* macro changes.
+ Update calls to try_scheduling_node_in_cycle and
+ update_node_sched_params.
+ (duplicate_insns_of_cycles): Adjust for above field and SCHED_*
+ macro changes. Use ps_rtl_insn and ps_first_note.
+ (sms_schedule): Pass ids to the SCHED_* macros.
+ (get_sched_window): Adjust for above field and SCHED_* macro changes.
+ Use NODE_ASAP instead of SCHED_ASAP.
+ (try_scheduling_node_in_cycle): Remove node parameter. Update
+ call to ps_add_node_check_conflicts. Pass ids to the SCHED_*
+ macros.
+ (sms_schedule_by_order): Update call to try_scheduling_node_in_cycle.
+ (ps_insert_empty_row): Adjust for above field changes.
+ (compute_split_row): Use ids rather than nodes.
+ (verify_partial_schedule): Adjust for above field changes.
+ (print_partial_schedule): Use ps_rtl_insn.
+ (create_ps_insn): Take an id rather than a node.
+ (ps_insn_find_column): Adjust for above field changes.
+ Use ps_rtl_insn.
+ (ps_insn_advance_column): Adjust for above field changes.
+ (add_node_to_ps): Remove node parameter. Update call to
+ create_ps_insn.
+ (ps_has_conflicts): Use ps_rtl_insn.
+ (ps_add_node_check_conflicts): Replace node parameter than an id.
+
+2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
+
+ * modulo-sched.c (undo_replace_buff_elem): Delete.
+ (generate_reg_moves): Don't build and return an undo list.
+ (free_undo_replace_buff): Delete.
+ (sms_schedule): Adjust call to generate_reg_moves.
+ Don't call free_undo_replace_buff.
+
+2011-10-10 Matthias Klose <doko@ubuntu.com>
+
+ * common/config/m32c: Remove empty directory.
+
+2011-10-10 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/avr.md (*mulhi3_enh): Treat squaring smarter.
+
+2011-10-10 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/50652
+ * config/avr/avr-mcus.def (AVR_MCU): Set .data_section_start of
+ atmega164a to 0x100.
+
+2011-10-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-ssa-forwprop.c (forward_propagate_into_comparison): Do not make
+ the replacement if the conversion to the LHS type is not useless.
+
+2011-10-09 Ira Rosen <ira.rosen@linaro.org>
+
+ PR tree-optimization/50635
+ * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add
+ DEF_STMT to the list of statements to be replaced by the
+ pattern statements.
+ (vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
+
+2011-10-09 Anatoly Sokolov <aesok@post.ru>
+
+ * system.h: Commit forgotten hunk in previous patch.
+ (OUTPUT_ADDR_CONST_EXTRA): Poison.
+
+2011-10-08 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR libobjc/50428
+ * doc/objc.texi (Garbage Collection): Updated example to protect
+ +initialize against execution in subclasses.
+
+2011-10-07 Richard Henderson <rth@redhat.com>
+
+ * doc/extend.texi (__builtin_shuffle): Improve the description to
+ include the modulus of the selector. Mention OpenCL.
+ * doc/md.texi (vec_perm, vec_perm_const): Document named patterns.
+
+ * tree.def (VEC_PERM_EXPR): Rename from VEC_SHUFFLE_EXPR.
+ * genopinit.c (optabs): Rename vshuffle to vec_perm.
+ * c-typeck.c (c_build_vec_perm_expr): Rename from
+ c_build_vec_shuffle_expr. Update for name changes.
+ * optabs.c (expand_vec_perm_expr_p): Rename from
+ expand_vec_shuffle_expr_p.
+ (expand_vec_perm_expr): Rename from expand_vec_shuffle_expr.
+ * optabs.h (OTI_vec_perm): Rename from DOI_vshuffle.
+ (vec_perm_optab): Rename from vshuffle_optab.
+ * expr.c, gimple-pretty-print.c, gimple.c, gimplify.c,
+ c-tree.h, c-parser.c, tree-cfg.c, tree-inline.c, tree-pretty-print.c,
+ tree-ssa-operands.c, tree-vect-generic.c: Update for name changes.
+
+ * config/i386/i386.c (ix86_expand_vec_perm): Rename from
+ ix86_expand_vshuffle.
+ * config/i386/i386-protos.h: Update.
+ * config/i386/sse.md (VEC_PERM_AVX2): Rename from VSHUFFLE_AVX2.
+ (vec_perm<VEC_PERM_AVX2>): Rename from vshuffle<VSHUFFLE_AVX2>.
+
+2011-10-07 Richard Henderson <rth@redhat.com>
+
+ * config/i386/predicates.md (avx2_pblendw_operand): New.
+ * config/i386/sse.md (sse4_1_pblendw): Un-macroize.
+ (avx2_pblendw, *avx2_pblendw): New expander and insn.
+
+2011-10-07 Richard Henderson <rth@redhat.com>
+
+ * config/i386/i386.c (bdesc_args): Update code for
+ __builtin_ia32_palignr256. Change type of __builtin_ia32_pslldqi256,
+ and __builtin_ia32_psrldqi256 to V4DI_FTYPE_V4DI_INT_CONVERT.
+ (ix86_expand_args_builtin): Handle V4DI_FTYPE_V4DI_INT_CONVERT.
+ * config/i386/sse.md (mode iterator V16): Add V2TI.
+ (mode iterator SSESCALARMODE): Use V2TI not V4DI.
+ (mode attr ssse3_avx2): Add V2TI.
+ (avx2_lshrqv4di3, avx2_lshlqv4di3): Remove.
+
+2011-10-07 David S. Miller <davem@davemloft.net>
+
+ PR 50655
+ * configure.ac: Add .register directives to VIS3 test.
+ * configure: Regenerate.
+
+2011-10-07 Richard Henderson <rth@redhat.com>
+
+ * config.gcc (x86_64-*): Add core-avx-i, core-avx2 for with_cpu.
+
+2011-10-07 Richard Henderson <rth@redhat.com>
+
+ PR 49752
+ * fold-const.c (fold_checksum_tree): Remove out-of-date assert.
+
+2011-10-07 Andrew Stubbs <ams@codesourcery.com>
+
+ * config/arm/predicates.md (shift_amount_operand): Remove constant
+ range check.
+ (shift_operator): Check range of constants for all shift operators.
+
+2011-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * config/s390/s390.c (s390_emit_tls_call_insn): Remove assertion.
+ Load GOT pointer for non-pic builds.
+ (s390_load_got): Replace pic_offset_table_rtx with hardcoded r12.
+ (s390_emit_call): Likewise.
+
+2011-10-07 Tom de Vries <tom@codesourcery.com>
+
+ PR middle-end/50527
+ * tree.c (build_common_builtin_nodes): Add local_define_builtin for
+ BUILT_IN_ALLOCA_WITH_ALIGN. Mark that BUILT_IN_ALLOCA_WITH_ALIGN can
+ throw.
+ * builtins.c (expand_builtin_alloca): Handle BUILT_IN_ALLOCA_WITH_ALIGN
+ arglist. Set align for BUILT_IN_ALLOCA_WITH_ALIGN.
+ (expand_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
+ (is_inexpensive_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
+ * tree-ssa-ccp.c (evaluate_stmt): Set align for
+ BUILT_IN_ALLOCA_WITH_ALIGN.
+ (fold_builtin_alloca_for_var): Rename to ...
+ (fold_builtin_alloca_with_align): Set DECL_ALIGN from 2nd
+ BUILT_IN_ALLOCA_WITH_ALIGN argument.
+ (ccp_fold_stmt): Try folding BUILT_IN_ALLOCA_WITH_ALIGN using
+ fold_builtin_alloca_with_align.
+ (optimize_stack_restore): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
+ * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN): Declare using
+ DEF_BUILTIN_STUB.
+ * ipa-pure-const.c (special_builtin_state): Handle
+ BUILT_IN_ALLOCA_WITH_ALIGN.
+ * tree-ssa-alias.c (ref_maybe_used_by_call_p_1)
+ (call_may_clobber_ref_p_1): Same.
+ * function.c (gimplify_parameters): Lower vla to
+ BUILT_IN_ALLOCA_WITH_ALIGN.
+ * gimplify.c (gimplify_vla_decl): Same.
+ * cfgexpand.c (expand_call_stmt): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
+ * tree-mudflap.c (mf_xform_statements): Same.
+ * tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
+ (mark_all_reaching_defs_necessary_1, propagate_necessity): Same.
+ * varasm.c (incorporeal_function_p): Same.
+ * tree-object-size.c (alloc_object_size): Same.
+ * gimple.c (gimple_build_call_from_tree): Same.
+
+2011-10-07 Bernd Schmidt <bernds@codesourcery.com>
+
+ * function.c (frame_required_for_rtx): Remove function.
+ (requires_stack_frame_p): New arg set_up_by_prologue. All callers
+ changed. Compute a set of mentioned registers and compare against
+ the new arg rather than calling frame_required_for_rtx.
+ (thread_prologue_and_epilogue_insns): Compute the set_up_by_prologue
+ reg set. Convert the unconverted_simple_returns mechanism to store
+ jump insns rather than their basic blocks. Also check the
+ orig_entry_edge destination for new blocks.
+
+2011-10-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/50650
+ * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): Don't
+ call vect_is_simple_cond here, instead fail if cond_expr isn't
+ COMPARISON_CLASS_P or if get_vectype_for_scalar_type returns NULL
+ for cond_expr's first operand.
+ * tree-vect-stmts.c (vect_is_simple_cond): Static again.
+ * tree-vectorizer.h (vect_is_simple_cond): Remove prototype.
+
+2011-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * config/s390/s390.md (DWH, dwh): New mode macros.
+ ("umulsidi3"): Extend to support "umulditi3" as well.
+
+2011-10-07 Uros Bizjak <ubizjak@gmail.com>
+ H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/50603
+ * config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
+ integer PLUS RTX to a register to improve address combine.
+
+2011-10-06 Richard Henderson <rth@redhat.com>
+
+ * combine-stack-adjust.c (maybe_move_args_size_note): Add after
+ parameter; use it to decide whether to merge two notes.
+ (combine_stack_adjustments_for_block): Use maybe_move_args_size_note
+ for the deallocation case as well.
+
+2011-10-06 Anatoly Sokolov <aesok@post.ru>
+
+ * system.h (OUTPUT_ADDR_CONST_EXTRA): Poison.
+ * doc/tm.texi.in (OUTPUT_ADDR_CONST_EXTRA): Remove documentation.
+ * doc/tm.texi: Regenerate.
+ * target.def (output_addr_const_extra): Use
+ hook_bool_FILEptr_rtx_false.
+ * targhooks.c (default_asm_output_addr_const_extra): Remove.
+ * targhooks.h (default_asm_output_addr_const_extra): Remove.
+ * hooks.c (hook_bool_FILEptr_rtx_false): New functions.
+ * hooks.h (hook_bool_FILEptr_rtx_false): Declare.
+
+2011-10-06 David S. Miller <davem@davemloft.net>
+
+ * config/sparc/sparc.md (popcount<mode>2, clz<mode>2): Split up into...
+ (popcountdi2, popcountsi2, clzdi2, clzsi2): Explicit expanders, in the
+ SI mode 64-bit code gen case explicitly zero-extend and truncate.
+ (*popcount<mode>_sp64): Split up into...
+ (*popcountdi_sp64, *popcountsi_64): Explicit instantiations, and in the
+ SImode case use truncate.
+ (*clzsi_sp64): Rewrite to use truncate, and let the expander emit the
+ subtract so the compiler can optimize it.
+ (SIDI): Remove unused mode iterator.
+
+2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
+
+ * function.c (thread_prologue_and_epilogue_insns): Emit split prologue
+ on the orig_entry_edge. Don't account for it in prologue_clobbered.
+
+2011-10-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/50596
+ * tree-vectorizer.h (vect_is_simple_cond): New prototype.
+ (NUM_PATTERNS): Change to 6.
+ * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): New
+ function.
+ (vect_vect_recog_func_ptrs): Add vect_recog_mixed_size_cond_pattern.
+ (vect_mark_pattern_stmts): Don't create stmt_vinfo for def_stmt
+ if it already has one, and don't set STMT_VINFO_VECTYPE in it
+ if it is already set.
+ * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Handle
+ COND_EXPR in pattern stmts.
+ (vect_is_simple_cond): No longer static.
+
+2001-10-06 Richard Henderson <rth@redhat.com>
+
+ * config/i386/i386.c (ix86_expand_vshuffle): Add AVX2 support.
+ * config/i386/sse.md (sseshuffint): Remove.
+ (sseintvecmode): Support V16HI, V8HI, V32QI, V16QI.
+ (VSHUFFLE_AVX2): New mode iterator.
+ (vshuffle<mode>): Use it.
+ (avx_vec_concat<V_256>): Rename from *vec_concat<V_256>_avx.
+
+ * config/i386/i386.c (ix86_expand_sse_movcc): Use correct mode
+ for vector_all_ones_operand.
+ (ix86_expand_int_vcond): Distinguish between comparison mode
+ and data mode. Allow them to differ.
+ (ix86_expand_vshuffle): Don't force data mode to match maskmode.
+
+2001-10-06 Richard Henderson <rth@redhat.com>
+
+ * optabs.c (expand_vec_shuffle_expr): Use the proper mode for the
+ mask operand. Tidy the code.
+
+2011-10-06 Jakub Jelinek <jakub@redhat.com>
+
+ * tree-vect-patterns.c (vect_pattern_recog_1): Use
+ vect_recog_func_ptr typedef for the first argument.
+ (vect_pattern_recog): Rename vect_recog_func_ptr variable
+ to vect_recog_func, use vect_recog_func_ptr typedef for it.
+
+ PR tree-optimization/49279
+ * tree-ssa-structalias.c (find_func_aliases): Don't handle
+ CAST_RESTRICT.
+ * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Allow
+ restrict propagation.
+ * tree-ssa.c (useless_type_conversion_p): Don't return false
+ if TYPE_RESTRICT differs.
+
+2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
+
+ * function.c (thread_prologue_and_epilogue_insns): Build a vector
+ of unconverted simple return blocks rather than trying to
+ recompute them later based on bb_flags bitmap tests.
+
+2011-10-06 Michael Matz <matz@suse.de>
+
+ * tree-flow.h (get_var_ann): Don't declare.
+ * tree-flow-inline.h (get_var_ann): Remove.
+ (set_is_used): Use var_ann, not get_var_ann.
+ * tree-dfa.c (add_referenced_var): Inline body of get_var_ann.
+ * tree-profile.c (gimple_gen_edge_profiler): Call
+ find_referenced_var_in.
+ (gimple_gen_interval_profiler): Ditto.
+ (gimple_gen_pow2_profiler): Ditto.
+ (gimple_gen_one_value_profiler): Ditto.
+ (gimple_gen_average_profiler): Ditto.
+ (gimple_gen_ior_profiler): Ditto.
+ (gimple_gen_ic_profiler): Ditto plus call add_referenced_var.
+ (gimple_gen_ic_func_profiler): Call add_referenced_var.
+ * tree-mudflap.c (execute_mudflap_function_ops): Call
+ add_referenced_var.
+
+2011-10-06 Jakub Jelinek <jakub@redhat.com>
+
+ * tree-vect-patterns.c (vect_handle_widen_mult_by_const): For lhs
+ don't set SSA_NAME_DEF_STMT that has been already set by
+ gimple_build_assign_with_ops.
+ (vect_recog_pow_pattern, vect_recog_widen_sum_pattern,
+ vect_operation_fits_smaller_type, vect_recog_over_widening_pattern):
+ Likewise.
+
+ * tree.h (avoid_folding_inline_builtin): New prototype.
+ * builtins.c (avoid_folding_inline_builtin): No longer static.
+ * gimple-fold.c (gimple_fold_builtin): Give up if
+ avoid_folding_inline_builtin returns true.
+
+2011-10-06 Richard Guenther <rguenther@suse.de>
+
+ * tree-vect-generic.c (vector_element): Look at previous
+ generated results.
+
+2011-10-06 David Edelsohn <dje.gcc@gmail.com>
+
+ PR target/39950
+ * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Define
+ __powerpc__, __PPC__, __unix__.
+
+2011-10-06 Michael Matz <matz@suse.de>
+
+ * i386/i386.opt (recip_mask, recip_mask_explicit,
+ x_recip_mask_explicit): New variables and cl_target member.
+ (mrecip=): New option.
+ * i386/i386.h (RECIP_MASK_DIV, RECIP_MASK_SQRT, RECIP_MASK_VEC_DIV,
+ RECIP_MASK_VEC_SQRT, RECIP_MASK_ALL, RECIP_MASK_NONE): New bitmasks.
+ (TARGET_RECIP_DIV, TARGET_RECIP_SQRT, TARGET_RECIP_VEC_DIV,
+ TARGET_RECIP_VEC_SQRT): New tests.
+ * i386/i386.md (divsf3): Check TARGET_RECIP_DIV.
+ (sqrt<mode>2): Check TARGET_RECIP_SQRT.
+ * i386/sse.md (div<mode>3): Check TARGET_RECIP_VEC_DIV.
+ (sqrt<mode>2): Check TARGET_RECIP_VEC_SQRT.
+ * i386/i386.c (ix86_option_override_internal): Set recip_mask
+ for -mrecip and -mrecip=options.
+ (ix86_function_specific_save): Save recip_mask_explicit.
+ (ix86_function_specific_restore): Restore recip_mask_explicit.
+
+ * doc/invoke.texi (ix86 Options): Document the new option.
+
2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
PR target/49049