Commit Graph

162584 Commits

Author SHA1 Message Date
Jonathan Wakely
97271bd88f P0935R0 Eradicating unnecessarily explicit default constructors
This is the last remaining piece of P0935R0. This adds a default
constructor to each of the streambuf and stream types in <sstream> so
that default construction does not use the 'explicit' constructor that
has a single, defaulted argument.

	P0935R0 Eradicating unnecessarily explicit default constructors
	* config/abi/pre/gnu.ver: Tighten existing patterns and export new
	default constructor symbols.
	* include/std/sstream (basic_stringbuf, basic_istringstream)
	(basic_ostringstream, basic_stringstream): Remove default arguments
	from explicit constructors taking ios_base::openmode and add separate
	non-explicit default constructors.
	* testsuite/27_io/basic_istringstream/cons/default.cc: New.
	* testsuite/27_io/basic_ostringstream/cons/default.cc: New.
	* testsuite/27_io/basic_stringstream/cons/default.cc: New.
	* testsuite/27_io/basic_stringbuf/cons/char/default.cc: New.
	* testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: New.

From-SVN: r262474
2018-07-06 13:39:02 +01:00
Tamar Christina
8660e7908f Require sse for testcase on i686.
PR target/84711
	* gcc.dg/vect/pr84711.c: Add -msse for i686 targets.

From-SVN: r262472
2018-07-06 10:44:35 +00:00
Jonathan Wakely
4d023b5bd4 * include/std/variant (__accepted_index): Use void_t.
From-SVN: r262471
2018-07-06 11:20:38 +01:00
Tamar Christina
f9ccb8c0af Fix -Wpedantic issue with testcase on AArch64.
2018-07-06  Tamar Christina  <tamar.christina@arm.com>

	* gcc.target/aarch64/struct_cpy.c: Remove ;.

From-SVN: r262470
2018-07-06 09:14:30 +00:00
Sebastian Huber
19975c574e Update config.sub
* config.sub: Sync with upstream version 2018-07-03.

From-SVN: r262469
2018-07-06 06:22:08 +00:00
Sebastian Huber
2d0ff8d808 RTEMS/Ada: Change system configuration
The previous system configuration led to undefined references to
__gnat_raise_nodefer_with_msg().

gcc/ada
	* libgnat/system-rtems.ads (Frontend_Exceptions): Set to False.
	(ZCX_By_Default): Set to True.

From-SVN: r262467
2018-07-06 06:02:00 +00:00
Sebastian Huber
c234070e94 Update config.guess and config.sub
* config.guess: Sync with upstream version 2018-06-26.
	* config.sub: Sync with upstream version 2018-07-02.

From-SVN: r262466
2018-07-06 05:57:35 +00:00
Jeff Law
c3659c58bb asm-2.c (REGISTER): Override for v850 too.
* gcc.dg/tree-ssa/asm-2.c (REGISTER): Override for v850 too.

2018-07-05  Fritz Reese  <fritzoreese@gmail.com>

From-SVN: r262465
2018-07-05 22:17:46 -06:00
Jeff Law
99e87c0eef re PR tree-optimization/86010 (redundant memset with smaller size not eliminated)
PR tree-optimization/86010
	* tree-ssa-dse.c (compute_trims): More aggressively trim at
	both the head and tail of mem* and str* calls.

From-SVN: r262464
2018-07-05 21:43:42 -06:00
Jim Wilson
edace3e229 RISC-V: Add support for riscv-*-*.
* config.gcc (riscv*-*-*): When setting xlen, handle riscv-*.

From-SVN: r262463
2018-07-05 20:14:47 -07:00
GCC Administrator
90099a748f Daily bump.
From-SVN: r262462
2018-07-06 00:16:45 +00:00
Indu Bhagat
7a335530cd aarch64-simd.md: correct flags text for MIN_EXPR replacement.
2018-07-05  Indu Bhagat  <indu.bhagat@oracle.com> 

        * config/aarch64/aarch64-simd.md: correct flags text for
        MIN_EXPR replacement.

From-SVN: r262458
2018-07-05 23:07:40 +00:00
Jonathan Wakely
d04dbb8ad3 PR libstdc++/85831 define move constructors and operators for exceptions
PR libstdc++/85831
	* config/abi/pre/gnu.ver: Export move constructors and move
	assignment operators for std::logic_error and std::runtime_error.
	* include/std/stdexcept: Use _GLIBCXX_NOTHROW instead of
	_GLIBCXX_USE_NOEXCEPT.
	(logic_error, runtime_error): Declare move constructors and move
	assignment operators. When not declared already, define copy
	constructors and copy assignment operators as explicit-defaulted.
	(domain_error, invalid_argument, length_error, out_of_range)
	(overflow_error, underflow_error): Define move constructors and move
	assignment operators as explicitly-defaulted.
	* libsupc++/exception.h (exception): Likewise.
	* src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Define
	move constructors and move assignment operators as defaulted.
	* testsuite/19_diagnostics/stdexcept.cc: Check that constructors and
	assignment operators are defined.

From-SVN: r262456
2018-07-05 22:29:51 +01:00
Jeff Law
1c1d2d8ca7 Add missing '|' as wrong patch was applied.
From-SVN: r262453
2018-07-05 14:28:01 -06:00
James Clarke
1c686aa4be dfp.m4 (enable_decimal_float): Enable for x86_64*-*-gnu* to catch x86_64 kFreeBSD and Hurd.
config/
	* dfp.m4 (enable_decimal_float): Enable for x86_64*-*-gnu* to
	catch x86_64 kFreeBSD and Hurd.

gcc/
	* configure: Regenerated.

libdecnumber/
	* configure: Regenerated.

libgcc/
	* configure: Regenerated.

From-SVN: r262452
2018-07-05 13:23:29 -06:00
Bernhard M. Wiedemann
d41cd173e2 libtool.m4: Sort output of 'find' to enable deterministic builds.
* libtool.m4: Sort output of 'find' to enable deterministic builds.
	* ltmain.sh: Likewise.

From-SVN: r262451
2018-07-05 13:13:45 -06:00
Jonathan Wakely
339657d2d3 Add xfail-if to some tests that fail with COW strings
These tests fail when run with -D_GLIBCXX_USE_CXX11_ABI=0

	* testsuite/21_strings/basic_string/cons/char/deduction.cc: XFAIL for
	COW strings.
	* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
	Likewise.
	* testsuite/21_strings/basic_string/requirements/
	explicit_instantiation/debug.cc: Likewise.

From-SVN: r262448
2018-07-05 18:03:14 +01:00
Jonathan Wakely
30236791e0 PR libstdc++/58265 add noexcept to basic_string::assign(basic_string&&)
PR libstdc++/58265
	* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
	(basic_string::assign(basic_string&&)): Add conditional noexcept
	depending on the allocator's is_always_equal property (LWG 2063).
	* testsuite/21_strings/basic_string/modifiers/assign/char/
	move_assign.cc: Check for non-throwing exception specification.
	* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
	move_assign.cc: Likewise.

From-SVN: r262447
2018-07-05 18:03:05 +01:00
Paul Thomas
99d2293dbf re PR fortran/86408 (bogus error: ABSTRACT INTERFACE must not have an assumed character length result (F2003: C418))
2018-07-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/86408
	* resolve.c.c (resolve_contained_fntype): Reference to C418 is
	in F2008 and not F2003.
	(resolve_function): Ditto in error message. Also, exclude
	deferred character length results from the error.

2018-07-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/86408
	* gfortran.dg/deferred_character_20.f90: New test.

From-SVN: r262445
2018-07-05 16:27:38 +00:00
Jonathan Wakely
d8d9b83b33 PR libstdc++/58265 implement LWG 2063 for COW strings
For COW strings the default constructor does not allocate when
_GLIBCXX_FULLY_DYNAMIC_STRING == 0, so can be noexcept. The move
constructor and swap do not allocate when the allocators are equal, so
add conditional noexcept using allocator_traits::is_always_equal.

	PR libstdc++/58265
	* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
	[_GLIBCXX_FULLY_DYNAMIC_STRING==0] (basic_string::basic_string()):
	Add GLIBCXX_NOEXCEPT.
	(basic_string::operator=(basic_string&&)): Add _GLIBCXX_NOEXCEPT_IF
	to depend on the allocator's is_always_equal property (LWG 2063).
	(basic_string::swap(basic_string&)): Likewise.
	* include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
	(basic_string::swap(basic_string&)): Likewise.
	* testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
	Check is_nothrow_move_assignable.
	* testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
	Check is_nothrow_move_assignable.
	* testsuite/21_strings/basic_string/cons/char/
	noexcept_move_construct.cc: Likewise.
	* testsuite/21_strings/basic_string/cons/wchar_t/
	noexcept_move_construct.cc: Likewise.

From-SVN: r262443
2018-07-05 16:56:06 +01:00
Fritz Reese
245471c67f re PR fortran/83183 (Out of memory with option -finit-derived)
2018-07-05  Fritz Reese  <fritzoreese@gmail.com>

    gcc/fortran/ChangeLog:

	PR fortran/83183
	PR fortran/86325
	* expr.c (class_allocatable, class_pointer, comp_allocatable,
	comp_pointer): New helpers.
	(component_initializer): Generate EXPR_NULL for allocatable or pointer
	components. Do not generate initializers for components within BT_CLASS.
	Do not assign to comp->initializer.
	(gfc_generate_initializer): Use new helpers; move code to generate
	EXPR_NULL for class allocatable components into component_initializer().

    gcc/testsuite/ChangeLog:

	PR fortran/83183
	PR fortran/86325
	* gfortran.dg/init_flag_18.f90: New testcase.
	* gfortran.dg/init_flag_19.f03: New testcase.

From-SVN: r262442
2018-07-05 15:39:27 +00:00
Carl Love
5a1b56cc98 rs6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for float argument to VSX_BUILTIN_DOUBLEH_V4SF.
gcc/ChangeLog:

2018-07-05  Carl Love  <cel@us.ibm.com>

	* config/rs6000/rs6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for
	float argument to VSX_BUILTIN_DOUBLEH_V4SF.
	Map ALTIVEC_BUILTIN_VEC_UNPACKL for float argument to
	VSX_BUILTIN_DOUBLEL_V4SF.

gcc/testsuite/ChangeLog:

2018-07-05  Carl Love  <cel@us.ibm.com>
	* gcc.target/altivec-1-runnable.c: New test file.
	* gcc.target/altivec-2-runnable.c: New test file.
	* gcc.target/vsx-7.c (main2): Change expected expected instruction
	for tests.

From-SVN: r262439
2018-07-05 14:48:51 +00:00
Martin Sebor
715fcd73b6 PR tree-optimization/86400 - set<string>::set<char (*)[2]) constructor does not work with array argument
gcc/ChangeLog:
	* tree-ssa-strlen.c (maybe_set_strlen_range): Use type size rather
	than its domain to compute its the upper bound of a char array.

gcc/testsuite/ChangeLog:
	* gcc.dg/strlenopt-47.c: New test.
	* gcc.dg/strlenopt-48.c: New test.

From-SVN: r262438
2018-07-05 08:36:09 -06:00
Nathan Sidwell
09cff37bfd Replace NO_IMPLICIT_EXTERN_C with SYSTEM_IMPLICIT_EXTERN_C.
gcc/
	Replace NO_IMPLICIT_EXTERN_C with SYSTEM_IMPLICIT_EXTERN_C.
	* doc/cpp.texi: Update comment.
	* doc/tm.texi: Rebuilt.
	* doc/tm.texi.in (NO_IMPLICIT_EXTERN_C): Replace with ...
	(SYSTEM_IMPLICIT_EXTERN_C): ... this, opposite sense.
	* doc/extend.texi (Backwards Compatibility): Clarify it is system
	headers affected by extern "C".
	* system.h: Poison NO_IMPLICIT_EXTERN_C.
	* config/alpha/alpha.h, config/arm/uclinux-elf.h,
	config/bfin/elf.h, config/cris/cris.h, config/darwin.h,
	config/dragonfly.h, config/freebsd.h, config/gnu-user.h,
	config/i386/cygming.h, config/i386/djgpp.h, config/i386/nto.h,
	config/ia64/hpux.h, config/lm32/lm32.h, config/lm32/uclinux-elf.h,
	config/lynx.h, config/mips/elf.h, config/mmix/mmix.h,
	config/netbsd.h, config/pa/pa-hpux.h, config/powerpcspe/sysv4.h,
	config/riscv/elf.h, config/rs6000/sysv4.h, config/rtems.h,
	config/s390/tpf.h, config/sh/newlib.h, config/sol2.h,
	config/sparc/openbsd64.h, config/sparc/sp-elf.h,
	config/sparc/sp64-elf.h, config/spu/spu.h,
	config/stormy16/stormy16.h, config/v850/v850.h,
	config/visium/visium.h, config/vx-common.h, config/xtensa/elf.h: Don't
	define NO_IMPLICIT_EXTERN_C.
	* config/rs6000/aix.h: Set SYSTEM_IMPLICIT_EXTERN_C.

	gcc/c-family/
	* c-lex.c (fe_file_change): Check SYSTEM_IMPLICIT_EXTERN_C not
	NO_IMPLICIT_EXTERN_C.

	gcc/cp/
	* cp/decl.c (decls_match): Check SYSTEM_IMPLICIT_EXTERN_C not
	NO_IMPLICIT_EXTERN_C.
	* cp/parser.c (cp_parser_parameter_declaration_clause): Likewise.

From-SVN: r262437
2018-07-05 13:11:44 +00:00
Tamar Christina
6fc2658638 Fix can_change_mode_class for big-endian on Arm
gcc/

	PR target/84711
	* config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
	instead of GET_MODE_SIZE when comparing Units.
	
gcc/testsuite/

	PR target/84711
	* gcc.target/arm/big-endian-subreg.c: New.

From-SVN: r262436
2018-07-05 10:37:36 +00:00
Tamar Christina
d6e5a37a04 Correct subreg no-op handling for big-endian vec_select.
gcc/

	PR target/84711
	* rtlanal.c (set_noop_p): Constrain on mode change,
	include hard-reg-set.h

gcc/testuite/

	PR target/84711
	* gcc.dg/vect/pr84711.c: New.

From-SVN: r262435
2018-07-05 10:35:00 +00:00
Tamar Christina
89c52e5e2c Simplify movmem code by always doing overlapping copies when larger than 8 bytes on AArch64.
This changes the movmem code in AArch64 that does copy for data between 4 and 7
bytes to use the smallest possible mode capable of copying the remaining bytes in one
go and then overlapping the reads if needed.

This means that if we're copying 5 bytes we would issue an SImode and QImode
load instead of two SImode loads.

This does smaller memory accesses but also gives the mid-end a chance to realise
that it can CSE the loads in certain circumstances. e.g. when you have something
like

return foo;

where foo is a struct. This would be transformed by the mid-end into SSA form as

D.XXXX = foo;

return D.XXXX;

This movmem routine will handle the first copy, but it's usually not needed,
the mid-end would do SImode and QImode stores into X0 for the 5 bytes example
but without the first copies being in the same mode, it doesn't know it doesn't
need the stores at all.

From-SVN: r262434
2018-07-05 10:31:04 +00:00
Jakub Jelinek
bdfc619ed8 Revert
2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>

	PR sanitizer/84250
	* config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
	libasan.
	* gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.

	* Makefile.am: Reorder libs.
	* Makefile.in: Regenerate.
	* asan/Makefile.am: Define DCAN_SANITIZE_UB=1, add dependancy from
	libsanitizer_ubsan.la.
	* asan/Makefile.in: Regenerate.
	* ubsan/Makefile.am: Define new libsanitizer_ubsan.la library.
	* ubsan/Makefile.in: Regenerate.

From-SVN: r262433
2018-07-05 11:47:05 +02:00
Christophe Lyon
c98446bc37 [testsuite] Remove 'note:' from scan-tree-dump directives
2018-07-05  Christophe Lyon  <christophe.lyon@linaro.org>

	* c-c++-common/unroll-1.c: Remove 'note:' in matching string.
	* c-c++-common/unroll-2.c: Likewise.
	* g++.dg/cdce3.C: Likewise.
	* g++.dg/ext/unroll-1.C: Likewise.
	* g++.dg/ext/unroll-2.C: Likewise.
	* g++.dg/ext/unroll-3.C: Likewise.
	* gcc.dg/cdce1.c: Likewise.
	* gcc.dg/cdce2.c: Likewise.
	* gcc.dg/gomp/pr68128-1.c: Likewise.
	* gcc.dg/vect/pr46032.c: Likewise.
	* gcc.dg/vect/vect-cond-10.c: Likewise.
	* gcc.dg/vect/vect-cond-8.c: Likewise.
	* gcc.dg/vect/vect-cond-9.c: Likewise.
	* gcc.dg/vect/vect-mask-load-1.c: Likewise.
	* gcc.dg/vect/vect-mask-loadstore-1.c: Likewise.
	* gcc.target/i386/avx-cvt-2.c: Likewise.
	* gcc.target/i386/avx-cvt-3.c: Likewise.
	* gcc.target/i386/avx2-cvt-2.c: Likewise.
	* gcc.target/i386/avx2-gather-2.c: Likewise.
	* gcc.target/i386/avx2-gather-6.c: Likewise.
	* gcc.target/i386/avx512f-gather-2.c: Likewise.
	* gcc.target/i386/sse2-cvt-2.c: Likewise.
	* gfortran.dg/directive_unroll_1.f90: Likewise.
	* gfortran.dg/directive_unroll_2.f90: Likewise.
	* gnat.dg/unroll2.adb: Likewise.
	* gnat.dg/unroll3.adb: Likewise.

From-SVN: r262432
2018-07-05 11:10:55 +02:00
Tom de Vries
ab7f778cee [testsuite] Simplify dg-final
2018-07-05  Tom de Vries  <tdevries@suse.de>

	* lib/gcc-dg.exp (dg-final): Simplify tcl code.

From-SVN: r262431
2018-07-05 08:19:15 +00:00
François Dumont
d3fc820eb9 Fix my yesterday ChangeLog entry.
From-SVN: r262429
2018-07-05 04:57:52 +00:00
GCC Administrator
e365d8d831 Daily bump.
From-SVN: r262428
2018-07-05 00:16:59 +00:00
Jonathan Wakely
ef45724acd P0646R1 Improving the Return Value of Erase-Like Algorithms I
In C++2a the remove, remove_if and unique members of std::list and
std::forward_list have been changed to return the number of elements
removed. This is an ABI change for the remove members and the
non-template unique members, so an abi-tag is used to give those symbols
new mangled names in C++2a mode. For the function templates the return
type is part of the mangled name so no abi-tag is needed.

	* include/bits/forward_list.h (__cpp_lib_list_remove_return_type):
	Define.
	(forward_list::__remove_return_type): Define typedef as size_type or
	void, according to __cplusplus value.
	(_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
	empty, according to __cplusplus value.
	(forward_list::remove, forward_list::unique): Use typedef and macro
	to change return type and add abi-tag for C++2a.
	(forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
	typedef to change return type for C++2a.
	* include/bits/forward_list.tcc (_GLIBCXX20_ONLY): Define macro.
	(forward_list::remove, forward_list::remove_if<Pred>)
	(forward_list::unique<BinPred>): Return number of removed elements
	for C++2a.
	* include/bits/list.tcc (_GLIBCXX20_ONLY): Define macro.
	(list::remove, list::unique, list::remove_if<Predicate>)
	(list::unique<BinaryPredicate>): Return number of removed elements
	for C++2a.
	* include/bits/stl_list.h (__cpp_lib_list_remove_return_type): Define.
	(list::__remove_return_type): Define typedef as size_type or
	void, according to __cplusplus value.
	(_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
	empty, according to __cplusplus value.
	(list::remove, list::unique): Use typedef and macro to change return
	type and add abi-tag for C++2a.
	(list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use
	typedef to change return type for C++2a.
	* include/std/version (__cpp_lib_list_remove_return_type): Define.
	* testsuite/23_containers/forward_list/operations/
	remove_cxx20_return.cc: New.
	* testsuite/23_containers/forward_list/operations/
	unique_cxx20_return.cc: New.

From-SVN: r262423
2018-07-04 21:15:01 +01:00
Maxim Ostapenko
ca8dd9f274 re PR sanitizer/84250 (Symbol collision when using both Address and Undefined Behavior sanitizers (-fsanitize=address,undefined))
gcc/

2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>

	PR sanitizer/84250
	* config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
	libasan.
	* gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.

libsanitizer/

2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>

	PR sanitizer/84250
	* Makefile.am: Reorder libs.
	* Makefile.in: Regenerate.
	* asan/Makefile.am: Define DCAN_SANITIZE_UB=1, add dependancy from
	libsanitizer_ubsan.la.
	* asan/Makefile.in: Regenerate.
	* ubsan/Makefile.am: Define new libsanitizer_ubsan.la library.
	* ubsan/Makefile.in: Regenerate.

From-SVN: r262421
2018-07-04 22:49:06 +03:00
Ville Voutilainen
a617812f14 re PR c++/86398 (is_trivially_constructible always returns true even when is_constructible returns false)
PR c++/86398

gcc/cp/

PR c++/86398
* method.c (is_trivially_xible): Return false
if is_xible_helper returns a NULL_TREE.

testsuite/

PR c++/86398
* g++.dg/ext/is_trivially_constructible1.C: Add new tests.

From-SVN: r262420
2018-07-04 22:21:38 +03:00
Martin Sebor
86b664c0a9 re PR tree-optimization/86274 (SEGFAULT when logging std::to_string(NAN))
gcc/testsuite/ChangeLog:

	PR tree-optimization/86274
	* gcc.dg/tree-ssa/builtin-sprintf-9.c: Fix typo.

From-SVN: r262419
2018-07-04 12:58:51 -06:00
Jonathan Wakely
3adea09eea P0458R2 Checking for Existence of an Element in Associative Containers
* include/bits/stl_map.h (map::contains): Add for C++2a.
	* include/bits/stl_multimap.h (multimap::contains): Likewise.
	* include/bits/stl_multiset.h (multiset::contains): Likewise.
	* include/bits/stl_set.h (set::contains): Likewise.
	* include/bits/stl_tree.h (__has_is_transparent_t): Define alias.
	(_Rb_tree::_M_find_tr, _Rb_tree::_M_count_tr)
	(_Rb_tree::_M_lower_bound_tr, _Rb_tree::_M_upper_bound_tr)
	(_Rb_tree::_M_equal_range_tr): Use __has_is_transparent_t.
	* include/bits/unordered_map.h (unordered_map::contains)
	(unordered_multimap::contains): Add for C++2a.
	* include/bits/unordered_set.h (unordered_set::contains)
	(unordered_multiset::contains): Likewise.
	* testsuite/23_containers/map/operations/contains.cc: New.
	* testsuite/23_containers/multimap/operations/contains.cc: New.
	* testsuite/23_containers/multiset/operations/contains.cc: New.
	* testsuite/23_containers/set/operations/contains.cc: New.
	* testsuite/23_containers/unordered_map/operations/contains.cc: New.
	* testsuite/23_containers/unordered_multimap/operations/contains.cc:
	New.
	* testsuite/23_containers/unordered_multiset/operations/contains.cc:
	New.
	* testsuite/23_containers/unordered_set/operations/contains.cc: New.

From-SVN: r262418
2018-07-04 19:16:26 +01:00
François Dumont
96eb9df619 re PR libstdc++/86272 (__gnu_debug::string uses undefined __glibcxx_check_insert_range2)
2018-07-04  François Dumont  <fdumont@gcc.gnu.org>

	PR libstdc++/86272
	* include/debug/string
	(__gnu_debug::basic_string<>::insert<_Ite>(const_iterator, _Ite, _Ite)):
	Use __glibcxx_check_insert_range.
	* 21_strings/basic_string/cons/char/1.cc: Adapt test to use
	__gnu_debug::string when _GLIBCXX_DEBUG.
	* 21_strings/basic_string/init-list.cc: Likewise.
	* 21_strings/basic_string/modifiers/insert/char/1.cc: Likewise.
	* 21_strings/basic_string/modifiers/insert/char/2.cc: Likewise.
	* 21_strings/basic_string/modifiers/insert/char/83328.cc: Likewise.
	* 21_strings/basic_string/types/1.cc: Likewise.

From-SVN: r262417
2018-07-04 18:13:11 +00:00
Jerry DeLisle
fa9371cae0 re PR fortran/82009 ([F08] ICE with block construct)
2018-07-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/82009
	* trans-decl.c (gfc_process_block_locals): Delete assert and set
	saved_local_decls = NULL_TREE.

	* gfortran.dg/block_16.f08. New test.

From-SVN: r262416
2018-07-04 18:08:16 +00:00
Jonathan Wakely
89bc4ab198 Define "random_device" effective target
Currently only matches targets where _GLIBCXX_USE_RANDOM_TR1 is defined,
which means /dev/random and /dev/urandom are usable.

	* testsuite/25_algorithms/make_heap/complexity.cc: Require effective
	target for std::random_device.
	* testsuite/26_numerics/random/random_device/cons/default.cc:
	Likewise.
	* testsuite/experimental/algorithm/sample-2.cc: Likewise.
	* testsuite/experimental/algorithm/shuffle.cc: Likewise.
	* testsuite/experimental/random/randint.cc: Likewise.
	* testsuite/lib/libstdc++.exp
	(check_effective_target_random_device): New proc.

From-SVN: r262415
2018-07-04 17:56:21 +01:00
Jonathan Wakely
4e4120a27a Fix std::__rotl and std::__rotr
2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* include/std/bit (__rotl, __rotr): Fix for non-power of two sizes.

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

From-SVN: r262414
2018-07-04 15:31:56 +01:00
Eric Botcazou
04f8c98c51 re PR middle-end/86380 (incorrect comparison in function choose_multiplier)
PR middle-end/86380
	* expmed.c (choose_multiplier): Fix incorrect comparison with mask.

From-SVN: r262401
2018-07-04 12:56:48 +00:00
Martin Jambor
aacd59e751 Remove spurious $HOME include from BRIG FE Makefile
2018-07-04  Martin Jambor  <mjambor@suse.cz>

	PR hsa/86371
	* Make-lang.in (BRIGINCLUDES): Remove erroneous include path in $HOME.

From-SVN: r262398
2018-07-04 14:08:16 +02:00
Aldy Hernandez
3d4a2c6408 tree-vrp.c (extract_range_from_binary_expr_1): Initialze neg_*_op* variables.
* tree-vrp.c (extract_range_from_binary_expr_1): Initialze
       neg_*_op* variables.

From-SVN: r262380
2018-07-04 09:03:35 +00:00
Jonathan Wakely
e9029d55f2 PR libstdc++/86398 fix std::is_trivially_constructible regression
The intrinsic doesn't check for allowed conversions between scalar
types, so restore the std::is_constructible check.

Also make some trivial whitespace changes.

	PR libstdc++/86398
	* include/std/type_traits (is_trivially_constructible): Check
	is_constructible before __is_trivially_constructible.
	* testsuite/20_util/is_trivially_constructible/value.cc: Add more
	tests, including negative cases.
	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Use
	zero for dg-error lineno.
	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
	Likewise.

From-SVN: r262379
2018-07-04 10:03:18 +01:00
Jonathan Wakely
90fc44ecfa Optimize std::rotl and std::rotr, add test for std::popcount
* include/std/bit (__rotl, __rotr): Avoid branch.
	(_If_is_unsigned_integer): Use remove_cv_t.
	* testsuite/26_numerics/bit/bitops.count/popcount.cc: New.

From-SVN: r262378
2018-07-04 09:07:23 +01:00
Aldy Hernandez
6e38deee46 ssa-dom-thread-7.c: Adjust test because aarch64 has a slightly different IL that provides more...
* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Adjust test because aarch64
	has a slightly different IL that provides more threading
	opportunities.

From-SVN: r262377
2018-07-04 08:04:55 +00:00
Martin Liska
175b7dd42a Fix bootstrap on ia64 with old GCC version.
2018-07-04  Martin Liska  <mliska@suse.cz>

	* tree-switch-conversion.c: Define
        max_ratio_for_speed and max_ratio_for_size constants.

From-SVN: r262376
2018-07-04 07:53:05 +00:00
Martin Liska
c518c1025b [multiple changes]
2018-07-04  Denys Vlasenko  <dvlasenk@redhat.com>
	    Martin Liska  <mliska@suse.cz>

	PR middle-end/66240
	PR target/45996
	PR c/84100
	* common.opt: Rename align options with 'str_' prefix.
	* common/config/i386/i386-common.c (set_malign_value): New
	function.
	(ix86_handle_option): Use it to set -falign-* options/
	* config/aarch64/aarch64-protos.h (struct tune_params): Change
	type from int to string.
	* config/aarch64/aarch64.c: Update default values from int
	to string.
	* config/alpha/alpha.c (alpha_override_options_after_change):
	Likewise.
	* config/arm/arm.c (arm_override_options_after_change_1): Likewise.
	* config/i386/dragonfly.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
	max skip conditionally.
	* config/i386/freebsd.h (SUBALIGN_LOG): New.
	(ASM_OUTPUT_MAX_SKIP_ALIGN): Print
	max skip conditionally.
	* config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
	max skip conditionally.
	* config/i386/gnu-user.h (SUBALIGN_LOG): New.
	(ASM_OUTPUT_MAX_SKIP_ALIGN): Print
	max skip conditionally.
	* config/i386/i386.c (struct ptt): Change type from int to
	string.
	(ix86_default_align): Set default values.
	* config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Print
	max skip conditionally.
	* config/i386/iamcu.h (SUBALIGN_LOG): New.
	(ASM_OUTPUT_MAX_SKIP_ALIGN):
	* config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN):
	* config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
	max skip conditionally.
	* config/i386/openbsdelf.h (SUBALIGN_LOG): New.
	(ASM_OUTPUT_MAX_SKIP_ALIGN) Print max skip conditionally.:
	* config/i386/x86-64.h (SUBALIGN_LOG): New.
	(ASM_OUTPUT_MAX_SKIP_ALIGN): Print
	max skip conditionally.
	(ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
	* config/ia64/ia64.c (ia64_option_override): Set default values
        for alignment options.
	* config/m68k/m68k.c: Handle new str_align_* options.
	* config/mips/mips.c (mips_set_compression_mode): Change
	type of constants.
	(mips_option_override): Set default values for options.
	* config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
        Likewise.
	* config/rs6000/rs6000.c (rs6000_option_override_internal):
	Likewise.
	* config/rx/rx.c (rx_option_override): Likewise.
	* config/rx/rx.h (JUMP_ALIGN): Use align_jumps_log.
	(LABEL_ALIGN): Use align_labels_log.
	(LOOP_ALIGN): Use align_loops_align.
	* config/s390/s390.c (s390_asm_output_function_label): Use new
        macros.
	* config/sh/sh.c (sh_override_options_after_change):
	Change type of constants.
	* config/spu/spu.c (spu_sched_init): Likewise.
	* config/sparc/sparc.c (sparc_option_override): Set default
        values for options.
	* config/visium/visium.c (visium_option_override): Likewise.
	* config/visium/visium.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Do not
        emit p2align format with last argument if it's not needed.
	* doc/invoke.texi: Document extended format of -falign-*.
	* final.c: Use align_labels alignment.
	* flags.h (struct target_flag_state): Change type to use
	align_flags.
	(struct align_flags_tuple): New.
	(struct align_flags): Likewise.
	(align_loops_log): Redefine macro to use new types.
	(align_loops_max_skip): Redefine macro to use new types.
	(align_jumps_log): Redefine macro to use new types.
	(align_jumps_max_skip): Redefine macro to use new types.
	(align_labels_log): Redefine macro to use new types.
	(align_labels_max_skip): Redefine macro to use new types.
	(align_functions_log): Redefine macro to use new types.
	(align_loops): Redefine macro to use new types.
	(align_jumps): Redefine macro to use new types.
	(align_labels): Redefine macro to use new types.
	(align_functions): Redefine macro to use new types.
	(align_functions_max_skip): Redefine macro to use new types.
	(align_loops_value): New macro.
	(align_jumps_value): New macro.
	(align_labels_value): New macro.
	(align_functions_value): New macro.
	* function.c (invoke_set_current_function_hook): Propagate
	alignment values from flags to global variables default in
	topleev.h.
	* ipa-icf.c (sem_function::equals_wpa): Use
	cl_optimization_option_eq instead of memcmp.
	* lto-streamer.h (cl_optimization_stream_out): Support streaming
	of string types.
	(cl_optimization_stream_in): Likewise.
	* optc-save-gen.awk: Support strings in cl_optimization.
	* opth-gen.awk: Likewise.
	* opts.c (finish_options): Remove error checking of invalid
	value ranges.
	(MAX_CODE_ALIGN): Remove.
	(MAX_CODE_ALIGN_VALUE): Likewise.
	(parse_and_check_align_values): New function.
	(check_alignment_argument): Likewise.
	(common_handle_option): Use check_alignment_argument.
	* opts.h (parse_and_check_align_values): Declare.
	* toplev.c (init_alignments): Remove.
	(read_log_maxskip): New.
	(parse_N_M): Likewise.
	(parse_alignment_opts): Likewise.
	(backend_init_target): Remove usage of init_alignments.
	* toplev.h (parse_alignment_opts): Declare.
	* tree-streamer-in.c (streamer_read_tree_bitfields): Add new
	argument.
	* tree-streamer-out.c (streamer_write_tree_bitfields): Likewise.
	* tree.c (cl_option_hasher::equal): New.
	* varasm.c: Use new global macros.
2018-07-04  Martin Liska  <mliska@suse.cz>

	PR middle-end/66240
	PR target/45996
	PR c/84100
	* lto.c (compare_tree_sccs_1): Use cl_optimization_option_eq
	instead of memcmp.
2018-07-04  Martin Liska  <mliska@suse.cz>

	PR middle-end/66240
	PR target/45996
	PR c/84100
	* gcc.dg/pr84100.c (foo):
	* gcc.target/i386/falign-functions-2.c: New test.
	* gcc.target/i386/falign-functions.c: New test.

From-SVN: r262375
2018-07-04 07:51:08 +00:00
Denys Vlasenko
dd047c67e4 Temporary remove "at least 8 byte alignment" code from x86
2018-07-04  Denys Vlasenko  <dvlasenk@redhat.com>

	* config/i386/dragonfly.h: (ASM_OUTPUT_MAX_SKIP_ALIGN):
	Use a simpler align directive also if MAXSKIP = ALIGN-1.
	* config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
	* config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
	* config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
	* config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
	* config/i386/freebsd.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Remove "If N
	is large, do at least 8 byte alignment" code. Add SUBALIGN_LOG
	define. Use a simpler align directive also if MAXSKIP = ALIGN-1.
	* config/i386/gnu-user.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
	* config/i386/iamcu.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
	* config/i386/openbsdelf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
	* config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.

From-SVN: r262374
2018-07-04 07:35:37 +00:00