Commit Graph

187518 Commits

Author SHA1 Message Date
Tobias Burnus f0fca213bc Fortran: Add OpenMP's nothing directive support (con't)
Fix directory to enable -fopenmp processing.

gcc/testsuite/
	PR testsuite/101963
	* gfortran.dg/nothing-1.f90: Moved to ...
	* gfortran.dg/gomp/nothing-1.f90: ... here.
	* gfortran.dg/nothing-2.f90: Moved to ...
	* gfortran.dg/gomp/nothing-2.f90: ... here;
	avoid $ issue in $OMP in dg-error.
2021-08-18 21:54:01 +02:00
Iain Sandoe 08defd9c4e Darwin, jit: Fix build [PR100613].
The generic unix build is not completely suitable for Darwin
platforms:

 * It is a convention to encode the library versioning in the
   binary and to have only one level of symlink for the installed
   files. This needs to be applied to the installation too.
 * The library needs to be built with its correct install name
   so that two-level library naming works.
 * The extension for shared libraries should be .dylib

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

PR jit/100613 - libgccjit should produce dylib on macOS

	PR jit/100613

gcc/jit/ChangeLog:

	* Make-lang.in: Provide clauses for Darwin hosts.
2021-08-18 19:51:48 +01:00
Iain Sandoe d39367fa82 configure: Allow host fragments to react to --enable-host-shared.
This makes the host_shared value available to host makefile
fragments.

It uses this to adjust Darwin's mdynamic-no-pic in the case that
shared host resources are required.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

ChangeLog:

	* Makefile.in: Regenerate.
	* Makefile.tpl: Make the state of the configured host
	shared flag available to makefile fragements.

config/ChangeLog:

	* mh-darwin: Require a non-shared host configuration to
	enable  mdynamic-no-pic where that is supported.
2021-08-18 19:46:32 +01:00
Iain Sandoe d2aa4e0b3b Objective-C: fix crash with -fobjc-nilcheck
When -fobjc-nilcheck is enabled, messages that result in a struct type should
yield a zero-initialized struct when sent to nil.  Currently, the frontend
crashes when it encounters this situation.  This patch fixes the crash by
generating the tree for the `{}` initializer.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
Co-authored-by: Matt Jacobson  <mhjacobson@me.com>

	PR objc/101666

gcc/objc/ChangeLog:

	* objc-act.c (objc_build_constructor): Handle empty constructor
	lists.
	* objc-next-runtime-abi-02.c (build_v2_objc_method_fixup_call):
	Handle nil receivers.
	(build_v2_build_objc_method_call): Likewise.

gcc/testsuite/ChangeLog:

	* obj-c++.dg/pr101666-0.mm: New test.
	* obj-c++.dg/pr101666-1.mm: New test.
	* obj-c++.dg/pr101666.inc: New.
	* objc.dg/pr101666-0.m: New test.
	* objc.dg/pr101666-1.m: New test.
	* objc.dg/pr101666.inc: New.
2021-08-18 19:41:43 +01:00
Iain Sandoe 220c410162 libiberty, Darwin : Fix simple-object LTO table for cross-endian case.
We encapsulate streamed IR in three special sections with a table
that describes their entries.  The table is expected to be written
with native endianness for the target, but for cross-endian cross-
compilation the swapping was omitted.  Fixed thus.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

libiberty/ChangeLog:

	* simple-object-mach-o.c (simple_object_mach_o_write_segment):
	Arrange to swap the LTO index tables where needed.
2021-08-18 19:33:49 +01:00
Iain Sandoe 15bdae0166 Darwin: Handle the -rpath command line option.
This handles the command line '-rpath' option by passing it through
to the static linker.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

gcc/ChangeLog:

	* config.gcc: Include rpath.opt for Darwin.
	* config/darwin.h (DRIVER_SELF_SPECS): Handle -rpath.
2021-08-18 19:28:20 +01:00
Ankur Saini 1b34248527 analyzer: detect and analyze virtual function calls
2021-08-15  Ankur Saini  <arsenic@sourceware.org>

gcc/analyzer/ChangeLog:
	PR analyzer/97114
	* region-model.cc (region_model::get_rvalue_1): Add case for
	OBJ_TYPE_REF.

gcc/testsuite/ChangeLog:
	PR analyzer/97114
	* g++.dg/analyzer/vfunc-2.C: New test.
	* g++.dg/analyzer/vfunc-3.C: New test.
	* g++.dg/analyzer/vfunc-4.C: New test.
	* g++.dg/analyzer/vfunc-5.C: New test.
2021-08-18 23:10:31 +05:30
Ankur Saini aef703cf98 analyzer: detect and analyze calls via function pointer
2021-07-29  Ankur Saini  <arsenic@sourceware.org>

gcc/analyzer/ChangeLog:
	PR analyzer/100546
	* analysis-plan.cc (analysis_plan::use_summary_p): Don't use call
	summaries if there is no callgraph edge
	* checker-path.cc (call_event::call_event): Handle calls events that
	are not represented by a supergraph call edge
	(return_event::return_event): Likewise.
	(call_event::get_desc): Work with new call_event structure.
	(return_event::get_desc): Likeise.
	* checker-path.h (call_event::m_src_snode): New field.
	(call_event::m_dest_snode): New field.
	(return_event::m_src_snode): New field.
	(return_event::m_dest_snode): New field.
	* diagnostic-manager.cc
	(diagnostic_manager::prune_for_sm_diagnostic)<case EK_CALL_EDGE>:
	Refactor to work with edges without callgraph edge.
	(diagnostic_manager::prune_for_sm_diagnostic)<case EK_RETURN_EDGE>:
	Likewise.
	* engine.cc (dynamic_call_info_t::update_model): New function.
	(dynamic_call_info_t::add_events_to_path): New function.
	(exploded_graph::create_dynamic_call): New function.
	(exploded_graph::process_node): Work with dynamically discovered calls.
	* exploded-graph.h (class dynamic_call_info_t): New class.
	(exploded_graph::create_dynamic_call): New decl.
	* program-point.cc (program_point::push_to_call_stack): New function.
	(program_point::pop_from_call_stack): New function.
	* program-point.h (program_point::push_to_call_stack): New decl.
	(program_point::pop_from_call_stack): New decl.
	* program-state.cc (program_state::push_call): New function.
	(program_state::returning_call): New function.
	* program-state.h (program_state::push_call): New decl.
	(program_state::returning_call): New decl.
	* region-model.cc (region_model::update_for_gcall) New function.
	(region_model::update_for_return_gcall): New function.
	(egion_model::update_for_call_superedge): Get the underlying gcall and
	update for gcall.
	(region_model::update_for_return_superedge): Likewise.
	* region-model.h (region_model::update_for_gcall): New decl.
	(region_model::update_for_return_gcall): New decl.
	* state-purge.cc (state_purge_per_ssa_name::process_point): Update to
	work with calls without underlying cgraph edge.
	* supergraph.cc (supergraph::supergraph) Split snodes at every callsite.
	* supergraph.h (supernode::get_returning_call) New accessor.

gcc/testsuite/ChangeLog:
	PR analyzer/100546
	* gcc.dg/analyzer/function-ptr-4.c: New test.
	* gcc.dg/analyzer/pr100546.c: New test.
2021-08-18 23:10:31 +05:30
Thomas Schwinge bb04a03c6f Make 'gcc/hash-map-tests.c:test_map_of_type_with_ctor_and_dtor_expand' work on 32-bit architectures [PR101959]
Bug fix for recent commit e4f16e9f35
"Add more self-tests for 'hash_map' with Value type with non-trivial
constructor/destructor".

	gcc/
	PR bootstrap/101959
	* hash-map-tests.c (test_map_of_type_with_ctor_and_dtor_expand):
	Use an 'int_hash'.
2021-08-18 18:34:31 +02:00
Jonathan Wright 640df4ef81 aarch64: Fix float <-> int errors in vld4[q]_lane intrinsics
A previous commit "aarch64: Remove macros for vld4[q]_lane Neon
intrinsics" introduced some float <-> int type conversion errors.
This patch fixes those errors.

gcc/ChangeLog:

2021-08-18  Jonathan Wright  <jonathan.wright@arm.com>

	* config/aarch64/arm_neon.h (vld3_lane_f64): Use float RTL
	pattern and type cast.
	(vld4_lane_f32): Use float RTL pattern.
	(vld4q_lane_f64): Use float type cast.
2021-08-18 16:07:38 +01:00
Jonathan Wakely 4fb471afc4 libstdc++: Improve doxygen documentation for std::unique_ptr
Add more detailed documentation for unique_ptr and related components.

The new alias templates for the _MakeUniq SFINAE helper make the
generated docs look better too.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* include/bits/unique_ptr.h (default_delete): Add @since tag.
	(unique_ptr, unique_ptr<T[]>): Likewise. Improve @brief.
	(make_unique, make_unique_for_overwrite): Likewise. Add @tparam,
	@param, and @returns.
	(_MakeUniq): Move to __detail namespace. Add alias template
	helpers.
2021-08-18 15:13:08 +01:00
Jonathan Wakely 828176ba49 libstdc++: Improve doxygen comments in <bits/stl_function.h>
Add notes about deprecation and modern replacements. Fix bogus
"memory_adaptors" group name. Use markdown for formatting.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* include/bits/stl_function.h: Improve doxygen comments.
2021-08-18 15:07:16 +01:00
Jonathan Wakely aba938d6c3 libstdc++: Enable doxygen processing for C++20 components
Improve grouping, add @since and @deprecated information.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* doc/doxygen/user.cfg.in (PREDEFINED): Enable doxygen
	processing for C++20 components and components that depend on
	compiler features.
	* include/bits/stl_algo.h (random_shuffle): Use @deprecated.
	* include/std/type_traits: Improve doxygen comments for C++20
	traits.
2021-08-18 15:02:31 +01:00
Jonathan Wakely 37620d5751 libstdc++: Simplify n-ary arithmetic promotion traits
The std::complex partial specializations have been unnecessary since
774c3d8647

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* include/ext/type_traits.h (__promote_2, __promote_3)
	(__promote_4): Redfine as alias templates using __promoted_t.
	* include/std/complex (__promote_2): Remove partial
	specializations for std::complex.
2021-08-18 14:26:39 +01:00
Jonathan Wakely de44eee5d5 libstdc++: Minor optimization for min/max/minmax
The debug mode checks for a valid range are redundant when we have an
initializer_list argument, because we know it's a valid range already.
By making std::min(initialier_list<T>) call the internal __min_element
function directly we avoid a function call and skip those checks. The
same can be done for the overload taking a comparison function, and also
for the std::max and std::minmax overloads for initializer_list
arguments.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* include/bits/stl_algo.h (min(initializer_list<T>))
	(min(initializer_list<T>, Compare)): Call __min_element directly to
	avoid redundant debug checks for valid ranges.
	(max(initializer_list<T>), max(initializer_list<T>, Compare)):
	Likewise, for __max_element.
	(minmax(initializer_list<T>), minmax(initializer_list<T>, Compare)):
	Likewise, for __minmax_element.
2021-08-18 14:26:39 +01:00
Jonathan Wakely 085c2f8f0e libstdc++: Fix CTAD for debug sequence containers
This fixes some 23_containers/*/cons/deduction.cc failures seen with
-std=c++17/-D_GLIBCXX_DEBUG, caused by non-immediate errors when
substituting template arguments into an incorrect specialization of the
std::__cxx1998 base class. This happens because the size_type member of
the debug container is _Base_type::size_type, so is non-deducible, and
the deduced types get substituted into _Base_type, triggering the
static_assert that checks the allocator's value_type matches the
container's.

The solution is to make the C(size_type, const T&, const Alloc&)
constructors of the debug sequence containers non-deducible. In order to
make CTAD work again deduction guides that use std::size_t for the first
argument are added.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* include/debug/deque (deque(size_type, const T&, const A&)):
	Prevent class template argument deduction and replace with a
	deduction guide.
	* include/debug/forward_list (forward_list(size_type, const T&, const A&)):
	Likewise.
	* include/debug/list (list(size_type, const T&, const A&)):
	Likewise.
	* include/debug/vector (vector(size_type, const T&, const A&)):
	Likewise.
2021-08-18 14:26:38 +01:00
Jonathan Wakely c883d1dcde libstdc++: Fix vector<bool> printer tests to work in debug mode
This fixes a compilation error in debug mode, due to std::_Bit_reference
not being defined, because it's in namespace std::__cxx1998 instead. We
can refer to it as vector<bool>::reference instead, which always works.

That fixes some compilation errors in debug mode, but the tests fail at
run-time instead because the printers for vector<bool> helpers are only
registered for the std namespace, not std::__cxx1998. That is fixed by
using add_container to register the printers instead of add_version, as
the former registers them in the std and std::__cxx1998 namespaces.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* python/libstdcxx/v6/printers.py (StdBitReferencePrinter): Use
	'std::vector<bool>::reference' as type name, not _Bit_reference.
	(build_libstdcxx_dictionary): Register printers for vector<bool>
	types in debug mode too.
	* testsuite/libstdc++-prettyprinters/simple.cc: Adjust expected
	output for invalid _Bit_reference. Use vector<bool>::reference
	instead of _Bit_reference.
	* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
2021-08-18 14:26:38 +01:00
Tobias Burnus f74433e70a Fortran: Add OpenMP's nothing directive support
Fortran version of commit 5079b7781a

gcc/fortran/ChangeLog:

	* match.h (gfc_match_omp_nothing): New.
	* openmp.c (gfc_match_omp_nothing): New.
	* parse.c (decode_omp_directive): Match 'nothing' directive.

gcc/testsuite/ChangeLog:

	* gfortran.dg/nothing-1.f90: New test.
	* gfortran.dg/nothing-2.f90: New test.
2021-08-18 15:24:22 +02:00
Patrick Palka be4a4fb516 c++: aggregate CTAD and brace elision [PR101344]
Here the problem is ultimately that collect_ctor_idx_types always
recurses into an eligible sub-CONSTRUCTOR regardless of whether the
corresponding pair of braces was elided in the original initializer.
This causes us to reject some completely-braced forms of aggregate
CTAD as in the first testcase below, because collect_ctor_idx_types
effectively assumes that the original initializer is always minimally
braced (and so the aggregate deduction candidate is given a function
type that's incompatible with the original completely-braced initializer).

In order to fix this, collect_ctor_idx_types needs to somehow know the
shape of the original initializer when iterating over the reshaped
initializer.  To that end this patch makes reshape_init flag sub-ctors
that were built to undo brace elision in the original ctor, so that
collect_ctor_idx_types that determine whether to recurse into a sub-ctor
by simply inspecting this flag.

This happens to also fix PR101820, which is about aggregate CTAD using
designated initializers, for much the same reasons.

A curious case is the "intermediately-braced" initialization of 'e3'
(which we reject) in the first testcase below.  It seems to me we're
behaving as specified here (according to [over.match.class.deduct]/1)
because the initializer element x_1={1, 2, 3, 4} corresponds to the
subobject e_1=E::t, hence the type T_1 of the first function parameter
of the aggregate deduction candidate is T(&&)[2][2], but T can't be
deduced from x_1 using this parameter type (as opposed to say T(&&)[4]).

	PR c++/101344
	PR c++/101820

gcc/cp/ChangeLog:

	* cp-tree.h (CONSTRUCTOR_BRACES_ELIDED_P): Define.
	* decl.c (reshape_init_r): Set it.
	* pt.c (collect_ctor_idx_types): Recurse into a sub-CONSTRUCTOR
	iff CONSTRUCTOR_BRACES_ELIDED_P.

gcc/testsuite/ChangeLog:

	* g++.dg/cpp2a/class-deduction-aggr11.C: New test.
	* g++.dg/cpp2a/class-deduction-aggr12.C: New test.
2021-08-18 08:37:45 -04:00
Patrick Palka a6b3db3e86 c++: ignore explicit dguides during NTTP CTAD [PR101883]
Since (template) argument passing is a copy-initialization context,
we mustn't consider explicit deduction guides when deducing a CTAD
placeholder type of an NTTP.

	PR c++/101883

gcc/cp/ChangeLog:

	* pt.c (convert_template_argument): Pass LOOKUP_IMPLICIT to
	do_auto_deduction.

gcc/testsuite/ChangeLog:

	* g++.dg/cpp2a/nontype-class49.C: New test.
2021-08-18 08:37:42 -04:00
Eric Botcazou 88ef1a14bb Fix thinko in latest change for GNAT encodings
gcc/ada/
	* gcc-interface/decl.c (gnat_to_gnu_entity) <discrete_type>: Fix
	thinko in latest change.
2021-08-18 14:23:09 +02:00
Jan Hubicka e12946df34 Add EAF_NOREAD check to tree-ssa-uninit
gcc/ChangeLog:

2021-08-18  Jan Hubicka  <hubicka@ucw.cz>

	* tree-ssa-uninit.c (maybe_warn_pass_by_reference): Check also
	EAF_NOREAD.
2021-08-18 13:26:52 +02:00
Thomas Schwinge e4f16e9f35 Add more self-tests for 'hash_map' with Value type with non-trivial constructor/destructor
... to document the current behavior.

	gcc/
	* hash-map-tests.c (test_map_of_type_with_ctor_and_dtor): Extend.
	(test_map_of_type_with_ctor_and_dtor_expand): Add function.
	(hash_map_tests_c_tests): Call it.
2021-08-18 13:25:48 +02:00
Thomas Schwinge 602fca427d Turn 'bool force_collect' parameter to 'ggc_collect' into an 'enum ggc_collect mode'
... to make the meaning more explicit to the reader of the code.

Follow-up to recent commit 0edf2e81bb
"Turn global 'ggc_force_collect' variable into 'force_collect' parameter to
'ggc_collect'".

	gcc/
	* ggc.h (enum ggc_collect): New.
	(ggc_collect): Use it.
	* ggc-page.c: Adjust.
	* ggc-common.c: Likewise.
	* ggc-tests.c: Likewise.
	* read-rtl-function.c: Likewise.
	* selftest-run-tests.c: Likewise.
	* doc/gty.texi (Invoking the garbage collector): Likewise.

Suggested-by: David Malcolm <dmalcolm@redhat.com>
2021-08-18 13:25:29 +02:00
Tobias Burnus 76bb3c50dd Fortran/OpenMP: Add memory routines existing for C/C++
This patch adds the Fortran interface for omp_alloc/omp_free
and the omp_target_* memory routines, which were added in
OpenMP 5.0 for C/C++ but only OpenMP 5.1 added them for Fortran.

Those functions use BIND(C), i.e. on the libgomp side, the same
interface as for C/C++ is used.

Note: By using BIND(C) in omp_lib.h, files including this file
no longer compiler with -std=f95 but require at least -std=f2003.

libgomp/ChangeLog:

	* omp_lib.f90.in (omp_alloc, omp_free, omp_target_alloc,
	omp_target_free. omp_target_is_present, omp_target_memcpy,
	omp_target_memcpy_rect, omp_target_associate_ptr,
	omp_target_disassociate_ptr): Add interface.
	* omp_lib.h.in (omp_alloc, omp_free, omp_target_alloc,
	omp_target_free. omp_target_is_present, omp_target_memcpy,
	omp_target_memcpy_rect, omp_target_associate_ptr,
	omp_target_disassociate_ptr): Add interface.
	* testsuite/libgomp.fortran/alloc-1.F90: Remove local
	interface block for omp_alloc + omp_free.
	* testsuite/libgomp.fortran/alloc-4.f90: Likewise.
	* testsuite/libgomp.fortran/refcount-1.f90: New test.
	* testsuite/libgomp.fortran/target-12.f90: New test.
2021-08-18 11:15:47 +02:00
Jakub Jelinek 5079b7781a openmp: Add nothing directive support
As has been clarified, it is intentional that nothing directive is accepted
in substatements of selection and looping statements and after labels and
is handled as if the directive just isn't there, so that
void
foo (int x)
{
  if (x)
    #pragma omp metadirective when (...:nothing) when (...:parallel)
    bar ();
}
behaves consistently; declarative and stand-alone directives aren't allowed
at that point, but constructs are parsed with the following statement as
the construct body and nothing or missing default on metadirective therefore
should handle the following statement as part of the if substatement instead
of having nothing as the substatement and bar done unconditionally after the
if.

2021-08-18  Jakub Jelinek  <jakub@redhat.com>

gcc/c-family/
	* c-pragma.h (enum pragma_kind): Add PRAGMA_OMP_NOTHING.
	* c-pragma.c (omp_pragmas): Add nothing directive.
	* c-omp.c (omp_directives): Uncomment nothing directive entry.
gcc/c/
	* c-parser.c (c_parser_omp_nothing): New function.
	(c_parser_pragma): Handle PRAGMA_OMP_NOTHING.
gcc/cp/
	* parser.c (cp_parser_omp_nothing): New function.
	(cp_parser_pragma): Handle PRAGMA_OMP_NOTHING.
gcc/testsuite/
	* c-c++-common/gomp/nothing-1.c: New test.
	* g++.dg/gomp/attrs-1.C (bar): Add nothing directive test.
	* g++.dg/gomp/attrs-2.C (bar): Likewise.
	* g++.dg/gomp/attrs-9.C: Likewise.
libgomp/
	* testsuite/libgomp.c-c++-common/nothing-1.c: New test.
2021-08-18 11:10:43 +02:00
Martin Liska 0684c8d3ef commit-mklog: Add --co argument.
The argument can be used for addition of Co-Authored-By lines
with --trailer='Co-Authored-By=Mona Lisa Octocat <mona@github.com>'.

contrib/ChangeLog:

	* gcc-git-customization.sh: Wrap $@ in quotes.
	* git-commit-mklog.py: Add new argument --co.
	* mklog.py: Skip the Co-Authored-By lines.
2021-08-18 10:36:35 +02:00
Jakub Jelinek 1bf976a5de openmp: Actually ignore pragma_stmt pragmas for which c_parser_pragma returns false
Unlike the C++ FE, the C FE ignored pragmas (as if they weren't there) in
pragma_stmt contexts if c*_parser_pragma returns false only when after labels,
not inside of substatements of selection or loop statements.
After making just that change, several gomp/goacc testcases started failing,
because extra diagnostics has been emitted (in C, in C++ it was emitted
already before).  Say
void
foo (int x)
{
  if (x)
    #pragma omp barrier
}
used to in C emit just an error that the pragma is not allowed in such
contexts, but in C++ emitted both that and a parsing error that
  if (x)
}
is invalid.  So, the rest of this patch is mostly about returning true
after we report that that certain pragma is not allowed in pragma_stmt
contexts, because for error-recovery it seems better to treat the
pragma in that case as something that is the substatement of such if etc.
c*_parser_pragma return value is only ever used for pragma_stmt context,
in which false means act as if the pragma isn't there (e.g. has been handled
already by preprocessor etc.), and true which means it was there.

2021-08-18  Jakub Jelinek  <jakub@redhat.com>

gcc/c/
	* c-parser.c (c_parser_statement_after_labels): Add restart label
	near the start of the function.  If c_parser_pragma returns false,
	goto restart.
	(c_parser_pragma): For PRAGMA_OMP_CANCELLATION_POINT return what
	c_parser_omp_cancellation_point returned.  For PRAGMA_OMP_DECLARE
	return what c_parser_omp_declare returned.  Return true instead of
	false after emitting errors that the directive is not allowed in
	pragma_stmt context.
	(c_parser_omp_ordered): Return true instead of
	false after emitting errors that the directive is not allowed in
	pragma_stmt context.
	(c_parser_omp_target_update): Likewise.
	(c_parser_omp_target_enter_data, c_parser_omp_target_exit_data):
	Change return type from tree to bool, return false if the
	directive should be ignored in pragma_stmt contexts.
	(c_parser_omp_target): Adjust callers of c_parser_omp_target_*_data,
	return their result directly.
	(c_parser_omp_cancellation_point): Change return type from void to
	bool, return false if the directive should be ignored in pragma_stmt
	contexts.
	(c_parser_omp_declare): Likewise.
gcc/cp/
	* parser.c (cp_parser_omp_ordered): Return true instead of
	false after emitting errors that the directive is not allowed in
	pragma_stmt context.
	(cp_parser_omp_target_update): Likewise.
	(cp_parser_omp_cancellation_point): Change return type from void to
	bool, return false if the directive should be ignored in pragma_stmt
	contexts.
	(cp_parser_omp_target_enter_data, cp_parser_omp_target_exit_data):
	Change return type from tree to bool, return false if the
	directive should be ignored in pragma_stmt contexts.
	(cp_parser_omp_target): Adjust callers of cp_parser_omp_target_*_data,
	return their result directly.
	(cp_parser_pragma): For PRAGMA_OMP_CANCELLATION_POINT return what
	cp_parser_omp_cancellation_point returned.  Return true instead of
	false after emitting errors that the directive is not allowed in
	pragma_stmt context.
gcc/testsuite/
	* c-c++-common/gomp/pr63326.c: Don't expect extra "before" errors
	in C++.
	* g++.dg/gomp/attrs-7.C: Don't expect one extra error.
	* g++.dg/gomp/barrier-2.C: Likewise.
	* gcc.dg/gomp/declare-simd-5.c: Likewise.
	* gcc.dg/gomp/barrier-2.c: Likewise.
	* gcc.dg/gomp/declare-variant-2.c: Likewise.
2021-08-18 10:20:50 +02:00
liuhongt 97d51c1764 Add x86 tune to enable v2df vector reduction by paddpd.
The tune is disabled by default.

gcc/ChangeLog:

	PR target/97147
	* config/i386/i386.h (TARGET_V2DF_REDUCTION_PREFER_HADDPD):
	New macro.
	* config/i386/sse.md (*sse3_haddv2df3_low): Add
	TARGET_V2DF_REDUCTION_PREFER_HADDPD.
	(*sse3_hsubv2df3_low): Ditto.
	* config/i386/x86-tune.def
	(X86_TUNE_V2DF_REDUCTION_PREFER_HADDPD): New tune.

gcc/testsuite/ChangeLog:

	PR target/97147
	* gcc.target/i386/pr54400.c: Adjust testcase.
	* gcc.target/i386/pr94147.c: New test.
2021-08-18 11:26:36 +08:00
GCC Administrator 2d14d64bf2 Daily bump. 2021-08-18 00:16:48 +00:00
Andrew MacLeod 4759e1e045 Add GORI tracing faciltiies.
Debugging range-ops and gori unwinding needed some help.

	* gimple-range-gori.cc (gori_compute::gori_compute): Enable tracing.
	(gori_compute::compute_operand_range): Add tracing.
	(gori_compute::logical_combine): Ditto.
	(gori_compute::compute_logical_operands): Ditto.
	(gori_compute::compute_operand1_range): Ditto.
	(gori_compute::compute_operand2_range): Ditto.
	(gori_compute::outgoing_edge_range_p): Ditto.
	* gimple-range-gori.h (class gori_compute): Add range_tracer.
2021-08-17 19:28:43 -04:00
Andrew MacLeod 0bb74a28e1 Change evrp-mode options.
Remove tracing in hybrid mode. Add trace/gori/cache tracing options.
tracing options are now  'trace', 'gori', 'cache', or all combined in 'debug'

	* flag-types.h (enum evrp_mode): Adjust evrp-mode values.
	* gimple-range-cache.cc (DEBUG_RANGE_CACHE): Relocate from.
	* gimple-range-trace.h (DEBUG_RANGE_CACHE): Here.
	* params.opt (--param=evrp-mode): Adjust options.
2021-08-17 19:28:43 -04:00
Andrew MacLeod e68c8280fa Abstract tracing routines into a class.
Generalize range tracing into a class and integrae it with gimple_ranger.
Remove the old derived trace_ranger class.

	* Makefile.in (OBJS): Add gimple-range-trace.o.
	* gimple-range-cache.h (enable_new_values): Remove unused prototype.
	* gimple-range-fold.cc: Adjust headers.
	* gimple-range-trace.cc: New.
	* gimple-range-trace.h: New.
	* gimple-range.cc (gimple_ranger::gimple_ranger): Enable tracer.
	(gimple_ranger::range_of_expr): Add tracing.
	(gimple_ranger::range_on_entry): Ditto.
	(gimple_ranger::range_on_exit): Ditto.
	(gimple_ranger::range_on_edge): Ditto.
	(gimple_ranger::fold_range_internal): Ditto.
	(gimple_ranger::dump_bb): Do not calculate edge range twice.
	(trace_ranger::*): Remove.
	(enable_ranger): Never create a trace_ranger.
	(debug_seed_ranger): Move to gimple-range-trace.cc.
	(dump_ranger): Ditto.
	(debug_ranger): Ditto.
	* gimple-range.h: Include gimple-range-trace.h.
	(range_on_entry, range_on_exit): No longer virtual.
	(class trace_ranger): Remove.
	(DEBUG_RANGE_CACHE): Move to gimple-range-trace.h.
2021-08-17 19:28:42 -04:00
Martin Sebor b48d4e6818 Move more warning code to gimple-ssa-warn-access etc.
Also resolves:
PR middle-end/101854 - Invalid warning -Wstringop-overflow wrong argument

gcc/ChangeLog:

	PR middle-end/101854
	* builtins.c (expand_builtin_alloca): Move warning code to check_alloca
	in gimple-ssa-warn-access.cc.
	* calls.c (alloc_max_size): Move code to check_alloca.
	(get_size_range): Move to pointer-query.cc.
	(maybe_warn_alloc_args_overflow): Move to gimple-ssa-warn-access.cc.
	(get_attr_nonstring_decl): Move to tree.c.
	(fntype_argno_type): Move to gimple-ssa-warn-access.cc.
	(append_attrname): Same.
	(maybe_warn_rdwr_sizes): Same.
	(initialize_argument_information): Move code to
	gimple-ssa-warn-access.cc.
	* calls.h (maybe_warn_alloc_args_overflow): Move to
	gimple-ssa-warn-access.h.
	(get_attr_nonstring_decl): Move to tree.h.
	(maybe_warn_nonstring_arg):  Move to gimple-ssa-warn-access.h.
	(enum size_range_flags): Move to pointer-query.h.
	(get_size_range): Same.
	* gimple-ssa-warn-access.cc (has_location): Remove unused overload
	to avoid Clang -Wunused-function.
	(get_size_range): Declare static.
	(maybe_emit_free_warning): Rename...
	(maybe_check_dealloc_call): ...to this for consistency.
	(class pass_waccess): Add members.
	(pass_waccess::~pass_waccess): Defined.
	(alloc_max_size): Move here from calls.c.
	(maybe_warn_alloc_args_overflow): Same.
	(check_alloca): New function.
	(check_alloc_size_call): New function.
	(check_strncat): Handle another warning flag.
	(pass_waccess::check_builtin): Handle alloca.
	(fntype_argno_type): Move here from calls.c.
	(append_attrname): Same.
	(maybe_warn_rdwr_sizes): Same.
	(pass_waccess::check_call): Define.
	(check_nonstring_args): New function.
	(pass_waccess::check): Call new member functions.
	(pass_waccess::execute): Enable ranger.
	* gimple-ssa-warn-access.h (get_size_range): Move here from calls.h.
	(maybe_warn_nonstring_arg): Same.
	* gimple-ssa-warn-restrict.c: Remove #include.
	* pointer-query.cc (get_size_range): Move here from calls.c.
	* pointer-query.h (enum size_range_flags): Same.
	(get_size_range): Same.
	* tree.c (get_attr_nonstring_decl): Move here from calls.c.
	* tree.h (get_attr_nonstring_decl): Move here from calls.h.

gcc/testsuite/ChangeLog:

	* gcc.dg/attr-alloc_size-5.c: Adjust optimization to -O1.
	* gcc.dg/attr-alloc_size-7.c: Use #pragmas to adjust optimization.
	* gcc.dg/attr-alloc_size-8.c: Adjust optimization to -O1.

	PR middle-end/101854
	* gcc.dg/Wstringop-overflow-72.c: New test.
2021-08-17 14:49:05 -06:00
Jakub Jelinek 32c3a75390 c++: Implement P0466R5 __cpp_lib_is_layout_compatible compiler helpers [PR101539]
The following patch implements __is_layout_compatible trait and
__builtin_is_corresponding_member helper function for the
std::is_corresponding_member template function.

As the current definition of layout compatible type has various problems,
which result e.g. in corresponding members in layout compatible types having
different member offsets, the patch anticipates some changes to the C++
standard:
1) class or enumeral types aren't layout compatible if they have different
   alignment or size
2) if two members have different offsets, they can't be corresponding members
   ([[no_unique_address]] with empty types can change that, or alignas
   on the member decls)
3) in unions, bitfields can't correspond to non-unions, or bitfields can't
   correspond to bitfields with different widths, or members with
   [[no_unique_address]] can't correspond to members without that attribute

__builtin_is_corresponding_member for anonymous structs (GCC extension) will
recurse into the anonymous structs.  For anonymous unions it will emit
a sorry if it can't prove such member types can't appear in the
anonymous unions or anonymous aggregates in that union, because
corresponding member is defined only using common initial sequence which is
only defined for std-layout non-union class types and so I have no idea what
to do otherwise in that case.

2021-08-17  Jakub Jelinek  <jakub@redhat.com>

	PR c++/101539
gcc/c-family/
	* c-common.h (enum rid): Add RID_IS_LAYOUT_COMPATIBLE.
	* c-common.c (c_common_reswords): Add __is_layout_compatible.
gcc/cp/
	* cp-tree.h (enum cp_trait_kind): Add CPTK_IS_LAYOUT_COMPATIBLE.
	(enum cp_built_in_function): Add CP_BUILT_IN_IS_CORRESPONDING_MEMBER.
	(fold_builtin_is_corresponding_member, next_common_initial_seqence,
	layout_compatible_type_p): Declare.
	* parser.c (cp_parser_primary_expression): Handle
	RID_IS_LAYOUT_COMPATIBLE.
	(cp_parser_trait_expr): Likewise.
	* cp-objcp-common.c (names_builtin_p): Likewise.
	* constraint.cc (diagnose_trait_expr): Handle
	CPTK_IS_LAYOUT_COMPATIBLE.
	* decl.c (cxx_init_decl_processing): Register
	__builtin_is_corresponding_member builtin.
	* constexpr.c (cxx_eval_builtin_function_call): Handle
	CP_BUILT_IN_IS_CORRESPONDING_MEMBER builtin.
	* semantics.c (is_corresponding_member_union,
	is_corresponding_member_aggr, fold_builtin_is_corresponding_member):
	New functions.
	(trait_expr_value): Handle CPTK_IS_LAYOUT_COMPATIBLE.
	(finish_trait_expr): Likewise.
	* typeck.c (next_common_initial_seqence, layout_compatible_type_p):
	New functions.
	* cp-gimplify.c (cp_gimplify_expr): Fold
	CP_BUILT_IN_IS_CORRESPONDING_MEMBER.
	(cp_fold): Likewise.
	* tree.c (builtin_valid_in_constant_expr_p): Handle
	CP_BUILT_IN_IS_CORRESPONDING_MEMBER.
	* cxx-pretty-print.c (pp_cxx_trait_expression): Handle
	CPTK_IS_LAYOUT_COMPATIBLE.
	* class.c (remove_zero_width_bit_fields): Remove.
	(layout_class_type): Don't call it.
gcc/testsuite/
	* g++.dg/cpp2a/is-corresponding-member1.C: New test.
	* g++.dg/cpp2a/is-corresponding-member2.C: New test.
	* g++.dg/cpp2a/is-corresponding-member3.C: New test.
	* g++.dg/cpp2a/is-corresponding-member4.C: New test.
	* g++.dg/cpp2a/is-corresponding-member5.C: New test.
	* g++.dg/cpp2a/is-corresponding-member6.C: New test.
	* g++.dg/cpp2a/is-corresponding-member7.C: New test.
	* g++.dg/cpp2a/is-corresponding-member8.C: New test.
	* g++.dg/cpp2a/is-layout-compatible1.C: New test.
	* g++.dg/cpp2a/is-layout-compatible2.C: New test.
	* g++.dg/cpp2a/is-layout-compatible3.C: New test.
2021-08-17 21:18:29 +02:00
Matt Jacobson 798666392b Objective-C: Default flag_objc_sjlj_exceptions off for NeXT ABI >= 2.
Signed-off-by: Matt Jacobson <mhjacobson@me.com>

gcc/c-family/ChangeLog:

	* c-opts.c (c_common_post_options): Default to
	flag_objc_sjlj_exceptions = 1 only when flag_objc_abi < 2.

gcc/objc/ChangeLog:

	* objc-next-runtime-abi-02.c
	(objc_next_runtime_abi_02_init): Warn about and reset
	flag_objc_sjlj_exceptions regardless of flag_objc_exceptions.
	(next_runtime_02_initialize): Use a checking assert that
	flag_objc_sjlj_exceptions is off.
2021-08-17 20:10:39 +01:00
Thomas Schwinge 60b94d8bd2 libstdc++: Avoid illegal argument to verbose in dg-test callback, continued
This is a follow-up to commit 697b94cfae
"libstdc++: Avoid illegal argument to verbose in dg-test callback".
I'm confirming the original problem, but on one system, it's not
resolved by this change, because instead we get:

    extra_tool_flags are:
    ERROR: tcl error sourcing [...]/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp.
    ERROR: usage: send [args] string
        while executing
    "send_log "$message\n""
        (procedure "verbose" line 48)
        invoked from within
    "verbose -log -- $extra_tool_flags"
        (procedure "libstdc++-dg-test" line 45)
        invoked from within
    "${tool}-dg-test $prog [lindex ${dg-do-what} 0] "$tool_flags ${dg-extra-tool-flags}""
        (procedure "saved-dg-test" line 115)
        invoked from within
    [...]

That's Ubuntu's dejagnu 1.5-3ubuntu1 being so old that it doesn't include
DejaGnu commit 57c22601afe43d2c2b8819df4f2ecacb034516fd "Protect from leading
dash in message".  (I suppose that's what'd make this work, but have not
verified.)

	libstdc++-v3/
	* testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose,
	continued.
2021-08-17 21:05:27 +02:00
Iain Sandoe b240450b63 Darwin, libcc1: Handle hosts with mdynamic-no-pic support.
The default for building host-side binaries for mdynamic-no-pic
hosts is to enable this.  However, it is not compatible with
dynamic libraries, so must be switched off for libcc1.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

libcc1/ChangeLog:

	* Makefile.am: Switch mdynamic-no-pic to fPIC.
	* Makefile.in: Regenerated.
2021-08-17 20:03:56 +01:00
Thomas Schwinge 0edf2e81bb Turn global 'ggc_force_collect' variable into 'force_collect' parameter to 'ggc_collect'
This simplifies the interface and gets us rid of a global variable.
No change in behavior.

Clean-up for 2004-09-02 CVS commit (Subversion r86974,
Git commit 0772402279)
"Better memory statistics, take 2".

	gcc/
	* ggc.h (ggc_collect): Add 'force_collect' parameter.
	* ggc-page.c (ggc_collect): Use that one instead of global
	'ggc_force_collect'.  Adjust all users.
	* doc/gty.texi (Invoking the garbage collector): Update.
	* ggc-internal.h (ggc_force_collect): Remove.
	* ggc-common.c (ggc_force_collect): Likewise.
	* selftest.h (forcibly_ggc_collect): Remove.
	* ggc-tests.c (selftest::forcibly_ggc_collect): Likewise.
	* read-rtl-function.c (test_loading_labels): Adjust.
	* selftest-run-tests.c (run_tests): Likewise.
2021-08-17 21:00:10 +02:00
Thomas Schwinge a42467bdb7 Restore 'gcc.dg/pr78213.c' testing
... after it had gotten disabled in r243681 (Git
commit ecfc21ff34)
"Introduce selftest::locate_file".

	gcc/testsuite/
	* gcc.dg/pr78213.c: Restore testing.
2021-08-17 20:56:37 +02:00
Iain Sandoe 2d9da1c897 Darwin: Reset section names table at the end of compile.
For a single use (typical compile) this vector will be reclaimed
as GGC.  For JIT this is not sufficient since it does not reset
the pointer to NULL (and thus we think the the vector is already
allocated when a context is reused).

The clears the vector and sets the pointer to NULL at the end
of object output.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

gcc/ChangeLog:

	* config/darwin.c (darwin_file_end): Reset and reclaim the
	section names table at the end of compile.
2021-08-17 19:48:06 +01:00
Iain Sandoe 743b8dd6fd Darwin, X86, config: Adjust 'as' command lines [PR100340].
Versions of the assembler using clang from XCode 12.5/12.5.1
have a bug which produces different code layout between debug and
non-debug input, leading to a compare fail for default configure
parameters.

This is a workaround fix to disable the optimisation that is
responsible for the bug.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

PR target/100340 - Bootstrap fails with Clang 12.0.5 (XCode 12.5)

	PR target/100340

gcc/ChangeLog:

	* config.in: Regenerate.
	* config/i386/darwin.h (EXTRA_ASM_OPTS): New
	(ASM_SPEC): Pass options to disable branch shortening where
	needed.
	* configure: Regenerate.
	* configure.ac: Detect versions of 'as' that support the
	optimisation which has the bug.
2021-08-17 19:38:05 +01:00
Richard Biener e7e17be3be Fall back to masked_gather_load/masked_scatter_store
This adds a fallback to the masked_ variants for gather_load
and scatter_store if the latter are not available.

2021-08-17  Richard Biener  <rguenther@suse.de>

	* optabs-query.c (supports_vec_gather_load_p): Also check
	for masked optabs.
	(supports_vec_scatter_store_p): Likewise.
	* tree-vect-data-refs.c (vect_gather_scatter_fn_p): Fall
	back to masked variants if non-masked are not supported.
	* tree-vect-patterns.c (vect_recog_gather_scatter_pattern):
	When we need to use masked gather/scatter but do not have
	a mask set up a constant true one.
	* tree-vect-stmts.c (vect_check_scalar_mask): Also allow
	non-SSA_NAME masks.
2021-08-17 18:54:24 +02:00
Luc Michel 817766f4dd libstdc++: Fix testsuite for skipping gdb tests on remote/non-native target
This fixes an incorrect invocation of gdb on remote targets where
DejaGNU would try to run host's gdb in remote target simulator.
gdb-test skips the testing when target is remote or non native but the
gdb version check function does not.

Suggested-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Luc Michel <lmichel@kalray.eu>

Co-authored-by: Marc Poulhies <mpoulhies@kalrayinc.com>

libstdc++-v3/ChangeLog:

	* testsuite/lib/gdb-test.exp (gdb_version_check)
	(gdb_version_check_xmethods): Only check the GDB version for
	local native targets.
2021-08-17 16:54:44 +01:00
Antony Polukhin 174f9257a7 libstdc++: Optimize std::seed_seq construction
When std::seed_seq is constructed from random access iterators we can
detect the internal vector size in O(1). Reserving memory for elements
in such cases may avoid multiple memory allocations.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* include/bits/random.tcc (seed_seq::seed_seq): Reserve capacity
	if distance is O(1).
	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
	line number.

Co-authored-by: Jonathan Wakely <jwakely@redhat.com>
2021-08-17 16:53:19 +01:00
Roger Sayle 897a15f355 Improved handling of MINUS_EXPR in bit CCP.
This patch improves the bit bounds for MINUS_EXPR during tree-ssa's
conditional constant propagation (CCP) pass (and as an added bonus
adds support for POINTER_DIFF_EXPR).

The pessimistic assumptions made by the current algorithm are
demonstrated by considering 1 - (x&1).  Intuitively this should
have possible values 0 and 1, and therefore an unknown mask of 1.
Alas by treating subtraction as a negation followed by addition,
the second operand first becomes 0 or -1, with an unknown mask
of all ones, which results in the addition containing no known bits.

Improved bounds are achieved by using the same approach used for
PLUS_EXPR, determining the result with the minimum number of borrows,
the result from the maximum number of borrows, and examining the bits
they have in common.  One additional benefit of this approach
is that it is applicable to POINTER_DIFF_EXPR, where previously the
negation of a pointer didn't/doesn't make sense.

A more convincing example, where a transformation missed by .032t.cpp
isn't caught a few passes later by .038t.evrp, is the expression
(7 - (x&5)) & 2, which (in the new test case) currently survives the
tree-level optimizers but with this patch is now simplified to the
constant value 2.

2021-08-17  Roger Sayle  <roger@nextmovesoftware.com>

gcc/ChangeLog
	* tree-ssa-ccp.c (bit_value_binop) [MINUS_EXPR]: Use same
	algorithm as PLUS_EXPR to improve subtraction bit bounds.
	[POINTER_DIFF_EXPR]: Treat as synonymous with MINUS_EXPR.

gcc/testsuite/ChangeLog
	* gcc.dg/tree-ssa/ssa-ccp-40.c: New test case.
2021-08-17 14:59:14 +01:00
Roger Sayle 408579c9c9 Improved handling of MULT_EXPR in bit CCP.
This patch allows GCC to constant fold (i | (i<<16)) | ((i<<24) | (i<<8)),
where i is an unsigned char, or the equivalent (i*65537) | (i*16777472), to
i*16843009.  The trick is to teach tree_nonzero_bits which bits may be
set in the result of a multiplication by a constant given which bits are
potentially set in the operands.  This allows the optimizations recently
added to match.pd to catch more cases.

The required mask/value pair from a multiplication may be calculated using
a classical shift-and-add algorithm, given we already have implementations
for both addition and shift by constant.  To keep this optimization "cheap",
this functionality is only used if the constant multiplier has a few bits
set (unless flag_expensive_optimizations), and we provide a special case
fast-path implementation for the common case where the (non-constant)
operand has no bits that are guaranteed to be set.  I have no evidence
that this functionality causes performance issues, it's just that sparse
multipliers provide the largest benefit to CCP.

2021-08-17  Roger Sayle  <roger@nextmovesoftware.com>

gcc/ChangeLog
	* tree-ssa-ccp.c (bit_value_mult_const): New helper function to
	calculate the mask-value pair result of a multiplication by an
	unsigned constant.
	(bit_value_binop) [MULT_EXPR]:  Call it from here for
	multiplications by (sparse) non-negative constants.

gcc/testsuite/ChangeLog
	* gcc.dg/fold-ior-5.c: New test case.
2021-08-17 14:53:04 +01:00
Tobias Burnus f8d535f3fe Fortran: Implement OpenMP 5.1 scope construct
Fortran version to commit e45483c7c4,
which implemented OpenMP's scope construct for C and C++.
Most testcases are based on the C testcases; it also contains some
testcases which existed previously but had no Fortran equivalent.

gcc/fortran/ChangeLog:

	* dump-parse-tree.c (show_omp_node, show_code_node): Handle
	EXEC_OMP_SCOPE.
	* gfortran.h (enum gfc_statement): Add ST_OMP_(END_)SCOPE.
	(enum gfc_exec_op): Add EXEC_OMP_SCOPE.
	* match.h (gfc_match_omp_scope): New.
	* openmp.c (OMP_SCOPE_CLAUSES): Define
	(gfc_match_omp_scope): New.
	(gfc_match_omp_cancellation_point, gfc_match_omp_end_nowait):
	Improve error diagnostic.
	(omp_code_to_statement): Handle ST_OMP_SCOPE.
	(gfc_resolve_omp_directive): Handle EXEC_OMP_SCOPE.
	* parse.c (decode_omp_directive, next_statement,
	gfc_ascii_statement, parse_omp_structured_block,
	parse_executable): Handle OpenMP's scope construct.
	* resolve.c (gfc_resolve_blocks): Likewise
	* st.c (gfc_free_statement): Likewise
	* trans-openmp.c (gfc_trans_omp_scope): New.
	(gfc_trans_omp_directive): Call it.
	* trans.c (trans_code): handle EXEC_OMP_SCOPE.

libgomp/ChangeLog:

	* testsuite/libgomp.fortran/scope-1.f90: New test.
	* testsuite/libgomp.fortran/task-reduction-16.f90: New test.

gcc/testsuite/ChangeLog:

	* gfortran.dg/gomp/scan-1.f90:
	* gfortran.dg/gomp/cancel-1.f90: New test.
	* gfortran.dg/gomp/cancel-4.f90: New test.
	* gfortran.dg/gomp/loop-4.f90: New test.
	* gfortran.dg/gomp/nesting-1.f90: New test.
	* gfortran.dg/gomp/nesting-2.f90: New test.
	* gfortran.dg/gomp/nesting-3.f90: New test.
	* gfortran.dg/gomp/nowait-1.f90: New test.
	* gfortran.dg/gomp/reduction-task-1.f90: New test.
	* gfortran.dg/gomp/reduction-task-2.f90: New test.
	* gfortran.dg/gomp/reduction-task-2a.f90: New test.
	* gfortran.dg/gomp/reduction-task-3.f90: New test.
	* gfortran.dg/gomp/scope-1.f90: New test.
	* gfortran.dg/gomp/scope-2.f90: New test.
2021-08-17 15:51:03 +02:00
Jonathan Wakely 20698ec5b6 libstdc++: Test std::seed_seq construction from input iterators
Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* testsuite/26_numerics/random/seed_seq/cons/range.cc: Check
	construction from input iterators.
2021-08-17 14:31:21 +01:00
Jonathan Wakely 8ea0fadc1b libstdc++: Remove pretty printer committed by mistake
The std::error_category printer wasn't meant to be part of the commit
adding std::error_code and std::error_condition printers.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* python/libstdcxx/v6/printers.py (StdErrorCatPrinter): Remove.
2021-08-17 14:31:21 +01:00