1. 31 May, 2019 29 commits
    • tree.h (OMP_CLAUSE__CONDTEMP__ITER): Define. · e7393c89
      	* 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
      Jakub Jelinek committed
    • omp-low.c (lower_rec_simd_input_clauses): Set TREE_THIS_NOTRAP on ivar and lvar. · 1ce8fc63
      	* 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
      Jakub Jelinek committed
    • runtime: drop unused C type reflection code · 2099d446
          
          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
      Ian Lance Taylor committed
    • compiler: optimize append of make · 6303331c
          
          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
      Ian Lance Taylor committed
    • compiler: handle int-to-string conversion with large integer constant · 2b5360d7
          
          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
      Ian Lance Taylor committed
    • re PR c/43673 (Incorrect warning: use of 'D' length modifier with 'a' type character) · f2c2c4e3
      	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
      Xiong Hu Luo committed
    • cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__ is non-zero. · 2a1c064a
      	* cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__
      	is non-zero.
      
      From-SVN: r271819
      Michael Forney committed
    • runtime: implement cheaper context switch on Linux/AMD64 · 4d12cf3c
          
          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
      Ian Lance Taylor committed
    • apply unary op to both sides of (vec_cond x cst1 cst2) · 34a13a52
      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
      Marc Glisse committed
    • Simplify more EXACT_DIV_EXPR comparisons · 9cf60d3b
      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
      Marc Glisse committed
    • New .md construct: define_insn_and_rewrite · f4fde1b3
      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
      Richard Sandiford committed
    • Add noexcept to tuple<> and simplify tuple<T1,T2> noexcept-specifiers · b1bb4869
      	* 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
      Jonathan Wakely committed
    • tree-ssa-alias.c (type_has_components_p): New function. · 1facd627
      
      	* tree-ssa-alias.c (type_has_components_p): New function.
      	(aliasing_component_refs_p): Use it.
      
      From-SVN: r271813
      Jan Hubicka committed
    • Fix breakage due to removing __gnu_cxx::size_t declaration · ff0b7e88
      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
      Jonathan Wakely committed
    • [C++PATCH] Lambda names are anonymous · ca3edeae
      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
      Nathan Sidwell committed
    • cpu-future.c: Require powerpc_future_ok. · 929c046d
      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
      Bill Schmidt committed
    • PR libstdc++/90682 allow set_terminate(0) and set_unexpected(0) · 3228289e
      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
      Jonathan Wakely committed
    • Remove using-declarations that add std names to __gnu_cxx · 3263fb9c
      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
      Jonathan Wakely committed
    • PR libstdc++/71579 assert that type traits are not misused with incomplete types · 608a080c
      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
      Antony Polukhin committed
    • Fix random_device to work with COW strings again · aeedf077
      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
      Jonathan Wakely committed
    • Add pretty print for const_tree. · decc53df
      2019-05-31  Martin Liska  <mliska@suse.cz>
      
      	* gdbhooks.py: Add const_tree to TreePrinter.
      
      From-SVN: r271804
      Martin Liska committed
    • re PR debug/86964 (Too many debug symbols included, especially for extern globals) · d1137c02
      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
      Thomas De Schampheleire committed
    • re PR tree-optimization/90671 (ICE on valid code at -Os and above with -g… · 6992d6fb
      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
      Jakub Jelinek committed
    • c++, testsuite - require alias support for a test. · 0eee8eaa
      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
      Iain Sandoe committed
    • Darwin, x86, testsuite - adjust tests for Darwin's align syntax. · 4ef2ef0c
      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
      Iain Sandoe committed
    • Darwin, x86 - We have .p2align, so declare its use. · eb11a552
      .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
      Iain Sandoe committed
    • predicates.md (pcrel_address): New define_predicate. · a1842c37
      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
      Bill Schmidt committed
    • * fi.po, sv.po: Update. · 47a665af
      From-SVN: r271796
      Joseph Myers committed
    • Daily bump. · 17c5c4c7
      From-SVN: r271795
      GCC Administrator committed
  2. 30 May, 2019 11 commits
    • gimplify.c (enum gimplify_omp_var_data): Add GOVD_CONDTEMP. · 8221c30b
      	* 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
      Jakub Jelinek committed
    • Fix RISC-V build failure for go language. · 00a0e1f5
      	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
      Jim Wilson committed
    • LWG2788 basic_string spurious use of a default constructible allocator · 046af809
      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
      Nina Dinka Ranns committed
    • * cp-tree.h (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Fix a typo. · 608f8e10
      From-SVN: r271788
      Marek Polacek committed
    • constraints.md (eI): New constraint. · ed383d79
      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
      Bill Schmidt committed
    • gfc-internals.texi (Translating to GENERIC): New chapter. · 93f09679
      2019-05-30  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
          * gfc-internals.texi (Translating to GENERIC): New chapter.
      
      From-SVN: r271786
      Thomas Koenig committed
    • [aarch64]: add support for fabd in sve · 3db85990
      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
      Sylvia Taylor committed
    • compiler: intrinsify sync/atomic functions · c9c41a6b
          
          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
      Ian Lance Taylor committed
    • re PR c++/90598 (Return type of explicit destructor call wrong) · d05b516e
      	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
      Jakub Jelinek committed
    • Update libstdc++ documentation for Support and Diagnostics clauses · 01b3b9e3
      	* 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
      Jonathan Wakely committed
    • rs6000-cpus.def (OTHER_FUSION_MASKS): New #define. · 30f78ec7
      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
      Bill Schmidt committed