Commit Graph

167700 Commits

Author SHA1 Message Date
Richard Biener c0eb90b5db re PR middle-end/89779 (internal compiler error: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in tree_nop_conversion_p, at tree.c:12798)
2019-03-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/89779
	* tree-ssa-loop-ivopts.c (remove_unused_ivs): Return
	to remove IV defs, delay actual removal.
	(tree_ssa_iv_optimize_loop): Likewise.  Avoid SCEV reset.
	(tree_ssa_iv_optimize): Remove eliminated IV defs at the
	very end, properly also reset loop control IV information.

From-SVN: r269914
2019-03-25 12:18:38 +00:00
Richard Biener ecef0d3458 re PR tree-optimization/89802 ([9 Regresssion] ICE: verify_gimple failed (error: dead STMT in EH table))
2019-03-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/89802
	* tree-ssa-math-opts.c (convert_mult_to_fma_1): Properly
	move EH data to folded stmt.

	* g++.dg/tree-ssa/pr89802.C: New testcase.

From-SVN: r269913
2019-03-25 12:15:59 +00:00
Jakub Jelinek 66ec77ce19 re PR c++/60702 (thread_local initialization)
PR c++/60702
	* g++.dg/tls/thread_local11.C: Remove scan-tree-dump-times directives
	for _ZTH* calls.
	* g++.dg/tls/thread_local11a.C: New test.

From-SVN: r269912
2019-03-25 12:53:56 +01:00
John David Anglin b7ca376ae9 re PR libfortran/79540 (FAIL: gfortran.dg/fmt_fw_d.f90 -O0 execution test)
PR libgfortran/79540
	* io/write_float.def (build_float_string): Don't copy digits when
	ndigits is negative.

From-SVN: r269911
2019-03-25 11:48:36 +00:00
Andreas Krebbel a260f36938 S/390: Cleanup builtin types file
gcc/ChangeLog:

2019-03-25  Andreas Krebbel  <krebbel@linux.ibm.com>

	* config/s390/s390-builtin-types.def: Remove few unused types and
	fix sort order for others.

From-SVN: r269909
2019-03-25 10:10:31 +00:00
Andreas Krebbel 2cd76da88a S/390: Improve debug output for builtin matching
gcc/ChangeLog:

2019-03-25  Andreas Krebbel  <krebbel@linux.ibm.com>

	* config/s390/s390-c.c (s390_fn_types_compatible): Print the
	expected and found types with -mdebug during builtin matching.

From-SVN: r269908
2019-03-25 10:09:43 +00:00
Richard Biener f22e586c69 re PR middle-end/89790 (ICE segfault in operand_equal_p() at fold-const.c:3000 with -Wduplicated-cond since r269838)
2019-03-25  Richard Biener  <rguenther@suse.de>

	PR middle-end/89790
	* fold-const.c (operand_equal_p): Revert last change with
	updated comment.

	* g++.dg/pr89790.C: New testcase.

From-SVN: r269907
2019-03-25 10:05:15 +00:00
Kyrylo Tkachov 4c6d441da1 [doc] Fix typos in MINLOC, MAXLOC documentation
I think there's a typo in the documentation of the MINLOC and MAXLOC intrinsics.
It implies that when the BACK argument is true it returns the first occurrence of the min/max value,
but my understanding is that it should return the last occurrence.

This patch fixes the documentation.

	* intrinsic.texi (MINLOC): Fix typo in BACK argument documentation.
	(MAXLOC): Likewise.

From-SVN: r269906
2019-03-25 09:25:07 +00:00
GCC Administrator af5a5a71b8 Daily bump.
From-SVN: r269905
2019-03-25 00:16:41 +00:00
Segher Boessenkool 06c1602ae4 rs6000: Make CSE'ing __tls_get_addr calls possible
CSE does not consider calls, not even const calls.  This patch puts a
REG_EQUAL note on the pseudo we assign the __tls_get_addr result to,
so that those pseudos can be CSE'd and the extra calls deleted as dead
code.

CSE should really handle const calls directly, but it is stage 4.


	* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add REG_EQUAL
	notes for the result of the __tls_get_addr calls.
	* config/rs6000/rs6000.md (unspec UNSPEC_TLS_GET_ADDR): New.

From-SVN: r269902
2019-03-24 21:26:53 +01:00
Uros Bizjak 38a47a0fc6 * testsuite/ChangeLog: Fix ChangeLog entry.
From-SVN: r269901
2019-03-24 20:47:03 +01:00
Uros Bizjak a688356b12 pr82281.c: Compile only for ia32 effective target.
* gcc.target/i386/pr82281.c: Compile only for ia32 effective target.
	(dg-options): Remove -m32. Add -msse2 -mtune=znver1.
	* gcc.target/i386/pr89676.c: Compile only for ia32 effective target.
	(dg-options): Remove -m32 and -march=i686. Add -mno-stv.

From-SVN: r269900
2019-03-24 20:39:59 +01:00
Jeff Law f8443ff8b1 * config/bfin/bfin.md (movpdi): Fix length for alternative 1.
From-SVN: r269899
2019-03-24 13:25:49 -06:00
Iain Buclaw 70d2d77700 d/dmd: Merge upstream dmd 74ac873be
Introduces a fix for a segfault when building without object.d being
present, as well as MinGW host build errors in dmd/root/filename.c.

Updates a couple of non-portable tests, removing one and fixing the
other.

From-SVN: r269897
2019-03-24 16:20:43 +00:00
Jeff Law 4dd1130557 re PR rtl-optimization/87761 ([MIPS] New FAIL: gcc.target/mips/fix-r4000-10.c -O1 start with r265398)
PR rtl-optimization/87761
	* regcprop.c (copyprop_hardreg_forward_1): Check may_trap_p on SET,
	not INSN.  Also check RTX_FRAME_RELATED_P.  Queue insns for DF rescan
	as needed.
	(pass_cprop_hardreg::execute): Add df note problem and defer insn
	rescans.  Reprocess blocks as needed, calling df_analyze before
	reprocessing.  Always call df_analyze before fixing up debug bind
	insns.

From-SVN: r269896
2019-03-24 09:20:52 -06:00
Thomas Koenig 866664a381 re PR fortran/78865 (ICE in create_tmp_var, at gimple-expr.c:473)
2019-03-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/78865
	* interface.c (compare_actual_formal): Change errors about
	missing or extra to gfc_error_now to make sure they are issued.
	Change "spec" to "specifier" in message.
	* resolve.c (resolve_global_procedure): Also check for mismatching
	interface with global symbols if the namespace has already been
	resolved.

2019-03-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/78865
	* gfortran.dg/altreturn_10.f90: New test.
	* gfortran.dg/whole_file_3.f90: Change dg-warning to dg-error.

From-SVN: r269895
2019-03-24 12:51:19 +00:00
GCC Administrator c1e62ea1af Daily bump.
From-SVN: r269894
2019-03-24 00:16:16 +00:00
Segher Boessenkool 8ab1df5233 rs6000: Fix _mm_movemask_pi8 emulation for 32 bit
* config/rs6000/xmmintrin.h (_mm_movemask_pi8): Implement for 32-bit
	big endian.

From-SVN: r269891
2019-03-23 17:15:48 +01:00
Johannes Pfau 27f18a6299 [libphobos] Update info about required autotools versions
From-SVN: r269888
2019-03-23 15:07:25 +00:00
Johannes Pfau 686e44763e [libphobos] Update MERGE file, remove ill-formatted changelog entry
Changelog entries are not required for upstream merges.

From-SVN: r269887
2019-03-23 15:07:16 +00:00
Andrew Pinski e6b853501b [AARCH64] Fix zero_extendsidi2_aarch64 type attribute
2019-03-22  Andrew Pinski  <apinski@marvell.com>

        * config/aarch64/aarch64.md (zero_extendsidi2_aarch64): Fix type
        attrribute for uxtw.

From-SVN: r269886
2019-03-22 17:22:33 -07:00
GCC Administrator 43721f77bd Daily bump.
From-SVN: r269885
2019-03-23 00:16:25 +00:00
Joseph Myers 62a6133fd6 * gcc.pot: Regenerate.
From-SVN: r269882
2019-03-22 21:59:36 +00:00
Jonathan Wakely fb5550a068 Remove broken links from libstdc++ manual to Doxygen pages
The Doxygen docs do not have stable URLs, so linking to specific pages
doesn't work well.

	* doc/xml/manual/backwards_compatibility.xml: Remove link to
	Doxygen-generated pages with unstable URL.
	* doc/xml/manual/concurrency_extensions.xml: Likewise.
	* doc/xml/manual/extensions.xml: Likewise.
	* doc/xml/manual/parallel_mode.xml: Likewise.
	* doc/xml/manual/support.xml: Likewise.

From-SVN: r269881
2019-03-22 20:57:35 +00:00
Jeff Law 23843f4740 re PR rtl-optimization/87761 ([MIPS] New FAIL: gcc.target/mips/fix-r4000-10.c -O1 start with r265398)
PR rtl-optimization/87761
	* config/mips/mips-protos.h (mips_split_move): Add new argument.
	(mips_emit_move_or_split): Pass NULL for INSN into mips_split_move.
	(mips_split_move): Accept new INSN argument.  Try to forward SRC
	into the next instruction.
	(mips_split_move_insn): Pass INSN through to mips_split_move.

From-SVN: r269880
2019-03-22 12:14:56 -06:00
Vladimir Makarov c07a0a226b re PR rtl-optimization/89676 (Redundant moves for long long shift on 32bit x86)
2019-03-22  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/89676
	* lra-constraints.c (curr_insn_transform): Do match reload for
	early clobbers even if the match was successful.

2019-03-22  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/89676
	* gcc.target/i386/pr89676.c: New.

From-SVN: r269878
2019-03-22 16:59:21 +00:00
Jonathan Wakely eca5f9254b Avoid -Wconversion warnings when -Wsystem-headers is used
* include/bits/stl_algobase.h (__lg): Do arithmetic on type int to
	avoid -Wconversion warnings.

From-SVN: r269876
2019-03-22 16:45:48 +00:00
Jakub Jelinek 5c3703c552 re PR c++/60702 (thread_local initialization)
PR c++/60702
	* cp-tree.h (get_tls_wrapper_fn): Remove declaration.
	(maybe_get_tls_wrapper_call): Declare.
	* decl2.c (get_tls_wrapper_fn): Make static.
	(maybe_get_tls_wrapper_call): New function.
	* typeck.c (build_class_member_access_expr): Handle accesses to TLS
	variables.
	* semantics.c (finish_qualified_id_expr): Likewise.
	(finish_id_expression_1): Use maybe_get_tls_wrapper_call.
	* pt.c (tsubst_copy_and_build): Likewise.

	* g++.dg/tls/thread_local11.C: New test.
	* g++.dg/tls/thread_local11.h: New test.
	* g++.dg/tls/thread_local12a.C: New test.
	* g++.dg/tls/thread_local12b.C: New test.
	* g++.dg/tls/thread_local12c.C: New test.
	* g++.dg/tls/thread_local12d.C: New test.
	* g++.dg/tls/thread_local12e.C: New test.
	* g++.dg/tls/thread_local12f.C: New test.
	* g++.dg/tls/thread_local12g.C: New test.
	* g++.dg/tls/thread_local12h.C: New test.
	* g++.dg/tls/thread_local12i.C: New test.
	* g++.dg/tls/thread_local12j.C: New test.
	* g++.dg/tls/thread_local12k.C: New test.
	* g++.dg/tls/thread_local12l.C: New test.

From-SVN: r269875
2019-03-22 15:42:57 +01:00
Jakub Jelinek a15ffa22b5 re PR c++/87481 (Endless loop with optimisation in C++17)
PR c++/87481
	* doc/invoke.texi (-fconstexpr-ops-limit=): Document.

	* c.opt (-fconstexpr-ops-limit=): New option.

	* constexpr.c (struct constexpr_ctx): Add constexpr_ops_count member.
	(cxx_eval_constant_expression): When not skipping, not constant class
	or location wrapper, increment *ctx->constexpr_ops_count and if it is
	above constexpr_loop_nest_limit, diagnose failure.
	(cxx_eval_outermost_constant_expr): Add constexpr_ops_count and
	initialize ctx.constexpr_ops_count to its address.
	(is_sub_constant_expr): Likewise.

	* g++.dg/cpp1y/constexpr-87481.C: New test.

From-SVN: r269874
2019-03-22 15:40:59 +01:00
Pierre-Marie de Rodat 29e0246c68 [Ada] GNAT.Sockets: fix recent regressions
The support for IPv6 that was added since last release triggered
regressions on various platforms. The size of structures passed to low
level routines was not correct anymore: it should depend on the address
family, now.

2019-03-22  Dmitriy Anisimkov  <anisimko@adacore.com>

gcc/ada/

	PR ada/89583
	* libgnat/g-socket.adb (Bind_Socket, Connect_Socket,
	Send_Socket): Fix the computation of structure lengths passed to
	low level routines.
	(Is_IPv6_Address): Fix the number of expected colons.

2019-03-22  Simon Wright  <simon@pushface.org>

gcc/testsuite/

	PR ada/89583
	* gnat.dg/socket2.adb: New.

From-SVN: r269873
2019-03-22 13:59:02 +00:00
Bill Schmidt b6c5f9f3dd mmintrin.h (_mm_sub_pi32): Fix typo.
[gcc]

2019-03-22  Bill Schmidt  <wschmidt@linux.ibm.com>

	* config/rs6000/mmintrin.h (_mm_sub_pi32): Fix typo.

[gcc/testsuite]

2019-03-22  Bill Schmidt  <wschmidt@linux.ibm.com>

	* gcc.target/powerpc/mmx-psubd-2.c: Test _m_psubd.

From-SVN: r269871
2019-03-22 13:49:18 +00:00
Jakub Jelinek bfdc651abd * config/i386/sse.md (<avx512>_fmadd_<mode>_mask3<round_name>,
<avx512>_fmsub_<mode>_mask3<round_name>,
	<avx512>_fnmadd_<mode>_mask3<round_name>,
	<avx512>_fnmsub_<mode>_mask3<round_name>,
	avx512f_vmfmadd_<mode>_mask3<round_name>,
	avx512f_vmfmsub_<mode>_mask3<round_name>,
	*avx512f_vmfnmadd_<mode>_mask3<round_name>): Use <round_nimm_predicate>
	instead of register_operand and %v instead of v for match_operand 1.
	(avx512f_vmfnmsub_<mode>_mask3<round_name>): Rename to ...
	(*avx512f_vmfnmsub_<mode>_mask3<round_name>): ... this.  Use
	<round_nimm_predicate> instead of register_operand and %v instead of v
	for match_operand 1.

From-SVN: r269870
2019-03-22 13:58:09 +01:00
Jakub Jelinek ecf392360a sse.md (<avx512>_fmadd_<mode>_mask<round_name>, [...]): Use <round_nimm_predicate> instead of nonimmediate_operand.
* config/i386/sse.md (<avx512>_fmadd_<mode>_mask<round_name>,
	<avx512>_fmadd_<mode>_mask3<round_name>,
	<avx512>_fmsub_<mode>_mask<round_name>,
	<avx512>_fmsub_<mode>_mask3<round_name>,
	<avx512>_fnmadd_<mode>_mask<round_name>,
	<avx512>_fnmadd_<mode>_mask3<round_name>,
	<avx512>_fnmsub_<mode>_mask<round_name>,
	<avx512>_fnmsub_<mode>_mask3<round_name>,
	<avx512>_fmaddsub_<mode>_mask<round_name>,
	<avx512>_fmaddsub_<mode>_mask3<round_name>,
	<avx512>_fmsubadd_<mode>_mask<round_name>,
	<avx512>_fmsubadd_<mode>_mask3<round_name>): Use
	<round_nimm_predicate> instead of nonimmediate_operand.
	(fmai_vmfmadd_<mode><round_name>, fmai_vmfmsub_<mode><round_name>,
	fmai_vmfnmadd_<mode><round_name>, fmai_vmfnmsub_<mode><round_name>):
	Use register_operand instead of <round_nimm_predicate> for the
	operand that needs to match output.
	(*fmai_fmadd_<mode>, *fmai_fmsub_<mode>,
	*fmai_fnmadd_<mode><round_name>, *fmai_fnmsub_<mode><round_name>):
	Likewise.  Formatting fixes.

From-SVN: r269869
2019-03-22 11:12:18 +01:00
Jakub Jelinek 5c4ade6d44 re PR target/89784 (Missing AVX512 intrinsics)
PR target/89784
	* config/i386/i386.c (enum ix86_builtins): Remove
	IX86_BUILTIN_VFMSUBSD3_MASK3 and IX86_BUILTIN_VFMSUBSS3_MASK3.
	* config/i386/i386-builtin.def (__builtin_ia32_vfmaddsd3_mask,
	__builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz,
	__builtin_ia32_vfmsubsd3_mask3, __builtin_ia32_vfmaddss3_mask,
	__builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz,
	__builtin_ia32_vfmsubss3_mask3): New builtins.
	* config/i386/sse.md (avx512f_vmfmadd_<mode>_mask<round_name>,
	avx512f_vmfmadd_<mode>_mask3<round_name>,
	avx512f_vmfmadd_<mode>_maskz_1<round_name>,
	*avx512f_vmfmsub_<mode>_mask<round_name>,
	avx512f_vmfmsub_<mode>_mask3<round_name>,
	*avx512f_vmfmasub_<mode>_maskz_1<round_name>,
	*avx512f_vmfnmadd_<mode>_mask<round_name>,
	*avx512f_vmfnmadd_<mode>_mask3<round_name>,
	*avx512f_vmfnmadd_<mode>_maskz_1<round_name>,
	*avx512f_vmfnmsub_<mode>_mask<round_name>,
	*avx512f_vmfnmsub_<mode>_mask3<round_name>,
	*avx512f_vmfnmasub_<mode>_maskz_1<round_name>): New define_insns.
	(avx512f_vmfmadd_<mode>_maskz<round_expand_name>): New define_expand.
	* config/i386/avx512fintrin.h (_mm_mask_fmadd_sd, _mm_mask_fmadd_ss,
	_mm_mask3_fmadd_sd, _mm_mask3_fmadd_ss, _mm_maskz_fmadd_sd,
	_mm_maskz_fmadd_ss, _mm_mask_fmsub_sd, _mm_mask_fmsub_ss,
	_mm_mask3_fmsub_sd, _mm_mask3_fmsub_ss, _mm_maskz_fmsub_sd,
	_mm_maskz_fmsub_ss, _mm_mask_fnmadd_sd, _mm_mask_fnmadd_ss,
	_mm_mask3_fnmadd_sd, _mm_mask3_fnmadd_ss, _mm_maskz_fnmadd_sd,
	_mm_maskz_fnmadd_ss, _mm_mask_fnmsub_sd, _mm_mask_fnmsub_ss,
	_mm_mask3_fnmsub_sd, _mm_mask3_fnmsub_ss, _mm_maskz_fnmsub_sd,
	_mm_maskz_fnmsub_ss, _mm_mask_fmadd_round_sd, _mm_mask_fmadd_round_ss,
	_mm_mask3_fmadd_round_sd, _mm_mask3_fmadd_round_ss,
	_mm_maskz_fmadd_round_sd, _mm_maskz_fmadd_round_ss,
	_mm_mask_fmsub_round_sd, _mm_mask_fmsub_round_ss,
	_mm_mask3_fmsub_round_sd, _mm_mask3_fmsub_round_ss,
	_mm_maskz_fmsub_round_sd, _mm_maskz_fmsub_round_ss,
	_mm_mask_fnmadd_round_sd, _mm_mask_fnmadd_round_ss,
	_mm_mask3_fnmadd_round_sd, _mm_mask3_fnmadd_round_ss,
	_mm_maskz_fnmadd_round_sd, _mm_maskz_fnmadd_round_ss,
	_mm_mask_fnmsub_round_sd, _mm_mask_fnmsub_round_ss,
	_mm_mask3_fnmsub_round_sd, _mm_mask3_fnmsub_round_ss,
	_mm_maskz_fnmsub_round_sd, _mm_maskz_fnmsub_round_ss): New intrinsics.

	* gcc.target/i386/sse-13.c (__builtin_ia32_vfmaddsd3_mask,
	__builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz,
	__builtin_ia32_vfmsubsd3_mask3, __builtin_ia32_vfmaddss3_mask,
	__builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz,
	__builtin_ia32_vfmsubss3_mask3): Define.
	* gcc.target/i386/sse-23.c (__builtin_ia32_vfmaddsd3_mask,
	__builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz,
	__builtin_ia32_vfmsubsd3_mask3, __builtin_ia32_vfmaddss3_mask,
	__builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz,
	__builtin_ia32_vfmsubss3_mask3): Define.
	* gcc.target/i386/avx-1.c (__builtin_ia32_vfmaddsd3_mask,
	__builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz,
	__builtin_ia32_vfmsubsd3_mask3, __builtin_ia32_vfmaddss3_mask,
	__builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz,
	__builtin_ia32_vfmsubss3_mask3): Define.
	* gcc.target/i386/sse-14.c: Add tests for
	_mm_mask{,3,z}_f{,n}m{add,sub}_round_s{s,d} builtins.
	* gcc.target/i386/sse-22.c: Likewise.

2019-03-22  Hongtao Liu  <hongtao.liu@intel.com>

	* gcc.target/i386/avx512f-vfmaddXXXsd-1.c (avx512f_test): Add tests
	for _mm_mask{,3,z}_*.
	* gcc.target/i386/avx512f-vfmaddXXXss-1.c (avx512f_test): Likewise.
	* gcc.target/i386/avx512f-vfmsubXXXsd-1.c (avx512f_test): Likewise.
	* gcc.target/i386/avx512f-vfmsubXXXss-1.c (avx512f_test): Likewise.
	* gcc.target/i386/avx512f-vfnmaddXXXsd-1.c (avx512f_test): Likewise.
	* gcc.target/i386/avx512f-vfnmaddXXXss-1.c (avx512f_test): Likewise.
	* gcc.target/i386/avx512f-vfnmsubXXXsd-1.c (avx512f_test): Likewise.
	* gcc.target/i386/avx512f-vfnmsubXXXss-1.c (avx512f_test): Likewise.
	* gcc.target/i386/avx512f-vfmaddXXXsd-2.c: New test.
	* gcc.target/i386/avx512f-vfmaddXXXss-2.c: New test.
	* gcc.target/i386/avx512f-vfmsubXXXsd-2.c: New test.
	* gcc.target/i386/avx512f-vfmsubXXXss-2.c: New test.
	* gcc.target/i386/avx512f-vfnmaddXXXsd-2.c: New test.
	* gcc.target/i386/avx512f-vfnmaddXXXss-2.c: New test.
	* gcc.target/i386/avx512f-vfnmsubXXXsd-2.c: New test.
	* gcc.target/i386/avx512f-vfnmsubXXXss-2.c: New test.

From-SVN: r269868
2019-03-22 11:08:40 +01:00
Martin Sebor a411ae9b35 PR tree-optimization/89350 - Wrong -Wstringop-overflow= warning since r261518
gcc/ChangeLog:

	PR tree-optimization/89350
	* builtins.c (compute_objsize): Also ignore offsets whose upper
	bound is negative.
	* gimple-ssa-warn-restrict.c (builtin_memref): Add new member.
	(builtin_memref::builtin_memref): Initialize new member.
	Allow EXPR to be null.
	(builtin_memref::extend_offset_range): Replace local with a member.
	Avoid assuming pointer offsets are unsigned.
	(builtin_memref::set_base_and_offset): Determine base object
	before computing offset range.
	(builtin_access::builtin_access): Handle memset.
	(builtin_access::generic_overlap): Replace local with a member.
	(builtin_access::strcat_overlap): Same.
	(builtin_access::overlap): Same.
	(maybe_diag_overlap): Same.
	(maybe_diag_access_bounds): Same.
	(wrestrict_dom_walker::check_call): Handle memset.
	(check_bounds_or_overlap): Same.

gcc/testsuite/ChangeLog:

	PR tree-optimization/89350
	* gcc.dg/Wstringop-overflow.c: Xfail overly ambitious tests.
	* gcc.dg/Wstringop-overflow-11.c: New test.
	* gcc.dg/Wstringop-overflow-12.c: New test.
	* gcc.dg/pr89350.c: New test.
	* gcc.dg/pr40340-1.c: Adjust expected warning.
	* gcc.dg/pr40340-2.c: Same.
	* gcc.dg/pr40340-4.c: Same.
	* gcc.dg/pr40340-5.c: Same.

From-SVN: r269867
2019-03-21 20:58:27 -06:00
GCC Administrator 11bf9a075a Daily bump.
From-SVN: r269866
2019-03-22 00:16:26 +00:00
Thomas Rodgers 061f457868 Integrate C++17 parallel algorithms
This is the Intel implementation of the C++17 parallel
algorithms, which has been donated to both GCC and LLVM. The upstream
project is at -

	https://reviews.llvm.org/source/pstl/

The new files in the include/pstl sub-directory are covered by the
LICENSE.txt in that sub-directory, as are the tests in
testsuite/**/pstl/*

	* include/Makefile.am (std_header): Add ${std_srcdir}/execution.
	(pstl_srcdir, pstl_builddir, pstl_headers): New variables.
	(allstamped): Add stamp-pstl.
	(install-headers): Add ptsl_builddir.
	* include/Makefile.in: Regenerate.
	* include/bits/c++config: Add pstl configuration.
	* include/pstl/LICENSE.txt: New file.
	* include/pstl/algorithm_fwd.h: New file.
	* include/pstl/algorithm_impl.h: New file.
	* include/pstl/execution_defs.h: New file.
	* include/pstl/execution_impl.h: New file.
	* include/pstl/glue_algorithm_defs.h: New file.
	* include/pstl/glue_algorithm_impl.h: New file.
	* include/pstl/glue_execution_defs.h: New file.
	* include/pstl/glue_memory_defs.h: New file.
	* include/pstl/glue_memory_impl.h: New file.
	* include/pstl/glue_numeric_defs.h: New file.
	* include/pstl/glue_numeric_impl.h: New file.
	* include/pstl/memory_impl.h: New file.
	* include/pstl/numeric_fwd.h: New file.
	* include/pstl/numeric_impl.h: New file.
	* include/pstl/parallel_backend.h: New file.
	* include/pstl/parallel_backend_tbb.h: New file.
	* include/pstl/parallel_backend_utils.h: New file.
	* include/pstl/parallel_impl.h: New file.
	* include/pstl/pstl_config.h: New file.
	* include/pstl/unseq_backend_simd.h: New file.
	* include/pstl/utils.h: New file.
	* include/std/algorithm: Include parallel algorithm implementations.
	* include/std/execution: New file.
	* include/std/memory: Include parallel algorithm implementations.
	* include/std/numeric: Include parallel algorithm implementations.
	* include/std/version: Add parallel algorithms feature test macro.
	* testsuite/util/pstl/pstl_test_config.h: New file.
	* testsuite/util/pstl/test_utils.h: New file.
	* testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
	* testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
	* testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
	* testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
	* testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
	* testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
	* testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
	* testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
	* testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
	* testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
	* testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
	* testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
	* testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
	* testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
	* testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
	* testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
	* testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
	* testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
	* testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
	* testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
	* testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
	* testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
	* testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
	* testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
	* testsuite/testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
	* testsuite/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
	* testsuite/testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
	* testsuite/testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
	* testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
	* testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.

From-SVN: r269863
2019-03-21 23:48:49 +00:00
Jan Hubicka 774856e3fb re PR lto/89692 (ICE in streamer_write_chain, at tree-streamer-out.c:506)
PR lto/89692
	* tree.c (fld_type_variant, fld_incomplete_type_of,
	fld_process_array_type): Call fld->pset.add and don't call
	add_tree_to_fld_list if it returns true.
	(free_lang_data_in_type): Similarly with self-recursive call.  Purge
	non-marked types from TYPE_NEXT_VARIANT list.
	(find_decls_types_r): Call fld_worklist_push for TYPE_CANONICAL (t).

	* g++.dg/other/pr89692.C: New test.

From-SVN: r269862
2019-03-21 23:04:29 +01:00
Jakub Jelinek 8c8b42cf72 re PR c++/71446 (Incorrect overload resolution when using designated initializers)
PR c++/71446
	* call.c (filed_in_pset): Change pset from hash_set<tree> * to
	hash_set<tree, true> &, adjust uses accordingly.
	(build_aggr_conv): Change pset from hash_set<tree> *
	to hash_set<tree, true>.  Replace goto fail; with return NULL;,
	adjust pset uses.

From-SVN: r269861
2019-03-21 23:03:07 +01:00
Jakub Jelinek 152d47df7f re PR c++/89767 (ICE with tuple and optimization)
PR c++/89767
	* parser.c (cp_parser_lambda_introducer): Add ids and first_capture_id
	variables, check for duplicates in this function.
	* lambda.c (add_capture): Don't check for duplicates nor use
	IDENTIFIER_MARKED.
	(register_capture_members): Don't clear IDENTIFIER_MARKED here.

	* g++.dg/cpp1y/lambda-init18.C: New test.
	* g++.dg/cpp1y/lambda-init19.C: New test.
	* g++.dg/cpp1y/pr89767.C: New test.

From-SVN: r269860
2019-03-21 23:01:02 +01:00
Jakub Jelinek 36a3a7a372 hash-table.h (hash_table): Add Lazy template parameter defaulted to false...
* hash-table.h (hash_table): Add Lazy template parameter defaulted
	to false, if true, don't alloc_entries during construction, but defer
	it to the first method that needs m_entries allocated.
	(hash_table::hash_table, hash_table::~hash_table,
	hash_table::alloc_entries, hash_table::find_empty_slot_for_expand,
	hash_table::too_empty_p, hash_table::expand, hash_table::empty_slow,
	hash_table::clear_slot, hash_table::traverse_noresize,
	hash_table::traverse, hash_table::iterator::slide): Adjust all methods.
	* hash-set.h (hash_set): Add Lazy template parameter defaulted to
	false.
	(hash_set::contains): If Lazy is true, use find_slot_with_hash with
	NO_INSERT instead of find_with_hash.
	(hash_set::traverse, hash_set::iterator, hash_set::iterator::m_iter,
	hash_set::m_table): Add Lazy to template params of hash_table.
	(gt_ggc_mx, gt_pch_nx): Use false as Lazy in hash_set template param.
	* attribs.c (test_attribute_exclusions): Likewise.
	* hash-set-tests.c (test_set_of_strings): Add iterator tests for
	hash_set.  Add tests for hash_set with Lazy = true.
c-family/
	* c-common.c (per_file_includes_t): Use false as Lazy in hash_set
	template param.
jit/
	* jit-recording.c (reproducer::m_set_identifiers): Use false as Lazy
	in hash_set template param.

From-SVN: r269859
2019-03-21 23:00:04 +01:00
Thomas Schwinge 2e4182ae07 [PR72741] Properly handle clauses specifying the level of parallelism for 'external' Fortran OpenACC routines
..., so as to also for these enable the generic middle end OMP code to verify
proper nesting of loops/routines regarding their levels of parallelism.

	gcc/fortran/
	PR fortran/72741
	* openmp.c (gfc_match_oacc_routine): Set the level of parallelism
	for all variants.
	(gfc_resolve_oacc_routines): Call gfc_add_omp_declare_target.
	gcc/testsuite/
	PR fortran/72741
	* c-c++-common/goacc/routine-3-extern.c: New file.
	* c-c++-common/goacc/routine-3.c: Adjust.
	* c-c++-common/goacc/routine-4-extern.c: New file.
	* c-c++-common/goacc/routine-4.c: Adjust.
	* gfortran.dg/goacc/routine-module-3.f90: New file.
	* gfortran.dg/goacc/routine-external-level-of-parallelism-1.f: New
	file.
	* gfortran.dg/goacc/routine-external-level-of-parallelism-2.f:
	Likewise.

Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>

From-SVN: r269858
2019-03-21 21:13:44 +01:00
Thomas Schwinge f6bf4bc14d [PR89773] Fortran OpenACC 'routine' directive refuses procedures with implicit EXTERNAL attribute
gcc/fortran/
	PR fortran/89773
	* gfortran.h (gfc_oacc_routine_name): Add loc member.
	(gfc_resolve_oacc_routines): Declare.
	* openmp.c (gfc_match_oacc_routine): Move some error checking
	into...
	(gfc_resolve_oacc_routines): ... this new function.
	* resolve.c (resolve_codes): Call it.
	gcc/testsuite/
	PR fortran/89773
	* gfortran.dg/goacc/pr89773.f90: New file.
	* gfortran.dg/goacc/pr77765.f90: Adjust.
	* gfortran.dg/goacc/routine-6.f90: Adjust, and extend.

From-SVN: r269857
2019-03-21 21:02:42 +01:00
Thomas Schwinge 8ced98c643 [PR72741] The name in a Fortran OpenACC 'routine' directive refers to the containing subroutine or function
gcc/fortran/
	PR fortran/72741
	* openmp.c (gfc_match_oacc_routine): Clarify.
	gcc/testsuite/
	PR fortran/72741
	* gfortran.dg/goacc/routine-module-mod-1.f90: Update.

From-SVN: r269856
2019-03-21 20:54:51 +01:00
Thomas Schwinge 64a40f1320 [PR72741] Encode OpenACC 'routine' directive's level of parallelism inside Fortran module files
If 'use'ing with an old GCC a new module file (with OpenACC 'routine'
directive's level of parallelism encoded), then that expectedly fails as
follows:

    f951: Fatal Error: Reading module 'routine_module_mod_1' at line 27 column 21: find_enum(): Enum not found

If 'use'ing with a new GCC an old module file (without OpenACC 'routine'
directive's level of parallelism encoded), then that (silently) continues to
accept the module file, and will proceed with the previous, erroneous behavior.

These seem to be acceptable compromises, instead of incrementing 'MOD_VERSION'.

	gcc/fortran/
	PR fortran/72741
	* module.c (verify_OACC_ROUTINE_LOP_NONE): New function.
	(enum ab_attribute): Add AB_OACC_ROUTINE_LOP_GANG,
	AB_OACC_ROUTINE_LOP_WORKER, AB_OACC_ROUTINE_LOP_VECTOR,
	AB_OACC_ROUTINE_LOP_SEQ.
	(attr_bits): Add these.
	(mio_symbol_attribute): Handle these.
	gcc/testsuite/
	PR fortran/72741
	* gfortran.dg/goacc/routine-module-1.f90: New file.
	* gfortran.dg/goacc/routine-module-2.f90: Likewise.
	* gfortran.dg/goacc/routine-module-mod-1.f90: Likewise.

From-SVN: r269855
2019-03-21 20:44:45 +01:00
Thomas Schwinge 33fc9dc962 [testsuite, Fortran] Provide 'dg-compile-aux-modules' in 'gfortran.dg/goacc/goacc.exp'
..., as yet another copy from 'gfortran.dg/dg.exp', which there are a few
already.

	gcc/testsuite/
	* gfortran.dg/goacc/goacc.exp (dg-compile-aux-modules): New proc.

From-SVN: r269854
2019-03-21 20:44:34 +01:00
Thomas Schwinge a77457430e [testsuite] Fix 'dg-compile-aux-modules' diagnostic
gcc/testsuite/
	PR fortran/56408
	* gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
	(dg-compile-aux-modules): Fix diagnostic.
	* gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Likewise.
	* gfortran.dg/dg.exp (dg-compile-aux-modules): Likewise.

From-SVN: r269851
2019-03-21 20:29:57 +01:00
Thomas Schwinge 4c1595d236 [testsuite, Fortran] Apply DejaGnu 1.4.4 work-around also to 'gfortran.dg/coarray/caf.exp:dg-compile-aux-modules'
See trunk r215293.  This unifies all 'dg-compile-aux-modules' instances.

	gcc/testsuite/
	PR fortran/56408
	* gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Workaround
	missing nexted dg-test call support in dejaGNU 1.4.4.

From-SVN: r269848
2019-03-21 20:16:29 +01:00
Thomas Schwinge bcb68daa54 [testsuite, Fortran] Consistently set 'DEFAULT_FFLAGS'
In the same 'runtest' instance, 'global' variables persist from one '*.exp'
file to another.

All other '*.exp' files are using " -pedantic-errors" instead of the empty
string as the default for 'DEFAULT_FFLAGS'.  Thus this setting of
'DEFAULT_FFLAGS' is not idempotent, depends on whether
'gfortran.dg/ieee/ieee.exp', or an other defining '*.exp' file is executed
first.

	gcc/testsuite/
	PR fortran/29383
	* gfortran.dg/ieee/ieee.exp (DEFAULT_FFLAGS): Set the same as in
	other '*.exp' files.

From-SVN: r269845
2019-03-21 19:54:50 +01:00
Ian Lance Taylor cae1a424cd compiler: add a newline to function receiver type's debug dump
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/168408

From-SVN: r269841
2019-03-21 16:22:56 +00:00