AVX-512. Extend FMA patterns.

gcc/
	* config/i386/sse.md (define_mode_iterator VF_AVX512VL): New.
	(define_mode_iterator FMAMODEM): Allow 128/256bit EVEX version.
	(define_mode_iterator FMAMODE_AVX512): New.
	(define_mode_iterator FMAMODE): Remove conditions.
	(define_expand "fma4i_fmadd_<mode>"): Use FMAMODE_AVX512 mode iterator.
	(define_expand "<avx512>_fmadd_<mode>_maskz<round_expand_name>"): Rename
	from "<avx512>_fmadd_<mode>_maskz<round_expand_name>" and use VF_AVX512VL
	mode iterator.
	(define_mode_iterator FMAMODE_NOVF512): Remove.
	(define_insn "*fma_fmadd_<mode>"): Rename from
	"<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>" and use
	FMAMODE mode iterator.
	(define_mode_iterator VF_SF_AVX512VL): New.
	(define_insn "<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>"):
	Use VF_SF_AVX512VL mode iterator.
	(define_insn "<avx512>_fmadd_<mode>_mask<round_name>"): Rename from
	"avx512f_fmadd_<mode>_mask<round_name>" and use VF_AVX512VL mode
	iterator.
	(define_insn "<avx512>_fmadd_<mode>_mask3<round_name>"): Rename from
	"avx512f_fmadd_<mode>_mask3<round_name>" and use VF_AVX512VL mode
	iterator.
	(define_insn "*fma_fmsub_<mode>"): Rename from
	"<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>" and use
	FMAMODE mode iterator.
	(define_insn "<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>"):
	Use VF_SF_AVX512VL mode iterator.
	(define_insn "<avx512>_fmsub_<mode>_mask<round_name>"): Rename from
	"avx512f_fmsub_<mode>_mask<round_name>" and use VF_AVX512VL mode
	iterator.
	(define_insn "<avx512>_fmsub_<mode>_mask3<round_name>"): Rename from
	"avx512f_fmsub_<mode>_mask3<round_name>" and use VF_AVX512VL mode
	iterator.
	(define_insn "*fma_fnmadd_<mode>"): Rename from
	"<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>" and
	use FMAMODE mode iterator.
	(define_insn "<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>"):
	Use VF_SF_AVX512VL mode iterator.
	(define_insn "<avx512>_fnmadd_<mode>_mask<round_name>"): Rename from
	"avx512f_fnmadd_<mode>_mask<round_name>" and use VF_AVX512VL mode
	iterator.
	(define_insn "<avx512>_fnmadd_<mode>_mask3<round_name>"): Rename from
	"avx512f_fnmadd_<mode>_mask3<round_name>" and use VF_AVX512VL mode
	iterator.
	(define_insn "*fma_fnmsub_<mode>"): Rename from
	"<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>" and use
	FMAMODE mode iterator.
	(define_insn "<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>"):
	Use VF_SF_AVX512VL mode iterator.
	(define_insn "<avx512>_fnmsub_<mode>_mask<round_name>"): Rename from
	"avx512f_fnmsub_<mode>_mask<round_name>" and use VF_AVX512VL mode
	iterator.
	(define_insn "<avx512>_fnmsub_<mode>_mask3<round_name>"): Rename from
	"avx512f_fnmsub_<mode>_mask3<round_name>" and use VF_AVX512VL mode
	iterator.
	(define_expand "<avx512>_fmaddsub_<mode>_maskz<round_expand_name>"):
	Rename from "avx512f_fmaddsub_<mode>_maskz<round_expand_name>" and
	use VF_AVX512VL mode iterator.
	(define_insn "*fma_fmaddsub_<mode>"): Rename from
	"<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>" and
	remove subst usage.
	(define_insn "<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>"):
	Use VF_SF_AVX512VL mode iterator.
	(define_insn "<avx512>_fmaddsub_<mode>_mask<round_name>"): Rename from
	"avx512f_fmaddsub_<mode>_mask<round_name>" and use VF_AVX512VL mode
	iterator.
	(define_insn "<avx512>_fmaddsub_<mode>_mask3<round_name>"): Rename from
	"avx512f_fmaddsub_<mode>_mask3<round_name>" and use VF_AVX512VL mode
	iterator.
	(define_insn "*fma_fmsubadd_<mode>"): Rename from
	"<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>" and
	remove usage of subst.
	(define_insn "<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>"):
	Use VF_SF_AVX512VL mode iterator.
	(define_insn "<avx512>_fmsubadd_<mode>_mask<round_name>"): Rename from
	"avx512f_fmsubadd_<mode>_mask<round_name>" and use VF_AVX512VL mode
	iterator.
	(define_insn "<avx512>_fmsubadd_<mode>_mask3<round_name>"): Rename from
	"avx512f_fmsubadd_<mode>_mask3<round_name>" and use VF_AVX512VL mode
	iterator.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215104 138bc75d-0d04-0410-961f-82ee72b054a4
	PR ipa/63166
	* ipa-prop.c (compute_known_type_jump_func): Fix conditional.

	* g++.dg/lto/pr63166_0.ii: New testcase.
	* g++.dg/lto/pr63166_1.ii: New testcase.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215105 138bc75d-0d04-0410-961f-82ee72b054a4
AVX-512. Update float unspecs: storeu, rcp14, rsqrt14, scalef, getexp, fixupimm, rndscale, getmant.

gcc/
	* config/i386/i386.c
	(avx512f_vgetmantv2df_round): Rename from "avx512f_getmantv2df_round".
	(avx512f_vgetmantv4sf_round): Rename from "avx512f_vgetmantv4sf_round".
	(ix86_expand_args_builtin): Handle avx512vl_getmantv8sf_mask,
	avx512vl_getmantv4df_mask, avx512vl_getmantv4sf_mask,
	avx512vl_getmantv2df_mask.
	(ix86_expand_round_builtin): Handle avx512f_vgetmantv2df_round,
	avx512f_vgetmantv4sf_round.
	* config/i386/sse.md
	(define_insn "<avx512>_storeu<ssemodesuffix><avxsizesuffix>_mask"):
	Rename from "avx512f_storeu<ssemodesuffix>512_mask" and update
	mode iterator.
	(define_insn "<mask_codefor>rcp14<mode><mask_name>"): Use VF_AVX512VL.
	(define_insn "<mask_codefor>rsqrt14<mode><mask_name>"): Ditto.
	(define_insn "<avx512>_scalef<mode><mask_name><round_name>"): Rename
	from "avx512f_scalef<mode><mask_name><round_name>" and update mode
	iterator..
	(define_insn "<avx512>_getexp<mode><mask_name><round_saeonly_name>"):
	Rename from "avx512f_getexp<mode><mask_name><round_saeonly_name>" and
	update mode iterator.
	(define_expand
	"<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>"): Rename from
	"avx512f_fixupimm<mode>_maskz<round_saeonly_expand_name>" and update
	mode iterator.
	(define_insn
	"<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>"): Rename
	from "avx512f_fixupimm<mode><sd_maskz_name><round_saeonly_name>" and
	update mode iterator.
	(define_insn "<avx512>_fixupimm<mode>_mask<round_saeonly_name>"): Rename
	from "avx512f_fixupimm<mode>_mask<round_saeonly_name>" and update mode
	iterator..
	(define_insn
	"<avx512>_rndscale<mode><mask_name><round_saeonly_name>"): rename from
	"avx512f_rndscale<mode><mask_name><round_saeonly_name>" and update
	mode iterator..
	(define_insn "<avx512>_getmant<mode><mask_name><round_saeonly_name>"):
	Rename from "avx512f_getmant<mode><mask_name><round_saeonly_name>" and
	update mode iterator.
	(define_insn "avx512f_vgetmant<mode><round_saeonly_name>"): Rename from
	"avx512f_getmant<mode><round_saeonly_name>".



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215106 138bc75d-0d04-0410-961f-82ee72b054a4
AVX-512. Add reduce, range, fpclass insn patterns.

gcc/
	* config/i386/i386.c
	(ix86_expand_args_builtin): Handle avx512dq_rangepv8df_mask_round,
	avx512dq_rangepv16sf_mask_round, avx512dq_rangepv4df_mask,
	avx512dq_rangepv8sf_mask, avx512dq_rangepv2df_mask,
	avx512dq_rangepv4sf_mask.
	* config/i386/sse.md
	(define_c_enum "unspec"): Add UNSPEC_REDUCE, UNSPEC_FPCLASS,
	UNSPEC_RANGE.
	(define_insn "<mask_codefor>reducep<mode><mask_name>"): New.
	(define_insn "reduces<mode>"): Ditto.
	(define_insn "avx512dq_rangep<mode><mask_name><round_saeonly_name>"):
	Ditto.
	(define_insn "avx512dq_ranges<mode><round_saeonly_name>"): Ditto.
	(define_insn "avx512dq_fpclass<mode><mask_scalar_merge_name>"): Ditto.
	(define_insn "avx512dq_vmfpclass<mode>"): Ditto..



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215107 138bc75d-0d04-0410-961f-82ee72b054a4
AVX-512. Add patterns for compress, expand.

gcc/
	* config/i386/sse.md
	(define_mode_iterator VI48F): New.
	(define_insn "<avx512>_compress<mode>_mask"): Rename from
	"avx512f_compress<mode>_mask" and update mode iterator.
	(define_insn "<avx512>_compressstore<mode>_mask"): Rename from
	"avx512f_compressstore<mode>_mask" and update mode iterator.
	(define_expand "<avx512>_expand<mode>_maskz"): Rename from
	"avx512f_expand<mode>_maskz" and update mode iterator.
	(define_insn "<avx512>_expand<mode>_mask"): Rename from
	"avx512f_expand<mode>_mask" and update mode iterator.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215108 138bc75d-0d04-0410-961f-82ee72b054a4
	* ubsan.h (struct ubsan_mismatch_data): Removed.
	(ubsan_create_data): Remove MISMATCH argument, add LOCCNT argument.
	* ubsan.c (ubsan_source_location): For unknown locations,
	pass { NULL, 0, 0 } instead of { "<unknown>", x, y }.
	(ubsan_create_data): Remove MISMATCH argument, add LOCCNT argument.
	Allow more than one location and arbitrary extra arguments passed
	in ... instead of through MISMATCH pointer.
	(ubsan_instrument_unreachable, ubsan_expand_bounds_ifn,
	ubsan_expand_null_ifn, ubsan_build_overflow_builtin,
	instrument_bool_enum_load, ubsan_instrument_float_cast): Adjust
	callers.
c-family/
	* c-ubsan.c (ubsan_instrument_division, ubsan_instrument_shift,
	ubsan_instrument_vla, ubsan_instrument_return): Adjust
	ubsan_create_data callers.
	(ubsan_instrument_bounds): Don't emit UBSAN_BOUNDS at all if
	index is constant or BIT_AND_EXPR with constant mask and is
	small enough for the bound.
	* c-gimplify.c (ubsan_walk_array_refs_r): For ADDR_EXPR of
	ARRAY_REF, make sure the inner ARRAY_REF is not walked again.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215117 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* flag-types.h (enum sanitize_code): Add SANITIZE_NONNULL_ATTRIBUTE
	and SANITIZE_RETURNS_NONNULL_ATTRIBUTE, or them into SANITIZE_UNDEFINED.
	* opts.c (common_handle_option): Handle SANITIZE_NONNULL_ATTRIBUTE and
	SANITIZE_RETURNS_NONNULL_ATTRIBUTE and disable
	flag_delete_null_pointer_checks for them.
	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_NONNULL_ARG,
	BUILT_IN_UBSAN_HANDLE_NONNULL_ARG_ABORT,
	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN,
	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): New.
	* ubsan.c (instrument_bool_enum_load): Set *gsi back to
	stmt's iterator.
	(instrument_nonnull_arg, instrument_nonnull_return): New functions.
	(pass_ubsan::gate): Return true even for SANITIZE_NONNULL_ATTRIBUTE
	or SANITIZE_RETURNS_NONNULL_ATTRIBUTE.
	(pass_ubsan::execute): Call instrument_nonnull_{arg,return}.
	* doc/invoke.texi (-fsanitize=nonnull-attribute,
	-fsanitize=returns-nonnull-attribute): Document.
gcc/testsuite/
	* c-c++-common/ubsan/attrib-3.c: New test.
	* c-c++-common/ubsan/nonnull-1.c: New test.
	* c-c++-common/ubsan/nonnull-2.c: New test.
	* c-c++-common/ubsan/nonnull-3.c: New test.
	* c-c++-common/ubsan/nonnull-4.c: New test.
	* c-c++-common/ubsan/nonnull-5.c: New test.
libsanitizer/
	* ubsan/ubsan_handlers.cc, ubsan/ubsan_handlers.h: Cherry pick
	upstream r215485, r217389, r217391 and r217400.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215118 138bc75d-0d04-0410-961f-82ee72b054a4
Fix ICE in bitmap routines with LRA and inline assembly language

gcc/

	* lra-lives.c (process_bb_lives): Replace assignment with bitwise OR
	assignment.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215119 138bc75d-0d04-0410-961f-82ee72b054a4
MIPS: Do not reload unallocated FP_REGS pseudos via GR_REGS

gcc/

	* config/mips/mips.c (mips_secondary_reload_class): Handle
	regno < 0 case.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215120 138bc75d-0d04-0410-961f-82ee72b054a4
* coretypes.h (struct _dont_use_rtx_insn_here_, rtx_insn)
[USED_FOR_TARGET]: Define.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215121 138bc75d-0d04-0410-961f-82ee72b054a4
2014-09-10  Martin Jambor  <mjambor@suse.cz>

	PR ipa/61654
	* cgraphclones.c (duplicate_thunk_for_node): Copy arguments of the
	new decl properly.  Analyze the new thunk if it is expanded.

gcc/testsuite/
	* g++.dg/ipa/pr61654.C: New test.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215122 138bc75d-0d04-0410-961f-82ee72b054a4
2014-09-10  Martin Jambor  <mjambor@suse.cz>

	* cgraphunit.c (expand_thunk): If not expanding, set analyzed flag.
	(analyze): Do not set analyze flag if expand_thunk returns false;.
	(create_wrapper): Likewise.
	* cgraphclones.c (duplicate_thunk_for_node): Likewise.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215123 138bc75d-0d04-0410-961f-82ee72b054a4
[AArch64 Testsuite] Add a test of the vldN_lane intrinsic

        * gcc.target/aarch64/vldN_lane_1.c: New test.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215126 138bc75d-0d04-0410-961f-82ee72b054a4
	* doc/install.texi (Prerequisites): Note Tcl 8.6 bug fixed in
	8.6.1.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215127 138bc75d-0d04-0410-961f-82ee72b054a4
2014-09-10  Siva Chandra Reddy  <sivachandra@google.com>

	* python/hook.in: Load the xmethods.
	* python/Makefile.am (nobase_python_DATA): Add xmethods.py.
	* python/Makefile.in: Regenerated.
	* python/libstdcxx/v6/xmethods.py: New file.
	* testsuite/lib/gdb-test.exp (gdb_version_check_xmethods): New
	function.
	(gdb-test): New optional argument LOAD_XMETHODS.  Load xmethods
	python script if LOAD_XMETHODS is true.
	* testsuite/libstdc++-xmethods/unique_ptr.cc: New file.
	* testsuite/libstdc++-xmethods/vector.cc: New file.
	* testsuite/libstdc++-xmethods/xmethods.exp: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215128 138bc75d-0d04-0410-961f-82ee72b054a4
[AArch64 Testsuite] Add a test of the vst[234](q?) intrinics

        * gcc.target/aarch64/vstN_1.c: New test.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215129 138bc75d-0d04-0410-961f-82ee72b054a4
insn_extract takes an rtx_insn

gcc/ChangeLog:
2014-09-10  David Malcolm  <dmalcolm@redhat.com>

	* genextract.c (print_header): When writing out insn_extract to
	insn-extract.c, strengthen the param "insn" from rtx to rtx_insn *.
	* recog.h (insn_extract): Strengthen the param from rtx to
	rtx_insn *.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215132 138bc75d-0d04-0410-961f-82ee72b054a4
error_for_asm and warning_for_asm take const rtx_insn *

gcc/ChangeLog:
2014-09-10  David Malcolm  <dmalcolm@redhat.com>

	* final.c (this_is_asm_operands): Strengthen this variable from
	rtx to const rtx_insn *.
	* output.h (this_is_asm_operands): Likewise.
	* rtl-error.c (location_for_asm): Strengthen param "insn" from
	const_rtx to const rtx_insn *.
	(diagnostic_for_asm): Likewise.
	* rtl-error.h (error_for_asm): Likewise.
	(warning_for_asm): Likewise.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215133 138bc75d-0d04-0410-961f-82ee72b054a4
	PR c++/61659
	* decl.c (grokfndecl): Don't set DECL_COMDAT on static inlines.
	(duplicate_decls, start_decl): Likewise.
	* pt.c (check_explicit_specialization): Likewise.
	(push_template_decl_real): Or static templates.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215134 138bc75d-0d04-0410-961f-82ee72b054a4
	* gcc.target/i386/i386.exp: Only run vect-args.c tests
	if runtest_file_p says they should be run.


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