Commit graph

168966 commits

Author SHA1 Message Date
Jeff Law
29c1593246 mips.c (mips_expand_builtin_insn): Swap the 1st and 3rd operands of the fmadd/fmsub/maddv builtin.
* config/mips/mips.c (mips_expand_builtin_insn): Swap the 1st
	and 3rd operands of the fmadd/fmsub/maddv builtin.

	* gcc.target/mips/msa-fmadd.c: New.

From-SVN: r271826
2019-05-31 15:40:25 -06:00
Jakub Jelinek
e7393c8936 tree.h (OMP_CLAUSE__CONDTEMP__ITER): Define.
* tree.h (OMP_CLAUSE__CONDTEMP__ITER): Define.
	* gimplify.c (gimplify_scan_omp_clauses): Allow lastprivate conditional
	on OMP_SIMD if not nested inside of worksharing loop that also has
	lastprivate conditional clause for the same decl.
	(gimplify_omp_for): Add _condtemp_ clauses to OMP_SIMD if needed.
	* omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE__CONDTEMP_ also
	on simd.
	(lower_rec_input_clauses): Likewise.  Handle lastprivate conditional
	on simd construct.
	(lower_lastprivate_conditional_clauses): Handle lastprivate conditional
	on simd construct.
	(lower_lastprivate_clauses): Likewise.
	(lower_omp_sections): Call lower_lastprivate_conditional_clauses before
	calling lower_rec_input_clauses.
	(lower_omp_for): Likewise.
	(lower_omp_1): Use first rather than second OMP_CLAUSE__CONDTEMP_
	clause on simd construct.
	* omp-expand.c (expand_omp_simd): Initialize cond_var if
	OMP_CLAUSE__CONDTEMP_ clause is present.

	* c-c++-common/gomp/lastprivate-conditional-2.c (foo): Don't expect
	a sorry on lastprivate conditional on simd construct.
	* gcc.dg/vect/vect-simd-6.c: New test.
	* gcc.dg/vect/vect-simd-7.c: New test.

From-SVN: r271825
2019-05-31 23:38:35 +02:00
Jakub Jelinek
1ce8fc63a4 omp-low.c (lower_rec_simd_input_clauses): Set TREE_THIS_NOTRAP on ivar and lvar.
* omp-low.c (lower_rec_simd_input_clauses): Set TREE_THIS_NOTRAP on
	ivar and lvar.

	* gcc.dg/vect/vect-simd-5.c: New test.

From-SVN: r271824
2019-05-31 23:37:10 +02:00
Ian Lance Taylor
2099d44658 runtime: drop unused C type reflection code
In particular, drop __go_type_descriptors_equal, which is no longer
    used, and will be made obsolete by CL 179598.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179858

From-SVN: r271823
2019-05-31 21:32:47 +00:00
Ian Lance Taylor
6303331c33 compiler: optimize append of make
The gc compiler recognizes append(s, make([]T, n)...), and
    generates code to directly zero the tail instead of allocating a
    new slice and copying. This CL lets the Go frontend do basically
    the same.
    
    The difficulty is that at the point we handle append, there may
    already be temporaries introduced (e.g. in order_evaluations),
    which makes it hard to find the append-of-make pattern. The
    compiler could "see through" the value of a temporary, but it is
    only safe to do if the temporary is not assigned multiple times.
    For this, we add tracking of assignments and uses for temporaries.
    
    This also helps in optimizing non-escape slice make. We already
    optimize non-escape slice make with constant len/cap to stack
    allocation. But it failed to handle things like f(make([]T, n))
    (where the slice doesn't escape and n is constant), because of
    the temporary. With tracking of temporary assignments and uses,
    it can handle this now as well.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179597

From-SVN: r271822
2019-05-31 21:18:39 +00:00
Ian Lance Taylor
2b5360d747 compiler: handle int-to-string conversion with large integer constant
Currently, Type_conversion_expression::do_is_constant thinks the
    int-to-string conversion is constant if the integer operand is
    constant, but Type_conversion_expression::do_get_backend actually
    generates a call to runtime.intstring if the integer does not fit
    in a "ushort", which makes it not suitable in constant context,
    such as static initializer.
    
    This CL makes it handle all constant integer input as constant,
    generating constant string.
    
    Fixes golang/go#32347.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179777

From-SVN: r271821
2019-05-31 19:45:37 +00:00
Xiong Hu Luo
f2c2c4e302 re PR c/43673 (Incorrect warning: use of 'D' length modifier with 'a' type character)
PR c/43673
	* c-format.c (print_char_table, scanf_char_table): Replace BADLEN with
	TEX_D32, TEX_D64 or TEX_D128.

	PR c/43673
	* gcc.dg/format-dfp-printf-1.c: New test.
	* gcc.dg/format-dfp-scanf-1.c: Likewise.

From-SVN: r271820
2019-05-31 12:46:02 -06:00
Michael Forney
2a1c064a94 cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__ is non-zero.
* cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__
	is non-zero.

From-SVN: r271819
2019-05-31 12:25:48 -06:00
Ian Lance Taylor
4d12cf3cc3 runtime: implement cheaper context switch on Linux/AMD64
Currently, goroutine switches are implemented with libc
    getcontext/setcontext functions, which saves/restores the machine
    register states and also the signal context. This does more than
    what we need, and performs an expensive syscall.
    
    This CL implements a simplified version of getcontext/setcontext,
    in assembly, that only saves/restores the necessary part, i.e.
    the callee-save registers, and the PC, SP. A simplified version
    of makecontext, written in C, is also added. Currently this is
    only implemented on Linux/AMD64.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/178298

From-SVN: r271818
2019-05-31 17:56:36 +00:00
Marc Glisse
34a13a521e apply unary op to both sides of (vec_cond x cst1 cst2)
2019-05-31  Marc Glisse  <marc.glisse@inria.fr>

gcc/
	* match.pd (~(vec?cst1:cst2)): New transformation.

gcc/testsuite/
	* g++.dg/tree-ssa/cprop-vcond.C: New file.

From-SVN: r271817
2019-05-31 17:04:20 +00:00
Marc Glisse
9cf60d3b0d Simplify more EXACT_DIV_EXPR comparisons
2019-05-31  Marc Glisse  <marc.glisse@inria.fr>

gcc/
	* match.pd (X/[ex]D<Y/[ex]D): Handle negative denominator.
	((size_t)(A /[ex] B) CMP C): New transformation.

gcc/testsuite/
	* gcc.dg/tree-ssa/cmpexactdiv-3.c: New file.
	* gcc.dg/tree-ssa/cmpexactdiv-4.c: New file.
	* gcc.dg/Walloca-13.c: Xfail.

From-SVN: r271816
2019-05-31 16:54:30 +00:00
Richard Sandiford
f4fde1b378 New .md construct: define_insn_and_rewrite
Several SVE patterns need define_insn_and_splits that generate the
same insn_code, but with different operands.  That's probably a
niche requirement, but it's cropping up often enough on the ACLE
branch that I think it would be good to have a syntactic sugar for it.

This patch therefore adds a new construct called define_insn_and_rewrite.
It's basically a define_insn_and_split with an implicit split pattern,
obtained by copying the insn pattern and replacing match_operands with
match_dups and match_operators with match_op_dups.

2019-05-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* doc/md.texi: Document define_insn_and_rewrite.
	* rtl.def (DEFINE_INSN_AND_REWRITE): New rtx code.
	* gensupport.c (queue_elem): Update comment.
	(replace_operands_with_dups): New function.
	(gen_rewrite_sequence): Likewise.
	(process_rtx): Handle DEFINE_INSN_AND_REWRITE.
	* read-rtl.c (apply_subst_iterator): Likewise.
	(add_condition_to_rtx, named_rtx_p): Likewise.
	(rtx_reader::read_rtx_operand): Likewise.
	* config/aarch64/aarch64-sve.md
	(while_ult<GPI:mode><PRED_ALL:mode>_cc): Rename to...
	(*while_ult<GPI:mode><PRED_ALL:mode>_cc): ...this and use
	define_insn_and_rewrite.
	(*cond_<optab><mode>_any): Turn into define_insn_and_rewrites.
	Remove separate define_split.

From-SVN: r271815
2019-05-31 16:27:49 +00:00
Jonathan Wakely
b1bb4869e2 Add noexcept to tuple<> and simplify tuple<T1,T2> noexcept-specifiers
* include/std/tuple (tuple<>): Add noexcept to allocator-extended
	constructors.
	(tuple<T1, T2>::__nothrow_default_constructible()): New helper
	function.
	(tuple<T1, T2>::tuple(), explicit tuple<T1, T2>::tuple()): Use helper.

From-SVN: r271814
2019-05-31 15:58:05 +01:00
Jan Hubicka
1facd6278b tree-ssa-alias.c (type_has_components_p): New function.
* tree-ssa-alias.c (type_has_components_p): New function.
	(aliasing_component_refs_p): Use it.

From-SVN: r271813
2019-05-31 14:16:27 +00:00
Jonathan Wakely
ff0b7e883d Fix breakage due to removing __gnu_cxx::size_t declaration
Restore the using-declaration but locally in the source file, not in the
header.

	* src/c++98/bitmap_allocator.cc: Add using-declaration for size_t.

From-SVN: r271812
2019-05-31 14:59:19 +01:00
Nathan Sidwell
ca3edeaed6 [C++PATCH] Lambda names are anonymous
https://gcc.gnu.org/ml/gcc-patches/2019-05/msg02126.html
	* cp-tree.h (IDENTIFIER_LAMBDA_P): New.
	(TYPE_ANON_P): New.
	(LAMBDA_TYPE_P, TYPE_UNNAMED_P):  Likewise.
	(LAMBDANAME_PREFIX, LAMBDANAME_FORMAT): Delete.
	(make_lambda_name): Don't declare.
	* error.c (dump_aggr_type): Check for lambdas before other
	anonymous names.
	* lambda.c (begin_lambda_type): Use make_anon_name.
	* cp-lang.c (cxx_dwarf_name): Lambda names smell anonymous.
	* mangle.c (write_local_name): Likewise.
	* name-lookup.c (lambda_cnt, make_lambda_name): Delete.

From-SVN: r271811
2019-05-31 13:25:46 +00:00
Bill Schmidt
929c046d57 cpu-future.c: Require powerpc_future_ok.
2019-05-31  Bill Schmidt  <wschmidt@linux.ibm.com>
	    Michael Meissner  <meissner@linux.ibm.com>

	* gcc.target/powerpc/cpu-future.c: Require powerpc_future_ok.
	* gcc.target/powerpc/localentry-1.c: Likewise.
	* gcc.target/powerpc/localentry-direct-1.c: Likewise.
	* gcc.target/powerpc/notoc-direct-1.c: Likewise.
	* gcc.target/powerpc/pcrel-sibcall-1.c: Likewise.
	* lib/target-supports.exp (check_powerpc_future_hw_available): New.
	(check_effective_target_powerpc_future_ok): New.


Co-Authored-By: Michael Meissner <meissner@linux.ibm.com>

From-SVN: r271810
2019-05-31 12:22:52 +00:00
Jonathan Wakely
3228289e1e PR libstdc++/90682 allow set_terminate(0) and set_unexpected(0)
Make these functions restore the default handlers when passed a null
pointer. This is consistent with std::pmr::set_default_resource(0), and
also matches the current behaviour of libc++.

In order to avoid duplicating the preprocessor condition from
eh_term_handler.cc more that into a new eh_term_handler.h header and
define a macro that can be used in both eh_term_handler.cc and
eh_terminate.cc.

	PR libstdc++/90682
	* libsupc++/eh_term_handler.cc: Include eh_term_handler.h to get
	definition of _GLIBCXX_DEFAULT_TERM_HANDLER.
	* libsupc++/eh_term_handler.h: New header defining
	_GLIBCXX_DEFAULT_TERM_HANDLER.
	* libsupc++/eh_terminate.cc: Include eh_term_handler.h.
	(set_terminate): Restore default handler when argument is null.
	(set_unexpected): Likewise.
	* testsuite/18_support/set_terminate.cc: New test.
	* testsuite/18_support/set_unexpected.cc: New test.

From-SVN: r271808
2019-05-31 11:35:11 +01:00
Jonathan Wakely
3263fb9c6b Remove using-declarations that add std names to __gnu_cxx
These using-declarations appear to have been added for simplicity when
moving the non-standard extensions from namespace std to namespace
__gnu_cxx. Dumping all these names into namespace __gnu_cxx allows
unportable uses like __gnu_cxx::size_t and __gnu_cxx::pair, which serve
no useful purpose.

This patch removes most of the using-declarations from namespace scope,
then either qualifies names as needed or adds using-declarations at
block scope or typedefs at class scope.

	* include/backward/hashtable.h (size_t, ptrdiff_t)
	(forward_iterator_tag, input_iterator_tag, _Construct, _Destroy)
	(distance, vector, pair, __iterator_category): Remove
	using-declarations that add these names to namespace __gnu_cxx.
	* include/ext/bitmap_allocator.h (size_t, ptrdiff_t): Likewise.
	* include/ext/debug_allocator.h (size_t): Likewise.
	* include/ext/functional (size_t, unary_function, binary_function)
	(mem_fun1_t, const_mem_fun1_t, mem_fun1_ref_t, const_mem_fun1_ref_t):
	Likewise.
	* include/ext/malloc_allocator.h (size_t, ptrdiff_t): Likewise.
	* include/ext/memory (ptrdiff_t, pair, __iterator_category): Likewise.
	* include/ext/mt_allocator.h (size_t, ptrdiff_t): Likewise.
	* include/ext/new_allocator.h (size_t, ptrdiff_t): Likewise.
	* include/ext/numeric (iota): Fix outdated comment.
	* include/ext/pool_allocator.h (size_t, ptrdiff_t): Likewise.
	* include/ext/rb_tree (_Rb_tree, allocator): Likewise.
	* include/ext/rope (size_t, ptrdiff_t, allocator, _Destroy): Likewise.
	* include/ext/ropeimpl.h (size_t, printf, basic_ostream)
	(__throw_length_error, _Destroy, std::__uninitialized_fill_n_a):
	Likewise.
	* include/ext/slist (size_t, ptrdiff_t, _Construct, _Destroy)
	(allocator, __true_type, __false_type): Likewise.

From-SVN: r271807
2019-05-31 11:35:07 +01:00
Antony Polukhin
608a080c3f PR libstdc++/71579 assert that type traits are not misused with incomplete types
This patch adds static asserts for type traits misuse with incomplete
classes and unions. This gives a nice readable error message instead
of an UB and odr-violations.

Some features of the patch:
* each type trait has it's own static_assert inside. This gives better
diagnostics than the approach with putting the assert into a helper
structure and using it in each trait.
* the result of completeness check is not memorized by the compiler.
This gives no false positive after the first failed check.
* some of the compiler builtins already implement the check. But not
all of them! So the asserts are in all the type_traits that may
benefit from the check. This also makes the behavior of libstdc++ more
consistent across different (non GCC) compilers.
* std::is_base_of does not have the assert as it works well in many
cases with incomplete types

2019-05-31  Antony Polukhin  <antoshkka@gmail.com>

	PR libstdc++/71579
	* include/std/type_traits __type_identity, __is_complete_or_unbounded):
	New helpers for checking preconditions in traits.
	(is_trivial, is_trivially_copyable, is_standard_layout, is_pod)
	(is_literal_type, is_empty, is_polymorphic, is_final, is_abstract)
	(is_destructible, is_nothrow_destructible, is_constructible)
	(is_default_constructible, is_copy_constructible)
	(is_move_constructible, is_nothrow_default_constructible)
	(is_nothrow_constructible, is_nothrow_copy_constructible)
	(is_nothrow_move_constructible, is_copy_assignable, is_move_assignable)
	(is_nothrow_assignable, is_nothrow_copy_assignable)
	(is_nothrow_move_assignable, is_trivially_constructible)
	(is_trivially_copy_constructible, is_trivially_move_constructible)
	is_trivially_assignable, is_trivially_copy_assignable)
	(is_trivially_move_assignable, is_trivially_destructible)
	(alignment_of, is_swappable, is_nothrow_swappable, is_invocable)
	(is_invocable_r, is_nothrow_invocable)
	(has_unique_object_representations, is_aggregate): Add static_asserts
	to make sure that type traits are not misused with incomplete types.
	(__is_constructible_impl, __is_nothrow_default_constructible_impl)
	(__is_nothrow_constructible_impl, __is_nothrow_assignable_impl): New
	base characteristics without assertions that can be reused in other
	traits.
	* testsuite/20_util/is_complete_or_unbounded/memoization.cc: New test.
	* testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc: New
	test.
	* testsuite/20_util/is_complete_or_unbounded/value.cc: New test.
	* testsuite/20_util/is_abstract/incomplete_neg.cc: New test.
	* testsuite/20_util/is_aggregate/incomplete_neg.cc: New test.
	* testsuite/20_util/is_class/value.cc: Check incomplete type.
	* testsuite/20_util/is_function/value.cc: Likewise.
	* testsuite/20_util/is_move_constructible/incomplete_neg.cc: New test.
	* testsuite/20_util/is_nothrow_move_assignable/incomplete_neg.cc: New
	test.
	* testsuite/20_util/is_polymorphic/incomplete_neg.cc: New test.
	* testsuite/20_util/is_reference/value.cc: Check incomplete types.
	* testsuite/20_util/is_unbounded_array/value.cc: Likewise.
	* testsuite/20_util/is_union/value.cc: Likewise.
	* testsuite/20_util/is_void/value.cc: Likewise.
	* testsuite/util/testsuite_tr1.h: Add incomplete union type.

From-SVN: r271806
2019-05-31 11:35:03 +01:00
Jonathan Wakely
aeedf07705 Fix random_device to work with COW strings again
Instead of duplicating the initialization functions that take string,
add a new member taking a raw pointer that can be used to convert the
constructor token from the old string to the new.

Also fix "mt19337" typos in a testcase.

	* include/bits/random.h (random_device::_M_init(const char*, size_t)):
	Add new private member function.
	* src/c++11/cow-string-inst.cc (random_device::_M_init(const string&))
	(random_device::_M_init_pretr1(const string&)): Call new private
	member with string data.
	* src/c++11/random.cc (random_device::_M_init(const char*, size_t)):
	Define.
	* testsuite/26_numerics/random/random_device/cons/default-cow.cc: New
	test using COW strings.
	* testsuite/26_numerics/random/random_device/cons/default.cc: Generate
	a value from the device.
	* testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
	Fix typo in token string.

From-SVN: r271805
2019-05-31 11:34:53 +01:00
Martin Liska
decc53df4e Add pretty print for const_tree.
2019-05-31  Martin Liska  <mliska@suse.cz>

	* gdbhooks.py: Add const_tree to TreePrinter.

From-SVN: r271804
2019-05-31 10:33:14 +00:00
Thomas De Schampheleire
d1137c020a re PR debug/86964 (Too many debug symbols included, especially for extern globals)
2019-05-31  Thomas De Schampheleire  <thomas.de_schampheleire@nokia.com>

	PR debug/86964
	* common.opt (feliminate-unused-debug-symbols): Enable by default.
	* doc/invoke.texi (Debugging Options): Document new default of
	-feliminate-unused-debug-symbols and remove restriction to 'stabs'.

	* g++.dg/debug/dwarf2/fesd-any.C: Use
	-fno-eliminate-unused-debug-symbols.
	* g++.dg/debug/dwarf2/fesd-baseonly.C: Likewise.
	* g++.dg/debug/dwarf2/fesd-none.C: Likewise.
	* g++.dg/debug/dwarf2/fesd-reduced.C: Likewise.
	* g++.dg/debug/dwarf2/fesd-sys.C: Likewise.
	* g++.dg/debug/dwarf2/inline-var-1.C: Likewise.
	* g++.dg/debug/enum-2.C: Likewise.
	* gcc.dg/debug/dwarf2/fesd-any.c: Likewise.
	* gcc.dg/debug/dwarf2/fesd-baseonly.c: Likewise.
	* gcc.dg/debug/dwarf2/fesd-none.c: Likewise.
	* gcc.dg/debug/dwarf2/fesd-reduced.c: Likewise.
	* gcc.dg/debug/dwarf2/fesd-sys.c: Likewise.

From-SVN: r271803
2019-05-31 08:22:14 +00:00
Jakub Jelinek
6992d6fbf2 re PR tree-optimization/90671 (ICE on valid code at -Os and above with -g enabled in gsi_split_seq_after, at gimple-iterator.c:345)
PR tree-optimization/90671
	* tree-ssa-threadupdate.c (ssa_create_duplicates): If
	template_block used to be empty on the first call, don't use
	gsi_split_seq_after and gsi_insert_seq_after, but remember whole
	seq with bb_seq and set it with set_bb_seq.

	* gcc.dg/torture/pr90671.c: New test.

From-SVN: r271802
2019-05-31 09:53:48 +02:00
Iain Sandoe
0eee8eaa83 c++, testsuite - require alias support for a test.
The test for pr84497 uses a facility that requires alias support from
the target, and therefore fails on targets without.  Add a suitable 
dg-require statement.

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

	* g++.dg/cpp0x/pr84497.C: Require alias support.

From-SVN: r271801
2019-05-31 07:23:14 +00:00
Iain Sandoe
4ef2ef0c03 Darwin, x86, testsuite - adjust tests for Darwin's align syntax.
Darwin has a .align taking a power of 2 by default, so that some
tests expecting a byte count are failing, fixed thus.

gcc/testsuite/

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

	* gcc.target/i386/falign-functions-3.c: Adjust align syntax
	and label for Darwin.
	* gcc.target/i386/attr-aligned-2.c: Adjust align syntax for
	Darwin.

From-SVN: r271800
2019-05-31 07:17:11 +00:00
Iain Sandoe
eb11a55268 Darwin, x86 - We have .p2align, so declare its use.
.p2align support is present in all x86 assemblers on released
Darwin systems.

gcc/

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

	* config/i386/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New.

From-SVN: r271799
2019-05-31 07:13:46 +00:00
Bill Schmidt
a1842c37af predicates.md (pcrel_address): New define_predicate.
2019-05-30  Bill Schmidt  <wschmidt@linux.ibm.com>
	    Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/predicates.md (pcrel_address): New define_predicate.
	(prefixed_mem_operand): Likewise.
	(non_prefixed_mem_operand): Likewise.
	* config/rs6000/rs6000-protos.h (rs6000_prefixed_address): New
	prototype.
	* config/rs6000/rs6000.c (print_operand_address): Handle
	PC-relative addresses.
	(mode_supports_prefixed_address_p): New function.
	(rs6000_prefixed_address): New function.
	* config/rs6000/rs6000.h (SYMBOL_FLAG_PCREL): New #define.
	(SYMBOL_REF_PCREL_P): Likewise.


Co-Authored-By: Michael Meissner <meissner@linux.ibm.com>

From-SVN: r271798
2019-05-31 00:38:35 +00:00
Joseph Myers
47a665af3b * fi.po, sv.po: Update.
From-SVN: r271796
2019-05-31 01:28:14 +01:00
GCC Administrator
17c5c4c70b Daily bump.
From-SVN: r271795
2019-05-31 00:16:16 +00:00
Jakub Jelinek
8221c30b09 gimplify.c (enum gimplify_omp_var_data): Add GOVD_CONDTEMP.
* gimplify.c (enum gimplify_omp_var_data): Add GOVD_CONDTEMP.
	(gimplify_adjust_omp_clauses_1): Handle GOVD_CONDTEMP.
	(gimplify_omp_for): If worksharing loop with lastprivate conditional
	is nested inside of parallel region, add _condtemp_ clause to both.
	* tree-nested.c (convert_nonlocal_omp_clauses,
	convert_local_omp_clauses): Ignore OMP_CLAUSE__CONDTEMP_ instead of
	assertion failure.
	* omp-general.h (struct omp_for_data): Add have_pointer_condtemp
	member.
	* omp-general.c (omp_extract_for_data): Compute it.
	* omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE__CONDTEMP_.
	(lower_rec_input_clauses): Likewise.
	(lower_lastprivate_conditional_clauses): If OMP_CLAUSE__CONDTEMP_
	clause is already present, just add one further one after it.
	(lower_lastprivate_clauses): Handle cond_ptr with array type.
	(lower_send_shared_vars): Clear _condtemp_ vars.
	(lower_omp_1) <case GIMPLE_ASSIGN>: Handle target data like critical
	or section or taskgroup.
	* omp-expand.c (determine_parallel_type): Disallow combining only if
	first OMP_CLAUSE__CONDTEMP_ has pointer type.  Disallow combining
	of parallel sections if OMP_CLAUSE__CONDTEMP_ is present.
	(expand_omp_for_generic, expand_omp_for_static_nochunk,
	expand_omp_for_static_chunk, expand_omp_for): Use
	fd->have_pointer_condtemp instead of fd->lastprivate_conditional to
	determine if a special set of API routines are needed and if condtemp
	needs to be initialized, while always initialize cond_var if
	fd->lastprivate_conditional is non-zero.

From-SVN: r271791
2019-05-30 23:19:39 +02:00
Jim Wilson
00a0e1f5a3 Fix RISC-V build failure for go language.
gcc/go/
	* go-gcc.cc (Gcc_backend::Gcc_backend): Add BUILT_IN_ATOMIC_FETCH_AND_1
	and BUILT_IN_ATOMIC_FETCH_OR_1.

From-SVN: r271790
2019-05-30 13:47:12 -07:00
Nina Dinka Ranns
046af809f3 LWG2788 basic_string spurious use of a default constructible allocator
This only change the cxx11 basic_string, because COW strings don't
correctly propagate allocators anyway.

2019-05-30  Nina Dinka Ranns  <dinka.ranns@gmail.com>

	LWG2788 basic_string spurious use of a default constructible allocator
	* include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
	(basic_string::_M_replace_dispatch): Construct temporary string with
	the current allocator.
	* testsuite/21_strings/basic_string/allocator/char/lwg2788.cc: New.
	* testsuite/21_strings/basic_string/allocator/wchar_t/lwg2788.cc: New.

From-SVN: r271789
2019-05-30 20:48:48 +01:00
Marek Polacek
608f8e107d * cp-tree.h (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Fix a typo.
From-SVN: r271788
2019-05-30 18:40:17 +00:00
Bill Schmidt
ed383d79ee constraints.md (eI): New constraint.
2019-05-30  Bill Schmidt  <wschmidt@linux.ibm.com>
	    Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/constraints.md (eI): New constraint.
	* config/rs6000/predicates.md (cint34_operand): New predicate.
	* config/rs6000/rs6000.h (SIGNED_16BIT_OFFSET_P): New #define.
	(SIGNED_34BIT_OFFSET_P): Likewise.
	* doc/md.texi (eI): Document constraint.


Co-Authored-By: Michael Meissner <meissner@linux.ibm.com>

From-SVN: r271787
2019-05-30 18:13:06 +00:00
Thomas Koenig
93f096795b gfc-internals.texi (Translating to GENERIC): New chapter.
2019-05-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

    * gfc-internals.texi (Translating to GENERIC): New chapter.

From-SVN: r271786
2019-05-30 17:49:31 +00:00
Sylvia Taylor
3db85990db [aarch64]: add support for fabd in sve
This patch adds support in SVE to combine:
- fsub and fabs into fabd

fsub    z0.s, z0.s, z1.s
fabs    z0.s, p1/m, z0.s
---
fabd    z0.s, p1/m, z0.s, z1.s

2019-05-30  Sylvia Taylor  <sylvia.taylor@arm.com>

gcc/
	* config/aarch64/aarch64-sve.md (*fabd<mode>3): New.

gcc/testsuite/
	* gcc.target/aarch64/sve/fabd_1.c: New.

From-SVN: r271785
2019-05-30 17:36:52 +00:00
Ian Lance Taylor
c9c41a6b1b compiler: intrinsify sync/atomic functions
Let the Go frontend recognize sync/atomic functions and turn them
    into intrinsics.
    
    Also make sure not to intrinsify calls in go or defer statements.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/178937

From-SVN: r271784
2019-05-30 17:26:46 +00:00
Jakub Jelinek
d05b516e53 re PR c++/90598 (Return type of explicit destructor call wrong)
PR c++/90598
	* tree.c (lvalue_kind): Return clk_none for expressions with
	with VOID_TYPE_P.

	* g++.dg/cpp0x/pr90598.C: New test.

From-SVN: r271783
2019-05-30 19:23:32 +02:00
Jonathan Wakely
01b3b9e39f Update libstdc++ documentation for Support and Diagnostics clauses
* doc/xml/manual/diagnostics.xml: Update list of headers that define
	exception classes.
	* doc/xml/manual/support.xml: Rewrite advice around NULL. Rewrite
	section about new/delete overloads. Improve section on verbose
	terminate handler.
	* doc/html/*: Regenerate.

From-SVN: r271782
2019-05-30 16:47:32 +01:00
Bill Schmidt
30f78ec756 rs6000-cpus.def (OTHER_FUSION_MASKS): New #define.
2019-05-30  Bill Schmidt  <wschmidt@linux.ibm.com>
	    Michael Meissner  <meissner@linux.ibm.com>

	* rs6000-cpus.def (OTHER_FUSION_MASKS): New #define.
	(ISA_3_0_MASKS_SERVER): Mask off OTHER_FUSION_MASKS.
	(ISA_3_0_MASKS_IEEE): Remove OPTION_MASK_DIRECT_MOVE.
	(ISA_FUTURE_MASKS_SERVER): Add OPTION_MASK_PREFIXED_ADDR.
	(OTHER_FUTURE_MASKS): Likewise.
	(POWERPC_MASKS): Likewise.
	* rs6000.c (rs6000_option_override_internal): Error if -mpcrel is
	specified without -mprefixed-addr or -mcpu=future.  Error if
	-mprefixed-addr is specified without -mcpu=future.
	(rs6000_opt_masks): Add entry for prefixed-addr.
	* rs6000.opt (mprefixed-addr): New option.


Co-Authored-By: Michael Meissner <meissner@linux.ibm.com>

From-SVN: r271781
2019-05-30 15:17:40 +00:00
Sam Tebbs
0e2e15abd0 [PATCH][GCC][AARCH64] Fix libstdc++ build failure after r271735
gcc/ChangeLog
	* aarch64/aarch64.c (aarch64_post_cfi_startproc): Add
	cfun->is_thunk check.

From-SVN: r271780
2019-05-30 12:26:14 +00:00
Marek Polacek
d4ecfa565c * lang.opt (ftail-call-workaround): Fix a typo.
From-SVN: r271777
2019-05-30 11:44:40 +00:00
Jonathan Wakely
62971f4644 Update C++20 status table
The status of P1353R0 was "Partial" because we don't define the
__cpp_lib_three_way_comparison macro, but that's because we don't
support the feature. So the paper can be marked as done.

	* doc/xml/manual/status_cxx2020.xml: Add feature-test macro for
	P0811R3. Change status of P1353R0.
	* doc/html/*: Regenerate.

From-SVN: r271774
2019-05-30 11:31:54 +01:00
Jonathan Wakely
37ad0fc942 Update documentation of implementation-defined library features
* doc/xml/manual/status_cxx2011.xml: Use <variablelist> for
	documentation of implementation-defined types for [thread.req.native].
	* doc/xml/manual/status_cxx2017.xml: Update documentation of
	implementation-defined strings for [variant.bad.access]. Fix typo in
	documentation of implementation-defined support for [fs.conform.9945].
	* doc/html/*: Regenerate.

From-SVN: r271773
2019-05-30 11:14:06 +01:00
Jakub Jelinek
02fac2442e tree-predcom.c (is_inv_store_elimination_chain): Fix a typo - lenght to length.
* tree-predcom.c (is_inv_store_elimination_chain): Fix a typo - lenght
	to length.

	* lang.opt (ftail-call-workaround=): Fix a typo - lenghts to lengths.

From-SVN: r271770
2019-05-30 11:33:20 +02:00
Rainer Orth
a7155c2e0b Generalize getconf _NPROCESSORS_ONLN
libgomp:
	* configure.ac: Call AX_COUNT_CPUS.
	Substitute CPU_COUNT.
	* testsuite/Makefile.am (check-am): Use CPU_COUNT as processor
	count fallback.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* Makefile.in, testsuite/Makefile.in: Regenerate.

	config:
	* ax_count_cpus.m4: New file.

From-SVN: r271769
2019-05-30 09:06:48 +00:00
Iain Sandoe
b8148c42da testsuite,x86 - require native TLS for two tests that use it.
gcc/testsuite/

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

	* gcc.target/i386/pr86257.c: Require native TLS support.
	* gcc.target/i386/stack-prot-sym.c: Likewise.

From-SVN: r271768
2019-05-30 08:43:19 +00:00
Martin Liska
7c83619cd6 gdbinit: add a new command and fix one
2019-05-30  Martin Liska  <mliska@suse.cz>

	* gdbinit.in: Fix 'ptc' command.  Add trt
	that prints TREE_TYPE($).

From-SVN: r271763
2019-05-30 07:50:39 +00:00
Paolo Carlini
7797a62244 decl.c (grokdeclarator): Use declarator->id_loc in five error_at calls.
/cp
2019-05-31  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokdeclarator): Use declarator->id_loc in five
	error_at calls.

/testsuite
2019-05-31  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/cpp0x/alias-decl-18.C: Test location too.
	* g++.dg/cpp0x/udlit-nofunc-neg.C: Likewise.
	* g++.dg/parse/crash59.C: Likewise.
	* g++.dg/parse/error38.C: Likewise.
	* g++.dg/parse/error39.C: Likewise.
	* g++.dg/template/crash31.C: Likewise.
	* g++.dg/template/operator8.C: Likewise.
	* g++.dg/template/operator9.C: Likewise.

From-SVN: r271762
2019-05-30 07:09:41 +00:00