Commit Graph

176462 Commits

Author SHA1 Message Date
Eric Botcazou
359b19e990 Update the baseline symbols for SPARC64/Linux 2020-05-07 10:56:51 +02:00
Eric Botcazou
834e660ea8 Fix a few DWARF bugs with -fgnat-encodings=minimal
The -fgnat-encodings=minimal switch tells the compiler to generate mostly
pure DWARF for the GNAT compiler and it contains some bugs related to
discriminated record types with variant part.

	* dwarf2out.c (add_data_member_location_attribute): Account for
	the variant part offset in the computation of the data bit offset.
	(add_bit_offset_attribute): Remove CTX parameter.  Pass a new
	context in the call to field_byte_offset.
	(gen_field_die): Adjust call to add_bit_offset_attribute and
	remove confusing assertion.
	(analyze_variant_discr): Deal with boolean subtypes.
2020-05-07 10:54:09 +02:00
Martin Liska
b24fc8a692
lto-wrapper: split arguments of getenv ("MAKE").
* lto-wrapper.c: Split arguments of MAKE environment
	variable.
2020-05-07 09:38:16 +02:00
Uros Bizjak
6760cb4784 alpha: Implement the PR94780 fix for alpha.
Essentially the same fix as for x86.

2020-05-07  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
	* config/alpha/alpha.c (alpha_atomic_assign_expand_fenv): Use
	TARGET_EXPR instead of MODIFY_EXPR for the first assignments to
	fenv_var and new_fenv_var.
2020-05-07 08:44:38 +02:00
GCC Administrator
4be996072c Daily bump. 2020-05-07 00:16:32 +00:00
Marek Polacek
1e89178889 c++: ICE in value_dependent_expression_p in C++98 mode [PR94938]
Here we ICE with -std=c++98 since the newly added call to uses_template_parms
(r10-6357): we hit
26530             gcc_assert (cxx_dialect >= cxx11
26531                         || INTEGRAL_OR_ENUMERATION_TYPE_P (type));
and TYPE is a record type.  The problem is that the argument to
value_dependent_expression_p does not satisfy potential_constant_expression
which it must, as the comment explains.  I thought about fixing this in
uses_template_parms -- only call v_d_e_p if p_c_e is true, but in this
case we want to also suppress the warnings if we don't have a constant
expression.  I couldn't simply check TREE_CONSTANT as in
compute_array_index_type_loc, because then we'd stop warning in the new
Wtype-limits3.C test.

Fixed by using type_dependent_expression_p_push instead.  This means
that we won't suppress the warnings for value-dependent expressions that
aren't type-dependent, e.g. sizeof (T).  This only seems to make a
difference for -Wdiv-by-zero, now tested in Wdiv-by-zero-3.C, where I
think it's reasonable to warn.  It could make -Wtautological-compare
warn more, but that warning doesn't trigger when it gets constant arguments.
Wtype-limits4.C is a test reduced from poly-int.h and it tests a scenario
that was missing in our testsuite.

This patch also moves the warning_sentinels after the RECURs -- we mean
to use them for build_x_binary_op purposes only.

	PR c++/94938
	* pt.c (tsubst_copy_and_build): Call type_dependent_expression_p_push
	instead of uses_template_parms.  Move the warning_sentinels after the
	RECURs.

	* g++.dg/warn/Wdiv-by-zero-3.C: New test.
	* g++.dg/warn/Wtype-limits4.C: New test.
	* g++.dg/warn/template-2.C: New test.
	* g++.old-deja/g++.pt/crash10.C: Add dg-warning.
2020-05-06 18:52:44 -04:00
Iain Buclaw
0af711e191 d: Fix ICE in verify_gimple_stmt, at tree-cfg.c:4959
Both array concat and array new expressions wrapped any temporaries
created into a BIND_EXPR.  This does not work if an expression used to
construct the result requires scope destruction, which is represented by
a TARGET_EXPR with a clean-up, and a CLEANUP_POINT_EXPR at the
location where the temporaries logically go out of scope.  The reason
for this not working is because the lowering of cleanup point
expressions does not traverse inside BIND_EXPRs to expand any gimple
cleanup expressions within.

The use of creating BIND_EXPR has been removed at both locations, and
replaced with a normal temporary variable that has initialization
delayed until its address is taken.

gcc/d/ChangeLog:

	PR d/94970
	* d-codegen.cc (force_target_expr): Move create_temporary_var
	implementation inline here.
	(create_temporary_var): Remove.
	(maybe_temporary_var): Remove.
	(bind_expr): Remove.
	* d-convert.cc (d_array_convert): Use build_local_temp to generate
	temporaries, and generate its assignment.
	* d-tree.h (create_temporary_var): Remove.
	(maybe_temporary_var): Remove.
	(d_array_convert): Remove vars argument.
	* expr.cc (ExprVisitor::visit (CatExp *)): Use build_local_temp to
	generate temporaries, don't wrap them in a BIND_EXPR.
	(ExprVisitor::visit (NewExp *)): Likewise.

gcc/testsuite/ChangeLog:

	PR d/94970
	* gdc.dg/pr94970.d: New test.
2020-05-06 23:56:24 +02:00
Jakub Jelinek
46fcef99f4 c++: Avoid strict_aliasing_warning on dependent types or expressions [PR94951]
The following testcase gets a bogus warning during build_base_path,
when cp_build_indirect_ref* calls strict_aliasing_warning with a dependent
expression.  IMHO calling get_alias_set etc. on dependent types feels wrong
to me, we should just defer the warnings in those cases until instantiation
and only handle the cases where neither type nor expr are dependent.

2020-05-06  Jakub Jelinek  <jakub@redhat.com>

	PR c++/94951
	* typeck.c (cp_strict_aliasing_warning): New function.
	(cp_build_indirect_ref_1, build_reinterpret_cast_1): Use
	it instead of strict_aliasing_warning.

	* g++.dg/warn/Wstrict-aliasing-bogus-tmpl.C: New test.
2020-05-06 23:38:13 +02:00
Jakub Jelinek
25ee2155ea c++: Don't synthesize sfk_comparison method multiple times [PR94907]
On the following testcase we ICE, because synthesize_method is called twice
on the same sfk_comparison method fndecl, the first time it works fine
because start_preparsed_function in that case sets both
current_function_decl and cfun, but second time it is called it only sets
the former and keeps cfun NULL, so we ICE when trying to store
current_function_returns_value.
I think it is just wrong to call synthesize_method multiple times, and most
synthesize_method callers avoid that by not calling it if DECL_INITIAL is
already set, so this patch does that too.

2020-05-06  Jakub Jelinek  <jakub@redhat.com>

	PR c++/94907
	* method.c (defaulted_late_check): Don't call synthesize_method
	on constexpr sfk_comparison if it has been called on it already.

	* g++.dg/cpp2a/spaceship-synth8.C: New test.
2020-05-06 23:36:31 +02:00
François Dumont
72a54e5e81 libstdc++ std::fill overload for std::vector<bool>::iterator
Extend the overload so that it is used even when _GLIBCXX_DEBUG mode
is activated.

	* include/bits/stl_algobase.h (struct _Bit_iterator): New declaration.
	(std::__fill_a1(_Bit_iterator, _Bit_iterator, const bool&)): Likewise.
	* include/bits/stl_bvector.h (__fill_bvector): Move outside
	_GLIBCXX_STD_C namespace.
	(fill(_Bit_iterator, _Bit_iterator, const bool&)): Likewise and rename
	into...
	(__fill_a1): ...this.
	* testsuite/25_algorithms/fill/bvector/1.cc: New.
2020-05-06 23:28:22 +02:00
Uros Bizjak
d3a1459cd4 i386: Use generic division to generate INEXACT exception
Introduce math_force_eval_div to use generic division to generate
INEXACT as well as INVALID and DIVZERO exceptions.

libgcc/ChangeLog:

	* config/i386/sfp-exceptions.c (__math_force_eval): Remove.
	(__math_force_eval_div): New define.
	(__sfp_handle_exceptions): Use __math_force_eval_div to use
	generic division to generate INVALID, DIVZERO and INEXACT
	exceptions.

libatomic/ChangeLog:

	* config/x86/fenv.c (__math_force_eval): Remove.
	(__math_force_eval_div): New define.
	(__atomic_deraiseexcept): Use __math_force_eval_div to use
	generic division to generate INVALID, DIVZERO and INEXACT
	exceptions.

libgfortran/ChangeLog:

	* config/fpu-387.h (__math_force_eval): Remove.
	(__math_force_eval_div): New define.
	(local_feraiseexcept): Use __math_force_eval_div to use
	generic division to generate INVALID, DIVZERO and INEXACT
	exceptions.
	(struct fenv): Define named struct instead of typedef.
2020-05-06 23:01:32 +02:00
Nathan Sidwell
bc95e478fe c++: QT overload regression with attribute [PR94946]
Jason's fix for 90570 & 79585 was a bit overzealous.  Dependent attribs should still
attach to a parameter decl.

            * decl.c (grokdeclarator): Don't splice template attributes in
            parm context -- they can apply to the parm.
2020-05-06 12:14:44 -07:00
Iain Sandoe
80644a672e coroutines: Remove references to n4849 (NFC).
This just strips out references to the draft standard
numbered n4849.  The implementation is now intended to
be applicable to the expected final version.

gcc/cp/ChangeLog:

2020-05-05  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc: Remove references to n4849 throughout.
2020-05-06 20:06:43 +01:00
Jakub Jelinek
319eafce3e x86: Fix vextract* masked patterns [PR93069]
The AVX512F documentation clearly states that in instructions where the
destination is a memory only merging-masking is possible, not zero-masking,
and the assembler enforces that.

The testcase in this patch fails to assemble because of
Error: unsupported masking for `vextracti32x8'
on
        vextracti32x8   $0x0, %zmm1, -64(%rsp){%k1}{z}
For the vector extraction patterns, we apparently have 7 *_maskm patterns
that only accept memory destinations and rtx_equal_p merge-masking source
for it, 7 *<mask_name> corresponding patterns that allow memory destination
only for the non-masked cases (through <store_mask_constraint>), then 2
*<mask_name> patterns (lo ssehalf V16FI and lo ssehalf VI8F_256 ones) which
do allow memory destination even for masked cases and are the cause of the
testsuite failure, because we must not allow C constraint if the destination
is m, and finally one pair of patterns (separate * and *_mask, hi ssehalf
VI4F_256), which has another issue (for which I don't have a testcase
though), where if it would match zero-masking with register destination,
it wouldn't emit the needed {z} into assembly.
The attached patch fixes those 3 issues only, perhaps more suitable for
backporting.
But, even with that fixed, we are missing 3 further *_maskm patterns and
more importantly, I find the split into 3 separate patterns after subst,
*_maskm for masking with memory destination, *_mask for masking with
register destination and * for non-masking unnecessarily complex and harder
for reload, so the included patch below (non-attached) instead kills all
*_maskm patterns and splits the *<mask_name> patterns into * and *_mask
by hand instead of subst, where the *_mask ones make sure that with v
destination they use 0C, while with m destination they use 0 and as
condition enforce that either destination is not MEM, or rtx_equal_p between
the destination and corresponding merging-masking operand source.
If we had those 3 missing *_maskm patterns, this patch would actually result
in both shorter sse.md and shorter machine description after subst (e.g.
length of tmp-mddump.md), as we don't have them, the patch is actually 16
lines longer sse.md, but still shorter tmp-mddump.md.

2020-05-06  Jakub Jelinek  <jakub@redhat.com>

	PR target/93069
	* config/i386/subst.md (store_mask_constraint, store_mask_predicate):
	Remove.
	(avx512dq_vextract<shuffletype>64x2_1_maskm,
	avx512f_vextract<shuffletype>32x4_1_maskm,
	vec_extract_lo_<mode>_maskm, vec_extract_hi_<mode>_maskm): Remove.
	(<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name>): Split
	into ...
	(*avx512dq_vextract<shuffletype>64x2_1,
	avx512dq_vextract<shuffletype>64x2_1_mask): ... these new
	define_insns.  Even in the masked variant allow memory output but in
	that case use 0 rather than 0C constraint on the source of masked-out
	elts.
	(<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>): Split
	into ...
	(*avx512f_vextract<shuffletype>32x4_1,
	avx512f_vextract<shuffletype>32x4_1_mask): ... these new define_insns.
	Even in the masked variant allow memory output but in that case use
	0 rather than 0C constraint on the source of masked-out elts.
	(vec_extract_lo_<mode><mask_name>): Split into ...
	(vec_extract_lo_<mode>, vec_extract_lo_<mode>_mask): ... these new
	define_insns.  Even in the masked variant allow memory output but in
	that case use 0 rather than 0C constraint on the source of masked-out
	elts.
	(vec_extract_hi_<mode><mask_name>): Split into ...
	(vec_extract_hi_<mode>, vec_extract_hi_<mode>_mask): ... these new
	define_insns.  Even in the masked variant allow memory output but in
	that case use 0 rather than 0C constraint on the source of masked-out
	elts.
2020-05-06 20:05:02 +02:00
qing zhao
530b440943 add a new option -flarge-source-files.
gcc/ChangeLog:

	PR c/94230
	* common.opt: Add -flarge-source-files.
	* doc/invoke.texi: Document it.
	* toplev.c (process_options): set line_table->default_range_bits
	to 0 when flag_large_source_files is true.

gcc/c-family/ChangeLog:

	PR c/94230
	* c-indentation.c (get_visual_column): Add a hint to use the new
	-flarge-source-files option.

gcc/testsuite/ChangeLog:

	PR c/94230
	* gcc.dg/plugin/location-overflow-test-1.c (fn_1): New message to
	provide hint to use the new -flarge-source-files option.
2020-05-06 10:46:09 -07:00
Uros Bizjak
7c2879301d i386: Use ADD to implement compares with negated operand [PR94913]
Use carry flag from addition to implement GEU/LTU compares
with negated operand, so e.g.

	~x < y

compiles to:

        addq    %rsi, %rdi
        setc    %al

instead of:

        notq    %rdi
        cmpq    %rsi, %rdi
        setb    %al

	PR target/94913
	* config/i386/predicates.md (add_comparison_operator): New predicate.
	* config/i386/i386.md (compare->add splitter): New splitters.

testsuite/ChangeLog:

	PR target/94913
	* gcc.target/i386/pr94913-1.c: New test.
	* gcc.target/i386/pr94913-2.c: Ditto.
2020-05-06 17:33:51 +02:00
Kyrylo Tkachov
1266778548 [AArch64] Use __getauxval instead of getauxval in LSE detection code in libgcc
This version of the fix uses __getauxval instead of getauxval.
The whole thing is guarded simply on __gnu_linux__.
__getauxval was introduced in 2.16 but the aarch64 port was added in 2.17 so in practice I expect all aarch64 glibcs to support __getauxval.

Bootstrapped and tested on aarch64-none-linux-gnu.
Also tested on aarch64-none-elf.

2020-05-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

	* config/aarch64/lse-init.c (init_have_lse_atomics): Use __getauxval
	instead of getauxval.
	(AT_HWCAP): Define.
	(HWCAP_ATOMICS): Define.
	Guard detection on __gnu_linux__.
2020-05-06 16:20:38 +01:00
Richard Biener
4e849a74a8 Prepare removal of SLP_INSTANCE_GROUP_SIZE
This removes trivial instances of SLP_INSTANCE_GROUP_SIZE and refrains
from using a "SLP instance" which nowadays is just one of the possibly
many entries into the SLP graph.

2020-05-06  Richard Biener  <rguenther@suse.de>

	* tree-vectorizer.h (vect_transform_slp_perm_load): Adjust.
	* tree-vect-data-refs.c (vect_slp_analyze_node_dependences):
	Remove slp_instance parameter, just iterate over all scalar stmts.
	(vect_slp_analyze_instance_dependence): Adjust and likewise.
	* tree-vect-slp.c (vect_bb_slp_scalar_cost): Remove unused BB
	parameter.
	(vect_schedule_slp): Just iterate over all scalar stmts.
	(vect_supported_load_permutation_p): Adjust.
	(vect_transform_slp_perm_load): Remove slp_instance parameter,
	instead use the number of lanes in the node as group size.
	* tree-vect-stmts.c (vect_model_load_cost): Get vectorization
	factor instead of slp_instance as parameter.
	(vectorizable_load): Adjust.
2020-05-06 15:30:14 +02:00
H.J. Lu
a3f1fc0625 x32: Update baseline_symbols.txt
* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
2020-05-06 06:17:44 -07:00
Andreas Schwab
cb5ecbc49b aarch64: fix conflicting declarations
aarch64_get_extension_string_for_isa_flags is declared in
"aarch64-protos.h", use that instead of re-declaring it improperly.

	* config/aarch64/driver-aarch64.c: Include "aarch64-protos.h".
	(aarch64_get_extension_string_for_isa_flags): Don't declare.
2020-05-06 14:12:57 +02:00
Rainer Orth
093d95fe34 libstdc++: Update Solaris baselines for GCC 10.1
I just remembered that the libstdc++ ABI baselines haven't been updated
for the GCC 10 release yet.  This patch corrects this for Solaris/SPARC
and x86.

Created on master with make new-abi-baseline on i386-pc-solaris2.11 and
sparc-sun-solaris2.11, bootstrapped on gcc-10 branch without regressions.

	* config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
	* config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
	Likewise.
	* config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
	* config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
	Likewise.
2020-05-06 14:02:34 +02:00
Richard Biener
6fc00b41e7 middle-end/94964 - avoid EH loop entry with CP_SIMPLE_PREHEADERS
Loop optimizers expect to be able to insert on the preheader
edge w/o splitting it thus avoid ending up with a preheader
that enters the loop via an EH edge (or an abnormal edge).

2020-05-06  Richard Biener  <rguenther@suse.de>

	PR middle-end/94964
	* cfgloopmanip.c (create_preheader): Require non-complex
	preheader edge for CP_SIMPLE_PREHEADERS.
2020-05-06 13:36:46 +02:00
Richard Biener
371905d122 tree-optimization/94963 - avoid bogus uninit warning with store-motion
Eliding the load for store-motion causes an uninitialized variable
flowing into the loop, conditionally initialized and used.  The
uninit warning cannot relate the flag used to guard the initialization
and use with the actual initialization so the following robustifies
the previous approach of marking the conditional store as not to
be warned on by instead initializing the variable on loop entry
from an uninitialized variable we mark as not to be warned for.

2020-05-06  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/94963
	* tree-ssa-loop-im.c (execute_sm_if_changed): Remove
	no-warning marking of the conditional store.
	(execute_sm): Instead mark the uninitialized state
	on loop entry to be not warned about.

	* gcc.dg/pr94963.c: New testcase.
2020-05-06 12:39:24 +02:00
Martin Liska
6208287fca
Revert "Use const for template argument."
This reverts commit 03f9754665.
2020-05-06 12:09:05 +02:00
liuhongt
308e2c1cca Add ChangeLog entries for patch TSXLDTRK. 2020-05-06 17:58:06 +08:00
liuhongt
a21c38fbe3 Add ENQCMD, AVX512BF16, AVX512_VP2INTERSECT to gcc.target/i386/funcspec-56.inc.
gcc/testuite/ChangeLog

	* gcc.target/i386/funcspec-56.inc: Add enqcmd, avx512bf16,
	avx512vp2intersect.
2020-05-06 17:53:30 +08:00
Jonathan Wakely
2b6f6aeea1 libstdc++: Document library versioning for 9.[123] and 10.1
* doc/xml/manual/abi.xml (abi.versioning.history): Document library
	versions for GCC 9.[123] and 10.1 releases.
	* doc/html/*: Regenerate.
2020-05-06 10:30:15 +01:00
Jakub Jelinek
19d422201c libstdc++: Update {x86_64,i?86,powerpc64,s390x,aarch64}-linux baselines for GCC 10.1
On Wed, May 06, 2020 at 10:49:13AM +0200, Rainer Orth wrote:
> I just remembered that the libstdc++ ABI baselines haven't been updated
> for the GCC 10 release yet.  This patch corrects this for Solaris/SPARC
> and x86.

Oops, here are the updates from Fedora packages built during the weekend.

2020-05-06  Jakub Jelinek  <jakub@redhat.com>

	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
	* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
2020-05-06 11:21:28 +02:00
Jakub Jelinek
a7b76d574b match.pd: Optimize ~(~X +- Y) into (X -+ Y) [PR94921]
According to my verification proglet, this transformation for signed types
with undefined overflow doesn't introduce nor remove any UB cases, so should
be valid even for signed integral types.
Not using a for because of the :c on plus which can't be there on minus.

2020-05-06  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/94921
	* match.pd (~(~X - Y) -> X + Y, ~(~X + Y) -> X - Y): New
	simplifications.

	* gcc.dg/tree-ssa/pr94921.c: New test.
2020-05-06 11:20:20 +02:00
Richard Biener
380a681518 tree-optimization/94965 - fix typo in vec_info * passing
Should have passed vinfo, not loop_vinfo.

2020-05-06  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/94965
	* tree-vect-stmts.c (vectorizable_load): Fix typo.
2020-05-06 11:01:37 +02:00
Rainer Orth
f4dff765db doc: Update install.texi for GCC 10 on Solaris
This patch updates install.texi for GCC 10 on Solaris.  It includes some
general cleanup and updates and includes a couple of caveats, some of
them found when testing GCC 10.1.0 RC1 with only the bundled tools.

The reference to TGCware on the binaries page is gone because they only
provide binaries up to Solaris 9.

The note about configuring 64-bit Solaris/SPARC compilers with
--build=sparcv9-sun-solaris2.11 became necessary because upstream
config.guess silently reverted my patch to automatically detect this.  We
already had a bug report about a comparison failure caused by this issue.

Tested with make doc/gccinstall.info and doc/gccinstall.pdf and
inspection of the resulting files.

	* doc/install.texi: Replace Sun with Solaris as appropriate.
	(Tools/packages necessary for building GCC, Perl version between
	5.6.1 and 5.6.24): Remove Solaris 8 reference.
	(Installing GCC: Binaries, Solaris 2 (SPARC, Intel)): Remove
	TGCware reference.
	(Specific, i?86-*-solaris2*): Update version references for
	Solaris 11.3 and later.  Remove gas 2.26 caveat.
	(Specific, *-*-solaris2*): Update version references for
	Solaris 11.3 and later.  Remove boehm-gc reference.
	Document GMP, MPFR caveats on Solaris 11.3.
	(Specific, sparc-sun-solaris2*): Update Solaris 9 references.
	(Specific, sparc64-*-solaris2*): Likewise.
	Document --build requirement.
2020-05-06 10:09:11 +02:00
liuhongt
1e47cb3597 Enable TARGET_TSXLDTRK for GCC support.
gcc/
	* common/config/i386/i386-common.c (OPTION_MASK_ISA2_TSXLDTRK_SET,
	OPTION_MASK_ISA2_TSXLDTRK_UNSET): New macros.
	* config.gcc: Add tsxldtrkintrin.h to extra_headers.
	* config/i386/driver-i386.c (host_detect_local_cpu): Detect
	TSXLDTRK.
	* config/i386/i386-builtin.def: Add new builtins.
	* config/i386/i386-c.c (ix86_target_macros_internal): Define
	__TSXLDTRK__.
	* config/i386/i386-options.c (ix86_target_string): Add
	-mtsxldtrk.
	(ix86_valid_target_attribute_inner_p): Add attribute tsxldtrk.
	* config/i386/i386.h (TARGET_TSXLDTRK, TARGET_TSXLDTRK_P):
	New.
	* config/i386/i386.md (define_c_enum "unspec"): Add
	UNSPECV_SUSLDTRK, UNSPECV_RESLDTRK.
	(TSXLDTRK): New define_int_iterator.
	("<tsxldtrk>"): New define_insn.
	* config/i386/i386.opt: Add -mtsxldtrk.
	* config/i386/immintrin.h: Include tsxldtrkintrin.h.
	* config/i386/tsxldtrkintrin.h: New.
	* doc/invoke.texi: Document -mtsxldtrk.

gcc/testsuite/
	* g++.dg/other/i386-2.c: Add -mtsxldtrk.
	* g++.dg/other/i386-3.c: Likewise.
	* gcc.target/i386/sse-12.c: Likewise.
	* gcc.target/i386/sse-13.c: Likewise.
	* gcc.target/i386/sse-14.c: Likewise.
	* gcc.target/i386/sse-22.c: Likewsie.
	* gcc.target/i386/sse-23.c: Likewise.
	* gcc.target/i386/tsxldtrk-1.c: New test.
	* gcc.target/i386/funcspec-56.inc: Add target attribute tests
	for tsxldtrk.
2020-05-06 15:57:59 +08:00
Jakub Jelinek
b4ace720e0 riscv: Fix up riscv_atomic_assign_expand_fenv [PR94950]
Similarly to the fixes on many other targets, riscv needs to use TARGET_EXPR
to avoid having the create_tmp_var_raw temporaries without proper DECL_CONTEXT
and not mentioned in local decls.

2020-05-06  Jakub Jelinek  <jakub@redhat.com>

	PR target/94950
	* config/riscv/riscv-builtins.c (riscv_atomic_assign_expand_fenv): Use
	TARGET_EXPR instead of MODIFY_EXPR for first assignment to old_flags.
2020-05-06 09:40:33 +02:00
Jakub Jelinek
f14848aea7 combine: Don't replace SET_SRC with REG_EQUAL note content if SET_SRC has side-effects [PR94873]
There were some discussions about whether REG_EQUAL notes are valid on insns with a single
set which contains auto-inc-dec side-effects in the SET_SRC and the majority thinks that
it should be valid.  So, this patch fixes the combiner to punt in that case, because otherwise
the auto-inc-dec side-effects from the SET_SRC are lost.

2020-05-06  Jakub Jelinek  <jakub@redhat.com>

	PR rtl-optimization/94873
	* combine.c (combine_instructions): Don't optimize using REG_EQUAL
	note if SET_SRC (set) has side-effects.

	* gcc.dg/pr94873.c: New test.
2020-05-06 09:31:19 +02:00
liuhongt
366386c7a9 Enable GCC support for SERIALIZE
2020-03-04  Hongtao Liu  <hongtao.liu@intel.com>
2020-03-04  Wei Xiao  <wei3.xiao@intel.com>

gcc/Changelog:
	* gcc/common/config/i386/i386-common.c (OPTION_MASK_ISA2_SERIALIZE_SET,
	OPTION_MASK_ISA2_SERIALIZE_UNSET): New macros.
	(ix86_handle_option): Handle -mserialize.
	* gcc/config.gcc (serializeintrin.h): New header file.
	* gcc/config/i386/cpuid.h (bit_SERIALIZE): New bit.
	* gcc/config/i386/driver-i386.c (host_detect_local_cpu): Detect
	-mserialize.
	* gcc/config/i386/i386-builtin.def: Add new builtin.
	* gcc/config/i386/i386-c.c (__SERIALIZE__): New macro.
	* gcc/config/i386/i386-options.c (ix86_target_opts_isa2_opts):
	  Add -mserialize.
	* (ix86_valid_target_attribute_inner_p): Add target attribute
	* for serialize.
	* gcc/config/i386/i386.h (TARGET_SERIALIZE, TARGET_SERIALIZE_P):
	  New macros.
	* gcc/config/i386/i386.md (UNSPECV_SERIALIZE): New unspec.
	  (serialize): New define_insn.
	* gcc/config/i386/i386.opt (mserialize): New option
	* gcc/config/i386/immintrin.h: Include serailizeintrin.h.
	* gcc/config/i386/serializeintrin.h: New header file.
	* gcc/doc/invoke.texi: Add documents for -mserialize.

gcc/testsuite/Changelog
	* gcc/testsuite/gcc.target/i386/serialize-1.c: New test.
	* gcc/testsuite/g++.dg/other/i386-2.C: Add -mserialize.
	* gcc/testsuite/g++.dg/other/i386-3.C: Ditto.
	* gcc/testsuite/gcc.target/i386/funcspec-56.inc: Ditto.
	* gcc/testsuite/gcc.target/i386/sse-12.c: Ditto.
	* gcc/testsuite/gcc.target/i386/sse-13.c: Ditto.
	* gcc/testsuite/gcc.target/i386/sse-14.c: Ditto.
	* gcc/testsuite/gcc.target/i386/sse-22.c: Ditto.
	* gcc/testsuite/gcc.target/i386/sse-23.c: Ditto.
2020-05-06 14:44:26 +08:00
Richard Biener
3f969affaf Adjust integer <-> pointer conversion IL checking
The existing check doesn't reflect the actual reason why it exists,
the patch makes us to use POINTERS_EXTEND_UNSIGNED instead which
is specified for ptr_mode and word_mode/Pmode precision.

2020-05-06  Richard Biener  <rguenther@suse.de>

	* tree-cfg.c (verify_gimple_assign_unary): Adjust integer
	to/from pointer conversion checking.
2020-05-06 08:41:17 +02:00
GCC Administrator
cc80c1e423 Daily bump. 2020-05-06 00:16:15 +00:00
Jason Merrill
e42f342652 c++: CWG2235 partial ordering and non-dependent types
Issue 2235 removed the rule previously added for issues 1391/1847 that had
partial ordering completely ignore function parameters with no deducible
template parameters.

gcc/cp/ChangeLog
2020-05-05  Jason Merrill  <jason@redhat.com>

	CWG 2235
	* pt.c (more_specialized_fn): Do consider parms with no deducible
	template parameters.
2020-05-05 17:40:18 -04:00
Jason Merrill
04b89192ac c++: constexpr and lambda capture [PR90212]
This is the same issue as PR86429, just in potential_constant_expression_1
rather than cxx_eval_constant_expression.  As in that case, when we're
trying to evaluate a constant expression within a lambda, we don't have a
constant closure object to refer to, but we can try to refer directly to the
captured variable.

gcc/cp/ChangeLog
2020-05-05  Jason Merrill  <jason@redhat.com>

	PR c++/90212
	* constexpr.c (potential_constant_expression_1): In a lambda
	function, consider a captured variable directly.
2020-05-05 17:39:31 -04:00
H.J. Lu
d0aed8d5ba matcher-1.m: Change return type to int
my_exception_matcher must return int.  Otherwise, this test fails.

	PR testsuite/84324
	* objc/execute/exceptions/matcher-1.m (my_exception_matcher):
	Change return type to int.
2020-05-05 13:35:50 -07:00
Harald Anlauf
5a26ea7e0f PR fortran/93366 - ICE on invalid, reject invalid use of NULL() as argument
gcc/fortran/ChangeLog:

2020-05-05  Steve Kargl  <kargl@gcc.gnu.org>
	Harald Anlauf  <anlauf@gmx.de>

	PR fortran/93366
	* check.c (gfc_check_associated, invalid_null_arg): Factorize
	check for presence of invalid NULL() argument.
	(gfc_check_kind, gfc_check_merge, gfc_check_shape)
	(gfc_check_sizeof, gfc_check_spread, gfc_check_transfer): Use this
	check for presence of invalid NULL() arguments.

gcc/testsuite/ChangeLog:

2020-05-05  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/93366
	* gfortran.dg/pr93366.f90: New test.
2020-05-05 22:16:50 +02:00
Nathan Sidwell
1136ba01e1 libitm: Disable diagnostic coloring in tests
Diagnostic coloring makes the log file hard to read when there's a
problem.  Let's do without it.

            * Testsuite/lib/libitm.exp (libitm_init): Add
            -fdiagnostics-color=never to options.
2020-05-05 12:50:54 -07:00
Iain Sandoe
f1656ae923 coroutines: Replace extra checks for co_yield with asserts.
The lowering of co_yield to a promise method call and a co_await
was moved to the initial analysis phase with the intention of
avoiding the need to handle the two cases later.

Before removing the later checks entirely, this patch replaces
them with checking asserts.

gcc/cp/Changelog:

2020-05-05  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (transform_await_wrapper): Check that we have
	no unlowered co_yields.
	(captures_temporary): Likewise.
	(register_awaits): Likewise.
2020-05-05 20:27:27 +01:00
Michael Meissner
e5185cc6be Delete file meant for a private branch 2020-05-05 14:08:33 -04:00
Michael Meissner
f5f2a77571 Remove files meant for a private branch 2020-05-05 14:07:46 -04:00
Michael Meissner
35a4fe9dcf Delete file meant for private branch 2020-05-05 14:07:02 -04:00
Michael Meissner
8b9180ae7e Delete file meant for private branch 2020-05-05 14:05:39 -04:00
Michael Meissner
d236b30c5c Remove files meant for private branch 2020-05-05 14:04:59 -04:00
Michael Meissner
ef836167f5 Delete changes meant for a private branch.
2020-05-05  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000-builtin.def: Delete changes meant for a
	private branch.
	* config/rs6000/rs6000-c.c: Likewise.
	* config/rs6000/rs6000-call.c: Likewise.
	* gcc/config/rs6000/rs6000.c: Likewise.

2020-05-05  Michael Meissner  <meissner@linux.ibm.com>

	* gcc.dg/nextafter-2.c: Delete changes meant for a private branch.
	* gcc.target/powerpc/pr70117.c: Likewise.

2020-05-05  Michael Meissner  <meissner@linux.ibm.com>

	* config.host: Delete changes meant for a private branch.
	* config/rs6000/t-float128: Likewise.
	* configure.ac: Likewise.
	* configure: Likewise.
2020-05-05 14:03:30 -04:00
Michael Meissner
3338afa4a3 Patch ieee128-lib-patch010b 2020-05-05 14:03:30 -04:00