Commit Graph

166130 Commits

Author SHA1 Message Date
Tom de Vries ccc0d492f1 [nvptx] Allow larger PTX_MAX_VECTOR_LENGTH in nvptx_goacc_validate_dims_1
Allow PTX_MAX_VECTOR_LENGTH to be define as larger than PTX_WARP_SIZE in
nvptx_goacc_validate_dims_1.

2019-01-07  Tom de Vries  <tdevries@suse.de>

	* config/nvptx/nvptx.c (nvptx_welformed_vector_length_p)
	(nvptx_apply_dim_limits): New function.
	(nvptx_goacc_validate_dims_1): Allow PTX_MAX_VECTOR_LENGTH larger than
	PTX_WARP_SIZE.

From-SVN: r267628
2019-01-07 08:10:37 +00:00
Tom de Vries d8ab4e5471 [nvptx] Postpone warnings in nvptx_goacc_validate_dims_1
Move warnings in nvptx_goacc_validate_dims_1 to as late as possible.  This
allows us more flexibility in setting the dimensions.

2019-01-07  Tom de Vries  <tdevries@suse.de>

	* config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Move warnings to
	as late as possible.

From-SVN: r267627
2019-01-07 08:10:17 +00:00
Tom de Vries 764ecad43b [nvptx] Eliminate PTX_VECTOR_LENGTH
Remove PTX_VECTOR_LENGTH and replace uses of it with PTX_DEFAULT_VECTOR_LENGTH,
PTX_MAX_VECTOR_LENGTH and PTX_WARP_SIZE.

2019-01-07  Tom de Vries  <tdevries@suse.de>

	* config/nvptx/nvptx.c (PTX_VECTOR_LENGTH): Remove.
	(PTX_DEFAULT_VECTOR_LENGTH, PTX_MAX_VECTOR_LENGTH): Define.
	(nvptx_goacc_validate_dims_1, nvptx_dim_limit)
	(nvptx_goacc_reduction_fini): Use PTX_DEFAULT_VECTOR_LENGTH,
	PTX_MAX_VECTOR_LENGTH and PTX_WARP_SIZE instead of PTX_VECTOR_LENGTH.

From-SVN: r267626
2019-01-07 08:10:08 +00:00
Tom de Vries 21fbea5c33 [nvptx] Add asserts in nvptx_goacc_validate_dims
Add a few asserts to nvptx_goacc_validate_dims.

2019-01-07  Tom de Vries  <tdevries@suse.de>

	* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Add asserts.

From-SVN: r267625
2019-01-07 08:09:58 +00:00
Tom de Vries 43493c97a6 [nvptx] Fix libgomp.oacc-c-c++-common/vector-length-128-3.c
The vector-length-128-3.c test-case uses GOMP_OPENACC_DIM=-:-:128, but '-' is
not yet supported on trunk.  Use GOMP_OPENACC_DIM=::128 instead.

2019-01-07  Tom de Vries  <tdevries@suse.de>

	* testsuite/libgomp.oacc-c-c++-common/vector-length-128-3.c: Fix
	GOMP_OPENACC_DIM argument.

From-SVN: r267624
2019-01-07 08:09:49 +00:00
Tom de Vries 6e373d1369 [openacc] Add oacc_get_min_dim
Expose oacc_min_dims to backends.

2019-01-07  Tom de Vries  <tdevries@suse.de>

	* omp-offload.c (oacc_get_min_dim): New function.
	* omp-offload.h (oacc_get_min_dim): Declare.

From-SVN: r267623
2019-01-07 08:09:40 +00:00
Mateusz B 4075fc7024 re PR target/88521 (GCC from r266355 miscompiles x265 for mingw-w64 target)
PR target/88521
	* config/i386/i386.c (function_value_ms_64): Return small sturct in
	AX_REG and float/double in FIRST_SSE_REG for 4 or 8 byte modes.

From-SVN: r267622
2019-01-07 07:31:19 +00:00
Janne Blomqvist 0aa6ee3670 Make GFORTRAN_9 symbol node depend on GFORTRAN_8.
At some point when the GFORTRAN_9 node was added it was forgotten to
make it depend on GFORTRAN_8. This patch fixes this.

Committed as obvious.

2019-01-07  Janne Blomqvist  <jb@gcc.gnu.org>

       * gfortran.map (GFORTRAN_9): Make GFORTRAN_9 node depend on
       GFORTRAN_8.

From-SVN: r267621
2019-01-07 08:40:37 +02:00
GCC Administrator 4017eef0c9 Daily bump.
From-SVN: r267619
2019-01-07 00:16:29 +00:00
Jonathan Wakely de4db54fd9 PR libstdc++/86756 Move rest of std::filesystem to libstdc++.so
Move std::filesystem directory iterators and operations from
libstdc++fs.a to main libstdc++ library. These components have many
dependencies on OS support, which is not available on all targets. Some
additional autoconf checks and conditional compilation is needed to
ensure the files will build for all targets. Previously this code was
not compiled without --enable-libstdcxx-filesystem-ts but the C++17
components should be available for all hosted builds.

The tests for these components no longer need to link to libstdc++fs.a,
but are not expected to pass on all targets. To avoid numerous failures
on targets which are not expected to pass the tests (due to missing OS
functionality) leave the dg-require-filesystem-ts directives in place
for now. This will ensure the tests only run for builds where the
filesystem-ts library is built, which presumably means some level of OS
support is present.

	PR libstdc++/86756
	* acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for utime and
	lstat and define _GLIBCXX_USE_UTIME and _GLIBCXX_USE_LSTAT.
	* config.h.in: Regenerate.
	* config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export symbols for
	remaining std::filesystem types and functions.
	* configure: Regenerate.
	* src/c++17/Makefile.am: Add C++17 filesystem sources.
	* src/c++17/Makefile.in: Regenerate.
	* src/c++17/cow-fs_dir.cc: Move src/filesystem/cow-std-dir.cc to
	here, and change name of included file.
	* src/c++17/cow-fs_ops.cc: Move src/filesystem/cow-std-ops.cc to
	here, and change name of included file.
	* src/c++17/fs_dir.cc: Move src/filesystem/std-dir.cc to here. Change
	path to dir-common.h.
	* src/c++17/fs_ops.cc: Move src/filesystem/std-ops.cc to here. Change
	path to ops-common.h. Disable -Wunused-parameter warnings.
	(internal_file_clock): Define unconditionally.
	[!_GLIBCXX_HAVE_SYS_STAT_H] (internal_file_clock::from_stat): Do not
	define.
	(do_copy_file, do_space): Move definitions to ops.common.h.
	(copy, file_size, hard_link_count, last_write_time, space): Only
	perform operation when _GLIBCXX_HAVE_SYS_STAT_H is defined, otherwise
	report an error.
	(last_write_time, read_symlink): Remove unused attributes from
	parameters.
	* src/filesystem/Makefile.am: Remove C++17 filesystem sources.
	* src/filesystem/Makefile.in: Regenerate.
	* src/filesystem/cow-std-dir.cc: Move to src/c++17/cow-fs_dir.cc.
	* src/filesystem/cow-std-ops.cc: Move to src/c++17/cow-fs_ops.cc.
	* src/filesystem/std-dir.cc: Move to src/c++17/fs_dir.cc.
	* src/filesystem/std-ops.cc: Move to src/c++17/fs_ops.cc.
	* src/filesystem/dir-common.h [!_GLIBCXX_HAVE_DIRENT_H]: Define
	dummy types and functions instead of using #error.
	* src/filesystem/dir.cc [!_GLIBCXX_HAVE_DIRENT_H]: Use #error.
	* src/filesystem/ops-common.h [!_GLIBCXX_USE_LSTAT] (lstat): Define
	in terms of stat.
	[!_GLIBCXX_HAVE_UNISTD_H]: Define dummy types and functions.
	(do_copy_file, do_space): Move definitions here from std-ops.cc.
	* src/filesystem/ops.cc: Adjust calls to do_copy_file and do_space
	to account for new namespace.
	* testsuite/27_io/filesystem/directory_entry/86597.cc: Remove
	-lstdc++fs from dg-options.
	* testsuite/27_io/filesystem/directory_entry/lwg3171.cc: Likewise.
	* testsuite/27_io/filesystem/file_status/1.cc: Likewise.
	* testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
	* testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
	* testsuite/27_io/filesystem/iterators/directory_iterator.cc:
	Likewise.
	* testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
	* testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
	Likewise.
	* testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
	* testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
	* testsuite/27_io/filesystem/operations/copy.cc: Likewise.
	* testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
	* testsuite/27_io/filesystem/operations/create_directories.cc:
	Likewise.
	* testsuite/27_io/filesystem/operations/create_directory.cc: Likewise.
	* testsuite/27_io/filesystem/operations/create_symlink.cc: Likewise.
	* testsuite/27_io/filesystem/operations/current_path.cc: Likewise.
	* testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
	* testsuite/27_io/filesystem/operations/exists.cc: Likewise.
	* testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
	* testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
	* testsuite/27_io/filesystem/operations/last_write_time.cc: Likewise.
	* testsuite/27_io/filesystem/operations/permissions.cc: Likewise.
	* testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
	* testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise.
	* testsuite/27_io/filesystem/operations/relative.cc: Likewise.
	* testsuite/27_io/filesystem/operations/remove.cc: Likewise.
	* testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
	* testsuite/27_io/filesystem/operations/space.cc: Likewise.
	* testsuite/27_io/filesystem/operations/status.cc: Likewise.
	* testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
	* testsuite/27_io/filesystem/operations/temp_directory_path.cc:
	Likewise.
	* testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.

From-SVN: r267616
2019-01-06 22:34:37 +00:00
Jonathan Wakely 2b5225352e PR libstdc++/86756 add std::filesystem::path to libstdc++.so
Move the C++17 std::filesystem::path definitions from the libstdc++fs.a
archive to the main libstdc++ library. The path classes do not depend on
any OS functions, so can be defined unconditionally on all targets
(rather than depending on --enable-libstdcxx-filesystem-ts). The tests
should pass on all targets too.

	PR libstdc++/86756
	* config/abi/pre/gnu.ver (GLIBCXX_3.4): Make various patterns for
	typeinfo and vtables less greedy.
	(GLIBCXX_3.4.26): Export symbols for std::filesystem::path.
	* src/c++17/Makefile.am: Add fs_path.cc and cow-fs_path.cc.
	* src/c++17/Makefile.in: Regenerate.
	* src/c++17/cow-fs_path.cc: Move src/filesystem/cow-std-path.cc to
	here, and change name of included file.
	* src/c++17/fs_path.cc: Move src/filesystem/std-path.cc to here.
	* src/filesystem/Makefile.am: Remove std-path.cc and cow-std-path.cc
	from sources.
	* src/filesystem/Makefile.in: Regenerate.
	* src/filesystem/cow-std-path.cc: Move to src/c++17/cow-fs_path.cc.
	* src/filesystem/std-path.cc: Move to src/c++17/fs_path.cc.
	* testsuite/27_io/filesystem/path/append/path.cc: Remove -lstdc++fs
	from dg-options and remove dg-require-filesystem-ts.
	* testsuite/27_io/filesystem/path/append/source.cc: Likewise.
	* testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
	* testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
	* testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
	* testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
	* testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
	* testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
	* testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
	* testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
	* testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
	* testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
	* testsuite/27_io/filesystem/path/construct/default.cc: Likewise.
	* testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
	* testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
	* testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
	* testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise.
	* testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise.
	* testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise.
	* testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise.
	* testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise.
	* testsuite/27_io/filesystem/path/decompose/root_directory.cc:
	Likewise.
	* testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise.
	* testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise.
	* testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
	* testsuite/27_io/filesystem/path/generation/normal.cc: Likewise.
	* testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise.
	* testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise.
	* testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
	* testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise.
	* testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
	* testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
	* testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
	* testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
	Likewise.
	* testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
	Likewise.
	* testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
	Likewise.
	* testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
	Likewise.
	* testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
	* testsuite/27_io/filesystem/path/native/string.cc: Likewise.
	* testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
	* testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise.
	* testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
	* testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
	* testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
	* testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
	* testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise.
	* testsuite/27_io/filesystem/path/query/has_root_directory.cc:
	Likewise.
	* testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
	* testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
	* testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
	* testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise.
	* testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.

From-SVN: r267615
2019-01-06 22:34:29 +00:00
Jonathan Wakely caf80d87b5 PR libstdc++/87431 fix regression introduced by r264574
The previous patch for PR 87431 assumed that initialing a scalar type
could not throw, but it can obtain its value via a conversion operator,
which could throw. This meant the variant could get into a valueless
state, but the valueless_by_exception() member function would always
return false.

This patch fixes it by changing the emplace members to have strong
exception safety when initializing a contained value of trivially
copyable type. The _M_valid() member gets a corresponding change to
always return true for trivially copyable types, not just scalar types.

Strong exception safety (i.e. never becoming valueless) is achieved by
only replacing the current contained value once any potentially throwing
operations have completed. If constructing the new contained value can
throw then a new std::variant object is constructed to hold it, and then
move-assigned to *this (which won't throw).

	PR libstdc++/87431
	* include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
	Check is_trivially_copyable instead of is_scalar.
	(variant::emplace<N, Args>(Args&&...)): If construction of the new
	contained value can throw and its type is trivially copyable then
	construct into a temporary variant and move from it, to provide the
	strong exception safety guarantee.
	(variant::emplace<N, U, Args>(initializer_list<U>, Args&&...)):
	Likewise.
	* testsuite/20_util/variant/87431.cc: New test.
	* testsuite/20_util/variant/run.cc: Adjust test so that throwing
	conversion causes valueless state.

From-SVN: r267614
2019-01-06 20:52:34 +00:00
Jan Hubicka be917808aa re PR tree-optimization/86020 (Performance regression in Eigen geometry.cpp test starting with r248334)
PR tree-opt/86020
	Revert:
	2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
	
        * ipa-inline.c (edge_badness): Use inlined_time instead of
        inline_summaries->get.

From-SVN: r267612
2019-01-06 17:16:00 +00:00
Jan Hubicka a9a32e564d opts.c (enable_fdo_optimizations): Enable version-loops-for-strides...
* opts.c (enable_fdo_optimizations): Enable
	version-loops-for-strides, loop-interchange, unrol-and-jam
	and tree-loop-distribution.
	* invoke.texi: Document newly enabled options.

From-SVN: r267611
2019-01-06 16:44:51 +00:00
Thomas Koenig 13b1afe4de re PR fortran/88658 (Intrinsic MAX1 returns a REAL result, should be INTEGER.)
2019-01-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/88658
	* gfortran.h: Add macro gfc_real_4_kind
	* simplify.c (simplify_min_max): Special case for the types of
	AMAX0, AMIN0, MAX1 and MIN1, which actually change the types of
	their arguments.

2019-01-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/88658
	* gfortran.dg/min_max_type_2.f90: New test.

From-SVN: r267609
2019-01-06 12:48:58 +00:00
Jakub Jelinek 8f4813c1b7 re PR c/88363 (alloc_align attribute doesn't accept enumerated arguments)
PR c/88363
	* c-c++-common/attributes-4.c (falloc_align_int128,
	falloc_size_int128): Guard with #ifdef __SIZEOF_INT128__.

From-SVN: r267608
2019-01-06 11:25:46 +01:00
Jonathan Wakely ecaad8d5cf PR libstdc++/88607 add tests using -finput-charset=ascii
This verifies that the <bits/extc++.h> header can be compiled with ASCII
as the input character set.

	PR libstdc++/88607
	* testsuite/17_intro/headers/c++1998/charset.cc: New test.
	* testsuite/17_intro/headers/c++2011/charset.cc: New test.
	* testsuite/17_intro/headers/c++2014/charset.cc: New test.
	* testsuite/17_intro/headers/c++2017/charset.cc: New test.
	* testsuite/17_intro/headers/c++2020/charset.cc: New test.

From-SVN: r267607
2019-01-06 00:49:11 +00:00
GCC Administrator 881b8ffecd Daily bump.
From-SVN: r267606
2019-01-06 00:16:36 +00:00
Jan Hubicka f256c27430 invoke.texi (max-inline-insns-small): New parameters.
* doc/invoke.texi (max-inline-insns-small): New parameters.
	* ipa-inline.c (want_early_inline_function_p): simplify.
	(want_inline_small_function_p): Fix pasto from previous patch;
	use max-inline-insns-small bound.
	* params.def (max-inline-insns-small): New param.
	* ipa-fnsummary.c (analyze_function_body): Initialize time/size
	variables correctly.

From-SVN: r267603
2019-01-05 22:47:24 +00:00
Jonathan Wakely beb04ce9d4 Define new filesystem::__file_clock type
In C++17 the clock used for filesystem::file_time_type is unspecified,
allowing it to be chrono::system_clock. The C++2a draft requires it to
be a distinct type, with additional member functions to convert to/from
other clocks (either the system clock or UTC). In order to avoid an ABI
change later, this patch defines a new distinct type now, which will be
used for std::chrono::file_clock later.

	* include/bits/fs_fwd.h (__file_clock): Define new clock.
	(file_time_type): Redefine in terms of __file_clock.
	* src/filesystem/ops-common.h (file_time): Add FIXME comment about
	overflow.
	* src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
	internal linkage.
	(internal_file_lock): New helper type for accessing __file_clock.
	(do_copy_file): Use internal_file_lock to convert system time to
	file_time_type.
	(last_write_time(const path&, error_code&)): Likewise.
	(last_write_time(const path&, file_time_type, error_code&)): Likewise.

From-SVN: r267602
2019-01-05 20:03:22 +00:00
Jan Hubicka d06f73a387 invoke.texi: Document max-inline-insns-size...
* doc/invoke.texi: Document max-inline-insns-size,
	uninlined-function-insns, uninlined-function-time,
	uninlined-thunk-insns and uninlined-thunk-time.
	* params.def: Add max-inline-insns-size,
	uninlined-function-insns, uninlined-function-time,
	uninlined-thunk-insns and uninlined-thunk-time.
	* ipa-fnsummary.c (compute_fn_summary, analyze_function_body): Use
	new parameters.
	* ipa-inline.c (can_inline_edge_by_limits_p,
	want_inline_small_function_p): Use new parameters.

From-SVN: r267601
2019-01-05 18:16:55 +00:00
Jan Hubicka 121356b017 * ipa-fnsummary.c (analyze_function_body): Fix accounting of time.
From-SVN: r267600
2019-01-05 17:47:34 +00:00
Dominique d'Humieres 2a95da040d plugindir1.c: Adjust dg-prune-output for Darwin.
2019-01-05  Dominique d'Humieres  <dominiq@gcc.gnu.org>

	* gcc.dg/plugin/plugindir1.c: Adjust dg-prune-output for Darwin.
	* gcc.dg/plugin/plugindir2.c: Likewise.
	* gcc.dg/plugin/plugindir3.c: Likewise.
	* gcc.dg/plugin/plugindir4.c: Likewise.

From-SVN: r267599
2019-01-05 18:18:00 +01:00
Janus Weil f8add009ce re PR fortran/88009 (ICE in find_intrinsic_vtab, at fortran/class.c:2761)
2019-01-05  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/88009
	* class.c (gfc_find_derived_vtab): Mark the _final component as
	artificial.
	(find_intrinsic_vtab): Ditto. Also add an extra check to avoid
	dereferencing a null pointer and adjust indentation.
	* resolve.c (resolve_fl_variable): Add extra check to avoid
	dereferencing a null pointer. Move variable declarations to local scope.
	(resolve_fl_procedure): Add extra check to avoid dereferencing a null
	pointer.
	* symbol.c (check_conflict): Suppress errors for artificial symbols.

2019-01-05  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/88009
	* gfortran.dg/blockdata_10.f90: New test case.

From-SVN: r267598
2019-01-05 15:32:12 +01:00
Jakub Jelinek 23141e5241 re PR middle-end/82564 (ICE at -O1 and above: in assign_stack_temp_for_type, at function.c:783)
PR middle-end/82564
	PR target/88620
	* expr.c (expand_assignment): For calls returning VLA structures
	if to_rtx is not a MEM, force it into a stack temporary.

	* gcc.dg/nested-func-12.c: New test.
	* gcc.c-torture/compile/pr82564.c: New test.

From-SVN: r267595
2019-01-05 12:14:12 +01:00
Jakub Jelinek 4a3e7df872 re PR debug/88635 (Assembler error when building with "-g -O2 -m32")
PR debug/88635
	* dwarf2out.c (const_ok_for_output_1): Reject MINUS that contains
	SYMBOL_REF, CODE_LABEL or UNSPEC in subexpressions of second argument.
	Reject PLUS that contains SYMBOL_REF, CODE_LABEL or UNSPEC in
	subexpressions of both operands.
	(mem_loc_descriptor): Handle UNSPEC if target hook acks it and all the
	subrtxes are CONSTANT_P.
	* config/i386/i386.c (ix86_const_not_ok_for_debug_p): Revert
	2018-11-09 changes.

	* gcc.dg/debug/dwarf2/pr88635.c: New test.

From-SVN: r267594
2019-01-05 12:12:35 +01:00
Dominique d'Humieres 46ca1b43ed re PR target/60563 (FAIL: g++.dg/ext/sync-4.C on *-apple-darwin*)
2019-01-05  Dominique d'Humieres  <dominiq@gcc.gnu.org>

	PR target/60563
	Missing PR entry in the previous commit.

From-SVN: r267593
2019-01-05 12:09:11 +01:00
Dominique d'Humieres ab18132ecc sync-4.C: Add dg-xfail-run-if for darwin.
2019-01-05  Dominique d'Humieres  <dominiq@gcc.gnu.org>

	* g++.dg/ext/sync-4.C: Add dg-xfail-run-if for darwin.

From-SVN: r267592
2019-01-05 11:54:51 +01:00
Martin Sebor 29d2485270 PR c/88546 - Copy attribute unusable for weakrefs
gcc/c-family/ChangeLog:

	PR c/88546
	* c-attribs.c (handle_copy_attribute): Avoid copying attribute leaf.
	Handle C++ empty throw specification and C11 _Noreturn.
	(has_attribute): Also handle C11 _Noreturn.

gcc/ChangeLog:

	PR c/88546
	* attribs.c (decls_mismatched_attributes): Avoid warning for attribute
	leaf.

gcc/testsuite/ChangeLog:

	PR c/88546
	* g++.dg/ext/attr-copy.C: New test.
	* gcc.dg/attr-copy-4.c: Disable macro expansion tracking.
	* gcc.dg/attr-copy-6.c: New test.
	* gcc.dg/attr-copy-7.c: New test.

From-SVN: r267591
2019-01-04 17:57:30 -07:00
Ian Lance Taylor f6be1179bb runtime: prevent deadlock when profiling signal arrives during traceback
Traceback routines, e.g. callers and funcentry, may call
    __go_get_backtrace_state. If a profiling signal arrives while we
    are in the critical section of __go_get_backtrace_state, it tries
    to do a traceback, which also calls __go_get_backtrace_state,
    which tries to enter the same critical section and will deadlock.
    Prevent this deadlock by setting up runtime_in_callers before
    calling __go_get_backtrace_state.
    
    Found while investigating golang/go#29448. Will add a test in the
    next CL.
    
    Updates golang/go#29448.
    
    Reviewed-on: https://go-review.googlesource.com/c/156037

From-SVN: r267590
2019-01-05 00:40:04 +00:00
Jan Hubicka 869fbd357e * params.def (hot-bb-count-ws-permille): Set to 990.
From-SVN: r267589
2019-01-05 00:20:04 +00:00
GCC Administrator 2f2b8aa666 Daily bump.
From-SVN: r267588
2019-01-05 00:16:28 +00:00
Jonathan Wakely 1a289fa362 Export explicit instantiations for C++17 members of std::string
The C++17 standard added some new members to std::basic_string, which
were not previously instantiated in the library. This meant that the
extern template declarations had to be disabled for C++17 mode. With
this patch the new members are instantiated in the library and so the
explicit instantiation declarations can be used for C++17.

The new members added by C++2a are still not exported, and so the
explicit instantiation declarations are still disabled for C++2a.

	* config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy
	for const member functions of std::basic_string.
	(GLIBCXX_3.4.26): Export member functions of std::basic_string added
	in C++17.
	* include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)):
	Make non-standard constructor private.
	[!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)):
	Likewise.
	* include/bits/basic_string.tcc (std::string, std::wstring): Declare
	explicit instantiations for C++17 as well as earlier dialects.
	* src/c++17/Makefile.am: Add new source files.
	* src/c++17/Makefile.in: Regenerate.
	* src/c++17/cow-string-inst.cc: New file defining explicit
	instantiations for basic_string member functions added in C++17.
	* src/c++17/string-inst.cc: Likewise.

From-SVN: r267585
2019-01-04 23:23:22 +00:00
Jonathan Wakely 4ff3e65090 Add allocator-extended copy/move ctors to COW string
Add these constructors from C++11 which were missing from the COW
basic_string. Additionally simplify the definitions of the
basic_string::reference and basic_string::const_reference types as
required by C++11.

This allows filesystem::path::string<Allocator>() to be simplified, so
that the same code is used for both basic_string implementations.

	* config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export allocator-extended
	copy/move constructors for old std::basic_string.
	* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
	(basic_string::reference, basic_string::const_reference): Define
	as plain references for C++11 and later.
	(basic_string::basic_string()): Put constructor body outside
	preprocessor conditional groups.
	(basic_string::basic_string(basic_string&&)): Move _Alloc_hider
	instead of copying it.
	(basic_string::basic_string(const basic_string&, const _Alloc&)):
	Define.
	(basic_string::basic_string(basic_string&&, const _Alloc&)):
	Define.
	* include/bits/fs_path.h [!_GLIBCXX_USE_CXX11_ABI]: Remove special
	cases for old basic_string.
	* testsuite/21_strings/basic_string/cons/char/8.cc: Test
	allocator-extended constructors unconditionally. Add extra members to
	allocator type when using old string ABI.
	* testsuite/21_strings/basic_string/allocator/71964.cc: Enable test
	for old string ABI.
	* testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.

From-SVN: r267584
2019-01-04 23:23:17 +00:00
Martin Sebor 9069a4c95d PR c/88363 - alloc_align attribute doesn't accept enumerated arguments
gcc/c-family/ChangeLog:

	PR c/88363
	* c-attribs.c (positional_argument): Also accept enumerated types.

gcc/testsuite/ChangeLog:

	PR c/88363
	* c-c++-common/attributes-4.c: New test.

gcc/ChangeLog:

	PR c/88363
	* doc/extend.texi (attribute alloc_align, alloc_size): Update.

From-SVN: r267583
2019-01-04 15:48:45 -07:00
Jonathan Wakely 6908c1dc6f Fix test failure when -fno-inline is used
This currently checks _GLIBCXX_USE_DUAL_ABI which is incorrect, as that
can be true when _GLIBCXX_USE_CXX11_ABI == 0. The correct check would be
_GLIBCXX_USE_CXX11_ABI == 1, but that's made redundant by the cxx11-abi
effective target that the test requires. However, the test will fail if
-fno-inline is used, so check __NO_INLINE__ instead.

	* testsuite/23_containers/list/61347.cc: Avoid spurious failure when
	-fno-inline added to test flags.

From-SVN: r267582
2019-01-04 18:56:26 +00:00
Jakub Jelinek 35a5722c7b gdbinit.in: Turn off pagination for the skip commands, restore it to previous state afterwards.
* gdbinit.in: Turn off pagination for the skip commands, restore
	it to previous state afterwards.

From-SVN: r267581
2019-01-04 18:56:47 +01:00
Sam Tebbs af9b2f8658 [PATCH][GCC][Aarch64] Change expected bfxil count in gcc.target/aarch64/combine_bfxil.c to 18 (PR/87763)
gcc/testsuite/Changelog:

2019-01-04  Sam Tebbs  <sam.tebbs@arm.com>

	PR gcc/87763
	* gcc.target/aarch64/combine_bfxil.c: Change scan-assembler-times bfxil
	count to 18.

From-SVN: r267579
2019-01-04 16:26:38 +00:00
Jonathan Wakely 9fc5a9a144 Remove XFAIL from test that no longer fails
This test started passing with the old ABI with r263808, so doesn't need
to be marked XFAIL now.

	* testsuite/21_strings/basic_string/requirements/
	explicit_instantiation/debug.cc: Remove XFAIL for old ABI.

From-SVN: r267578
2019-01-04 16:07:06 +00:00
Jonathan Wakely 66f3122436 Fix test failure with old Copy-On-Write std::string
* testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
	assertion failures with old std::string ABI.

From-SVN: r267577
2019-01-04 15:42:33 +00:00
Jonathan Wakely 73d968d945 Fix bugs in filesystem::path::lexically_normal()
Using path::_List::erase(const_iterator) to remove a non-final component
in path::lexically_normal() is a bug, because it leaves the following
component with an incorrect _M_pos value.

Instead of providing erase members that allow removing components from
the middle, replace them with pop_back() and
_M_erase_from(const_iterator) which only allow removing elements at the
end. Most uses of erase are unaffected, because they only remove
elements from the end anyway. The one use of erasure from the middle in
lexically_normal() is replaced by calls to pop_back() and/or clearing
the last component to leave it as an empty final filename.

Also replace the "???" comment in lexically_normal() to document when
that branch is taken.

	* include/bits/fs_path.h (path::_List::erase): Replace both overloads
	with ...
	(path::pop_back(), path::_M_erase_from(const_iterator)): New member
	functions that will only erase elements at the end.
	* src/filesystem/std-path.cc (path::_List::_Impl::pop_back()): Define.
	(path::_List::_Impl::_M_erase_from(const_iterator)): Define.
	(path::_List::operator=(const _List&)): Use _M_erase_from(p) instead
	of erase(p, end()).
	(path::_List::pop_back()): Define.
	(path::_List::_M_erase_from(const_iterator)): Define.
	(path::operator/=(const path&)): Use pop_back to remove last component
	and _M_erase_from to remove multiple components.
	(path::_M_append(basic_string_view<value_type>)): Likewise.
	(path::operator+=(const path&)): Likewise.
	(path::_M_concat(basic_string_view<value_type>)): Likewise.
	(path::remove_filename()): Likewise.
	(path::lexically_normal()): Use _List::_Impl iterators instead of
	path::iterator. Use pop_back to remove components from the end. Clear
	trailing filename, instead of using erase(const_iterator) to remove
	a non-final component.
	* testsuite/27_io/filesystem/path/generation/normal.cc: Test
	additional cases.
	* testsuite/27_io/filesystem/path/generation/normal2.cc: New test.

From-SVN: r267576
2019-01-04 14:03:59 +00:00
Eric Botcazou 2d4c371efa * gnatvsn.ads: Bump copyright year.
From-SVN: r267575
2019-01-04 12:47:58 +00:00
Jonathan Wakely b30802179a Fix concatenation bug in filesystem::path
When erasing a trailing empty filename component, the output iterator
was not decremented, causing the next component to be created at the
wrong position.

	* src/filesystem/std-path.cc (path::operator+=(const path&)): Fix
	incorrect treatment of empty filename after trailing slash.
	* testsuite/27_io/filesystem/path/concat/path.cc: Test problem case.

From-SVN: r267574
2019-01-04 11:43:09 +00:00
Jonathan Wakely 5db78cac10 Avoid spurious test failures when -fno-inline in test flags
These tests rely on inlining, so if -fno-inline is added to the compiler
flags the tests fail. Use the predefined __NO_INLINE__ macro to detect
that situation, and don't bother testing the move assignment.

	* testsuite/21_strings/basic_string/modifiers/assign/char/
	move_assign_optim.cc: Avoid spurious failure when -fno-inline added
	to test flags.
	* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
	move_assign_optim.cc: Likewise.

From-SVN: r267573
2019-01-04 11:06:49 +00:00
Thomas Koenig a52fcfac0a re PR fortran/48543 (Collapse identical strings)
2019-01-04  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/48543
    * gfortran.dg/const_chararacter_merge.f90: Actually remove.
    * gfortran.dg/merge_char_const.f90: Restore.

From-SVN: r267572
2019-01-04 10:42:12 +00:00
Jakub Jelinek 9d3ac5e3db re PR target/88594 (ICE in int_mode_for_mode, at stor-layout.c:403)
PR target/88594
	* config/i386/i386.c (ix86_expand_divmod_libfunc): Use mode instead
	of GET_MODE (opN) as modes of the libcall arguments.

	* gcc.dg/pr88594.c: New test.

From-SVN: r267571
2019-01-04 10:00:05 +01:00
Jan Beulich 80b23ae866 x86: relax mask register constraints
While their use for masking is indeed restricted to %k1...%k7, use as
"normal" insn operands also permits %k0. Remove the unnecessary
limitations, requiring quite a few testsuite adjustments.

Oddly enough some AVX512{F,DQ} test cases already check for %k[0-7],
while others did permit {%k0} - where they get touched here anyway this
gets fixed at the same time.

From-SVN: r267570
2019-01-04 08:50:56 +00:00
Martin Sebor df161fc280 PR tree-optimization/88659 - ICE in maybe_warn_nonstring_arg
gcc/ChangeLog:
	* calls.c (maybe_warn_nonstring_arg): Avoid assuming maxlen is set.

gcc/testsuite/ChangeLog:
	* gcc.dg/Wstringop-truncation-6.c: New test.

From-SVN: r267569
2019-01-03 20:13:33 -07:00
GCC Administrator 7880e17390 Daily bump.
From-SVN: r267568
2019-01-04 00:16:34 +00:00
Jonathan Wakely 43f1a5e1d8 PR libstdc++/88607 replace some more UTF-8 characters
2019-01-03  Jonathan Wakely  <jwakely@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	PR libstdc++/88607
	* include/experimental/memory: Replace UTF-8 quote characters.
	* include/std/future: Replace UTF-8 "em dash" characters.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r267565
2019-01-03 22:07:52 +00:00