[Vectorizer] Make REDUC_xxx_EXPR tree codes produce a scalar result

	PR tree-optimization/61114
	* expr.c (expand_expr_real_2): For REDUC_{MIN,MAX,PLUS}_EXPR, add
	extract_bit_field around optab result.

	* fold-const.c (fold_unary_loc): For REDUC_{MIN,MAX,PLUS}_EXPR, produce
	scalar not vector.

	* tree-cfg.c (verify_gimple_assign_unary): Check result vs operand type
	for REDUC_{MIN,MAX,PLUS}_EXPR.

	* tree-vect-loop.c (vect_analyze_loop): Update comment.
	(vect_create_epilog_for_reduction): For direct vector reduction, use
	result of tree code directly without extract_bit_field.

	* tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): Update
	comment.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216736 138bc75d-0d04-0410-961f-82ee72b054a4
Add new optabs for reducing vectors to scalars

	PR tree-optimization/61114
	* doc/md.texi (Standard Names): Add reduc_(plus,[us](min|max))|scal
	optabs, and note in reduc_[us](plus|min|max) to prefer the former.

	* expr.c (expand_expr_real_2): Use reduc_..._scal if available, fall
	back to old reduc_... + BIT_FIELD_REF only if not.

	* optabs.c (optab_for_tree_code): for REDUC_(MAX,MIN,PLUS)_EXPR,
	return the reduce-to-scalar (reduc_..._scal) optab.
	(scalar_reduc_to_vector): New.

	* optabs.def (reduc_smax_scal_optab, reduc_smin_scal_optab,
	reduc_plus_scal_optab, reduc_umax_scal_optab, reduc_umin_scal_optab):
	New.

	* optabs.h (scalar_reduc_to_vector): Declare.

	* tree-vect-loop.c (vectorizable_reduction): Look for optabs reducing
	to either scalar or vector.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216737 138bc75d-0d04-0410-961f-82ee72b054a4
[AArch64] Use new reduc_plus_scal optabs, inc. for __builtins

	* config/aarch64/aarch64-simd-builtins.def
	(reduc_splus_<mode>/VDQF, reduc_uplus_<mode>/VDQF, reduc_splus_v4sf):
	Remove.
	(reduc_plus_scal_<mode>, reduc_plus_scal_v4sf): New.

	* config/aarch64/aarch64-simd.md (reduc_<sur>plus_mode): Remove.
	(reduc_splus_<mode>, reduc_uplus_<mode>, reduc_plus_scal_<mode>): New.

	(reduc_<sur>plus_mode): Change SUADDV -> UNSPEC_ADDV, rename to...
	(aarch64_reduc_plus_internal<mode>): ...this.

	(reduc_<sur>plus_v2si): Change SUADDV -> UNSPEC_ADDV, rename to...
	(aarch64_reduc_plus_internalv2si): ...this.

	(reduc_splus_<mode>/V2F): Rename to...
	(aarch64_reduc_plus_internal<mode>): ...this.

	* config/aarch64/iterators.md
	(UNSPEC_SADDV, UNSPEC_UADDV, SUADDV): Remove.
	(UNSPEC_ADDV): New.
	(sur): Remove elements for UNSPEC_SADDV and UNSPEC_UADDV.

	* config/aarch64/arm_neon.h (vaddv_s8, vaddv_s16, vaddv_s32, vaddv_u8,
	vaddv_u16, vaddv_u32, vaddvq_s8, vaddvq_s16, vaddvq_s32, vaddvq_s64,
	vaddvq_u8, vaddvq_u16, vaddvq_u32, vaddvq_u64, vaddv_f32, vaddvq_f32,
	vaddvq_f64): Change __builtin_aarch64_reduc_[us]plus_... to
	__builtin_aarch64_reduc_plus_scal, remove vget_lane wrapper.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216738 138bc75d-0d04-0410-961f-82ee72b054a4
	* MAINTAINTERS: Change my email address.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216739 138bc75d-0d04-0410-961f-82ee72b054a4
[AArch64] Use new reduc_[us](min|max)_scal optabs, inc. for builtins

	* config/aarch64/aarch64-simd-builtins.def (reduc_smax_, reduc_smin_,
	reduc_umax_, reduc_umin_, reduc_smax_nan_, reduc_smin_nan_): Remove.
	(reduc_smax_scal_, reduc_smin_scal_, reduc_umax_scal_,
	reduc_umin_scal_, reduc_smax_nan_scal_, reduc_smin_nan_scal_): New.

	* config/aarch64/aarch64-simd.md
	(reduc_<maxmin_uns>_<mode>): Rename VDQV_S variant to...
	(reduc_<maxmin_uns>_internal<mode>): ...this.
	(reduc_<maxmin_uns>_<mode>): New (VDQ_BHSI).
	(reduc_<maxmin_uns>_scal_<mode>): New (*2).

	(reduc_<maxmin_uns>_v2si): Combine with below, renaming...
	(reduc_<maxmin_uns>_<mode>): Combine V2F with above, renaming...
	(reduc_<maxmin_uns>_internal_<mode>): ...to this (VDQF).

	* config/aarch64/arm_neon.h (vmaxv_f32, vmaxv_s8, vmaxv_s16,
	vmaxv_s32, vmaxv_u8, vmaxv_u16, vmaxv_u32, vmaxvq_f32, vmaxvq_f64,
	vmaxvq_s8, vmaxvq_s16, vmaxvq_s32, vmaxvq_u8, vmaxvq_u16, vmaxvq_u32,
	vmaxnmv_f32, vmaxnmvq_f32, vmaxnmvq_f64, vminv_f32, vminv_s8,
	vminv_s16, vminv_s32, vminv_u8, vminv_u16, vminv_u32, vminvq_f32,
	vminvq_f64, vminvq_s8, vminvq_s16, vminvq_s32, vminvq_u8, vminvq_u16,
	vminvq_u32, vminnmv_f32, vminnmvq_f32, vminnmvq_f64): Update to use
	__builtin_aarch64_reduc_..._scal; remove vget_lane wrapper.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216741 138bc75d-0d04-0410-961f-82ee72b054a4
[AArch64] Restore gimple_folding of reduction intrinsics

	* config/aarch64/aarch64.c (TARGET_GIMPLE_FOLD_BUILTIN): Define again.
	* config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin):
	Restore, enable for bigendian, update to use __builtin..._scal...


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216742 138bc75d-0d04-0410-961f-82ee72b054a4
libgo: Update to Go 1.3.3 release.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216746 138bc75d-0d04-0410-961f-82ee72b054a4
Let GDB reuse GCC's parser.

2014-10-27  Phil Muldoon  <pmuldoon@redhat.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Tom Tromey  <tromey@redhat.com>

	* aclocal.m4: New file.
	* callbacks.cc: New file.
	* callbacks.hh: New file.
	* cc1plugin-config.h.in: New file.
	* configure: New file.
	* configure.ac: New file.
	* connection.cc: New file.
	* connection.hh: New file.
	* findcomp.cc: New file.
	* findcomp.hh: New file.
	* libcc1.cc: New file.
	* libcc1plugin.sym: New file.
	* libcc1.sym: New file.
	* Makefile.am: New file.
	* Makefile.in: New file.
	* marshall.cc: New file.
	* marshall.hh: New file.
	* names.cc: New file.
	* names.hh: New file.
	* plugin.cc: New file.
	* rpc.hh: New file.
	* status.hh: New file.

2014-10-27  Phil Muldoon  <pmuldoon@redhat.com>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Tom Tromey  <tromey@redhat.com>

	* gcc-c-fe.def: New file.
	* gcc-c-interface.h: New file.
	* gcc-interface.h: New file.

2014-10-27  Phil Muldoon  <pmuldoon@redhat.com>
	    Tom Tromey  <tromey@redhat.com>

	* c-tree.h (enum c_oracle_request): New.
	(c_binding_oracle_function): New typedef.
	(c_binding_oracle, c_pushtag, c_bind): Declare.
	* c-decl.c (c_binding_oracle): New global.
	(I_SYMBOL_CHECKED): New macro.
	(i_symbol_binding): New function.
	(I_SYMBOL_BINDING, I_SYMBOL_DECL): Redefine.
	(I_TAG_CHECKED): New macro.
	(i_tag_binding): New function.
	(I_TAG_BINDING, I_TAG_DECL): Redefine.
	(I_LABEL_CHECKED): New macro.
	(i_label_binding): New function.
	(I_LABEL_BINDING, I_LABEL_DECL): Redefine.
	(c_print_identifier): Save and restore c_binding_oracle.
	(c_pushtag, c_bind): New functions.

2014-10-27  Phil Muldoon  <pmuldoon@redhat.com>
	    Tom Tromey  <tromey@redhat.com>

	* aclocal.m4, configure: Rebuild.
	* Makefile.in (aclocal_deps): Add gcc-plugin.m4.
	* configure.ac: Use GCC_ENABLE_PLUGINS.
	* stor-layout.c (finish_bitfield_layout): Now public.  Change
	argument type to 'tree'.
	(finish_record_layout): Update.
	* stor-layout.h (finish_bitfield_layout): Declare.

2014-10-27  Tom Tromey  <tromey@redhat.com>

	* gcc-plugin.m4: New file.

2014-10-27  Phil Muldoon  <pmuldoon@redhat.com>
	    Tom Tromey  <tromey@redhat.com>

	* Makefile.def: Add libcc1 to host_modules.
	* configure.ac (host_tools): Add libcc1.
	* Makefile.in, configure: Rebuild.




git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216748 138bc75d-0d04-0410-961f-82ee72b054a4
	Implement N3653 (Member initializers and aggregates) and fix
	references to 'this' in constexpr constructors.
	* class.c (check_field_decls): In C++14 an NSDMI does not make the
	class non-aggregate.
	* constexpr.c (struct constexpr_ctx): New.
	(cxx_bind_parameters_in_call): Handle 'this'.
	(cxx_eval_call_expression): Create new constexpr_ctx.
	(cxx_eval_component_reference): Check CONSTRUCTOR_NO_IMPLICIT_ZERO.
	(initialized_type, init_subob_ctx, verify_ctor_sanity): New.
	(cxx_eval_bare_aggregate): Use them.  Build CONSTRUCTOR early.
	(cxx_eval_vec_init_1): Likewise.
	(cxx_eval_constant_expression) [PARM_DECL]: Allow 'this'.
	[TARGET_EXPR]: Build new constexpr_ctx.
	[PLACEHOLDER_EXPR]: New.
	(cxx_eval_outermost_constant_expr): Build new constexpr_ctx.  Add
	object parameter.
	(is_sub_constant_expr): Build new constexpr_ctx.
	(potential_constant_expression_1): Handle PLACEHOLDER_EXPR.
	Allow 'this'.
	* cp-gimplify.c (cp_gimplify_init_expr): Call replace_placeholders.
	* cp-tree.h (CONSTRUCTOR_NO_IMPLICIT_ZERO): New.
	* error.c (dump_expr): Handle PLACEHOLDER_EXPR.
	* init.c (get_nsdmi): Generate PLACEHOLDER_EXPR.
	* tree.c (lvalue_kind): Handle PLACEHOLDER_EXPR.
	(build_ctor_subob_ref, replace_placeholders): New.
	* typeck2.c (store_init_value): Use replace_placeholders.
	(process_init_constructor_record): Make zero-init before NSDMI
	explicit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216750 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* config/spu/spu.c: Include rtl-iter.h
	(ea_symbol_ref): Replace with...
	(ea_symbol_ref_p): ...this new function.
	(spu_legitimate_address_p): Update call accordingly.
	(spu_legitimate_constant_p): Likewise.  Use FOR_EACH_SUBRTX.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216752 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* config/s390/s390.c: Include rtl-iter.h.
	(check_dpu): Delete.
	(s390_loop_unroll_adjust): Only iterate over patterns.
	Use FOR_EACH_SUBRTX.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216753 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* config/alpha/alpha.c: Include rtl-iter.h.
	(split_small_symbolic_operand_1): Delete.
	(split_small_symbolic_operand): Use FOR_EACH_SUBRTX_PTR.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216754 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* config/alpha/alpha.c (alpha_set_memflags_1): Delete.
	(alpha_set_memflags): Use FOR_EACH_SUBRTX_VAR.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216755 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* config/alpha/alpha-protos.h (alpha_find_lo_sum_using_gp): Return
	a bool.
	* config/alpha/alpha.c (find_lo_sum_using_gp): Delete.
	(alpha_find_lo_sum_using_gp): Use FOR_EACH_SUBRTX.  Return a bool.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216756 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* config/alpha/alpha-protos.h (some_small_symbolic_operand_int):
	Take an rtx and return a bool.
	* config/alpha/alpha.c (some_small_symbolic_operand_int): Likewise.
	Use FOR_EACH_SUBRTX_VAR.
	* config/alpha/predicates.md (some_small_symbolic_operand): Update
	accordingly.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216757 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* config/i386/i386.c: Include rtl-iter.h
	(ix86_check_avx256_register): Take a const_rtx and return a bool.
	(ix86_check_avx256_stores): Update call accordingly.
	(ix86_avx_u128_mode_entry, ix86_avx_u128_mode_exit): Likewise.
	(ix86_avx_u128_mode_needed): Likewise.  Use FOR_EACH_SUBRTX.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216758 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* config/i386/i386.c (extended_reg_mentioned_1): Delete.
	(x86_extended_reg_mentioned_p): Use FOR_EACH_SUBRTX.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216759 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* config/i386/i386.c (find_constant_1): Delete.
	(find_constant): Use FOR_EACH_SUBRTX.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216760 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* config/i386/i386.c (ix86_loop_memcount): Delete.
	(ix86_loop_unroll_adjust): Use FOR_EACH_SUBRTX.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216761 138bc75d-0d04-0410-961f-82ee72b054a4
* tree.c (build_common_tree_nodes): Don't even store the
__int128 types if they're not supported.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216762 138bc75d-0d04-0410-961f-82ee72b054a4