Go to file
Jonathan Wakely 956a62aaa2 Add __raw_visit and __raw_idx_visit, use INVOKE<R>
This change simplifies visitation for variants, by using INVOKE<R> for
the visit<R> form, and explicitly specifying the tag types for raw
visitation, instead of inferring them from the return types of the
lambda functions used as visitors.

	* include/std/variant (__visit_with_index): Remove typedef.
	(__deduce_visit_result): New tag type.
	(__raw_visit, __raw_idx_visit): New helper functions for "raw"
	visitation of possibly-valueless variants, forwarding to __do_visit
	with the relevant tag type.
	(_Variant_storage<false, _Types...>::_M_reset_impl): Use __raw_visit
	and make lambda return void.
	(__variant_construct): Likewise.
	(_Copy_assign_base::operator=, _Move_assign_base::operator=): Use
	__raw_idx_visit and make lambda return void.
	(_Multi_array::__untag_result): Add metafunction to check the function
	pointer type for a tag type that dictates the kind of visitation.
	(_Multi_array<_Ret(*)(_Visitor, _Variants...), __first, __rest...>):
	Use decltype(auto) instead of tagged function pointer type.
	(__gen_vtable_impl): Remove bool non-type parameter and unused
	_Variant_tuple parameter.
	(__gen_vtable_impl::__visit_invoke_impl): Remove.
	(__gen_vtable_impl::__do_visit_invoke): Remove.
	(__gen_vtable_impl::__do_visit_invoke_r): Remove.
	(__gen_vtable_impl::__visit_invoke): Use if-constexpr and __invoke_r
	for the visit<R> case, rather than dispatching to separate functions.
	(_VARIANT_RELATION_FUNCTION_TEMPLATE): Use __raw_idx_visit and make
	lambda return void.
	(variant::swap): Likewise.
	(__do_visit): Replace two non-type template parameters with a single
	type parameter, so that the caller must specify the visitor's return
	type (or one of the tag types).
	(visit): Deduce a return type from the visitor and use the
	__deduce_visit_result tag to enforce that all overloads return the
	same type.
	(visit<R>): Call __do_visit<R> with explicit result type.
	(__variant_hash_call_base_impl::operator()): Use __raw_visit and make
	lambda return void.

From-SVN: r271182
2019-05-14 17:46:07 +01:00
INSTALL
config re PR lto/85574 (LTO bootstapped binaries differ) 2019-05-02 13:58:47 +00:00
contrib * gennews (files): Add files for GCC 9. 2019-05-03 09:40:10 +02:00
fixincludes fixincludes - fix PR90379 2019-05-11 20:19:31 +00:00
gcc i386.md (any_div): New code iterator. 2019-05-14 18:18:06 +02:00
gnattools PR81878: fix --disable-bootstrap --enable-languages=ada 2018-11-20 00:07:47 +00:00
gotools re PR go/89406 (Go testing leaves many temporary directories in /tmp around) 2019-03-01 05:25:36 +00:00
include libiberty.h (vasprintf): Don't declare if HAVE_DECL_VASPRINTF is not defined. 2019-04-26 09:35:01 -06:00
intl iconv.m4 (AM_ICONV_LINK): Don't overwrite CPPFLAGS. 2018-11-07 15:41:21 -07:00
libada Update copyright years. 2019-01-01 13:31:55 +01:00
libatomic Update copyright years. 2019-01-01 13:31:55 +01:00
libbacktrace re PR libbacktrace/89669 (/usr/ccs/bin/ld: Unsatisfied symbols: backtrace_uncompress_zdebug) 2019-03-11 20:40:34 +00:00
libcc1 Update copyright years. 2019-01-01 13:31:55 +01:00
libcpp Fix min_location usage in line-map.c (PR preprocessor/90382). 2019-05-14 11:41:53 +00:00
libdecnumber Update copyright years. 2019-01-01 13:31:55 +01:00
libffi Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
libgcc darwin, powerpc - set .machine in an asm file. 2019-05-12 19:26:16 +00:00
libgfortran Makefile.am (gfor_cdir): Remove $(MULTISUBDIR). 2019-05-02 15:02:27 +02:00
libgo libgo: reduce overhead for memory/block/mutex profiling 2019-05-14 14:59:42 +00:00
libgomp 2019-05-13 Chung-Lin Tang <cltang@codesourcery.com> 2019-05-13 13:32:00 +00:00
libhsail-rt Update copyright years. 2019-01-01 13:31:55 +01:00
libiberty d-demangle.c (dlang_parse_assocarray): Correctly handle error result. 2019-04-30 08:39:14 -06:00
libitm Makefile.am (finclude): Remove. 2019-05-03 09:20:04 +02:00
libobjc re PR target/89093 (C++ exception handling clobbers d8 VFP register) 2019-04-23 12:03:41 +02:00
liboffloadmic PR other/16615 [1/5] 2019-01-09 16:37:45 -05:00
libphobos Check if Solaris ld supports -z relax=transtls 2019-05-07 10:38:45 +00:00
libquadmath Update copyright years. 2019-01-01 13:31:55 +01:00
libsanitizer LOCAL_PATCHES: Add revision. 2019-04-08 13:09:26 +00:00
libssp Update copyright years. 2019-01-01 13:31:55 +01:00
libstdc++-v3 Add __raw_visit and __raw_idx_visit, use INVOKE<R> 2019-05-14 17:46:07 +01:00
libvtv Fix testsuite 2019-02-20 08:07:19 -08:00
lto-plugin Remove a legacy lto-symtab.c file. 2019-02-26 17:27:36 +00:00
maintainer-scripts crontab: Snapshots from trunk are now GCC 10 related. 2019-05-04 13:28:49 +00:00
zlib Makefile.am (noinst_LTLIBRARIES): Rename libzgcj_convience.la to libz_convenience.la. 2019-01-21 17:23:58 +00:00
.dir-locals.el
.gitattributes
.gitignore
ABOUT-NLS
COPYING
COPYING.LIB
COPYING.RUNTIME
COPYING3
COPYING3.LIB
ChangeLog Resign as IA-64 maintainer. 2019-05-07 10:46:51 -07:00
ChangeLog.jit
ChangeLog.tree-ssa
MAINTAINERS Resign as IA-64 maintainer. 2019-05-07 10:46:51 -07:00
Makefile.def Add D front-end, libphobos library, and D2 testsuite. 2018-10-28 19:51:47 +00:00
Makefile.in re PR lto/85574 (LTO bootstapped binaries differ) 2019-05-02 13:58:47 +00:00
Makefile.tpl re PR lto/85574 (LTO bootstapped binaries differ) 2019-05-02 13:58:47 +00:00
README
ar-lib Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
compile
config-ml.in Add D front-end, libphobos library, and D2 testsuite. 2018-10-28 19:51:47 +00:00
config.guess Update config.guess, config.sub (PR target/88535) 2019-01-03 11:28:27 +00:00
config.rpath
config.sub Update config.guess, config.sub (PR target/88535) 2019-01-03 11:28:27 +00:00
configure PR d/87799 Fix D build on windows hosts 2019-04-14 09:52:22 +00:00
configure.ac PR d/87799 Fix D build on windows hosts 2019-04-14 09:52:22 +00:00
depcomp
install-sh
libtool-ldflags
libtool.m4 Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
ltgcc.m4
ltmain.sh libtool.m4: Sort output of 'find' to enable deterministic builds. 2018-07-05 13:13:45 -06:00
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
missing
mkdep
mkinstalldirs
move-if-change
multilib.am Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
symlink-tree
test-driver Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
ylwrap

README

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.