Commit Graph

162569 Commits

Author SHA1 Message Date
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
Martin Liska 7709f595ef Fix DOS-based system build and fix documentation.
2018-07-04  Martin Liska  <mliska@suse.cz>
            Jonathan Wakely  <jwakely@redhat.com>

	* coverage.c: Use correct type.
	* doc/invoke.texi: Language correction.

Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>

From-SVN: r262373
2018-07-04 07:32:16 +00:00
Martin Liska f45eb40805 Remove legacy testcase for -fprofile-generate=./
2018-07-04  Martin Liska  <mliska@suse.cz>

	* gcc.dg/pr47793.c: Remove.

From-SVN: r262372
2018-07-04 07:31:27 +00:00
Richard Sandiford bb263b556e Fix typo in bb-slp-over-widen-*.c
2018-07-04  Richard Sandiford  <richard.sandiford@arm.com>

gcc/testsuite/
	* gcc.dg/vect/bb-slp-over-widen-1.c: Fix name of dump file for
	final scan test.
	* gcc.dg/vect/bb-slp-over-widen-2.c: Likewise.

From-SVN: r262371
2018-07-04 07:18:04 +00:00
H.J. Lu ebaa4deaf9 i386: Add indirect_return function attribute
On x86, swapcontext may return via indirect branch when shadow stack
is enabled.  To support code instrumentation of control-flow transfers
with -fcf-protection, add indirect_return function attribute to inform
compiler that a function may return via indirect branch.

Note: Unlike setjmp, swapcontext only returns once.  Mark it return
twice will unnecessarily disable compiler optimization as shown in
the testcase here.

gcc/

	PR target/85620
	* config/i386/i386.c (rest_of_insert_endbranch): Also generate
	ENDBRANCH for non-tail call which may return via indirect branch.
	* doc/extend.texi: Document indirect_return attribute.

gcc/testsuite/

	PR target/85620
	* gcc.target/i386/pr85620-1.c: New test.
	* gcc.target/i386/pr85620-2.c: Likewise.
	* gcc.target/i386/pr85620-3.c: Likewise.
	* gcc.target/i386/pr85620-4.c: Likewise.

From-SVN: r262370
2018-07-03 20:01:33 -07:00
Jeff Law 7422f0ff39 h8300.md (logical<mode>3_sn, [...]): Merge into a single pattern.
* config/h8300/h8300.md (logical<mode>3_sn, logical<mode>3): Merge
        into a single pattern.

From-SVN: r262369
2018-07-03 20:22:35 -06:00
Martin Sebor 7af7cb515f PR tree-optimization/86274 - SEGFAULT when logging std::to_string(NAN)
gcc/ChangeLog:

	PR tree-optimization/86274
	* gimple-ssa-sprintf.c (fmtresult::type_max_digits): Verify
	precondition.
	(format_floating): Correct handling of infinities and NaNs.

gcc/testsuite/ChangeLog:

	PR tree-optimization/86274
	* gcc.dg/tree-ssa/builtin-sprintf-9.c: New test.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-10.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-15.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-7.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf.c: Same.
	* gcc.dg/tree-ssa/pr83198.c: Same.

From-SVN: r262368
2018-07-03 20:19:35 -06:00
Martin Sebor 68a8b147ef print-tree.c (print_real_cst): New function.
gcc/ChangeLog:

	* print-tree.c (print_real_cst): New function.
	(print_node_brief): Call it.
	(print_node): Ditto.

From-SVN: r262367
2018-07-03 20:14:16 -06:00
Jeff Law ec4692b4a5 h8300.md (ors code_iterator): New.
* config/h8300/h8300.md (ors code_iterator): New.
	(bsetqi_msx, bnotqi_msx patterns and splitters): Consolidate into
	a single pattern and single splitter.
	(bsethi_msx, bnothi_msx patterns): Consolidate into a single pattern.
	(iorqi3_1, xorqi3_1): Likewise.
	(iorqi3, xorqi3 expanders): Similarly.

From-SVN: r262366
2018-07-03 19:03:52 -06:00
Jeff Law fae7e83445 h8300.md (movmd_internal_normal): Consolidated with (movmd_internal) into a single pattern using the P mode iterator.
* config/h8300/h8300.md (movmd_internal_normal): Consolidated with
	(movmd_internal) into a single pattern using the P mode iterator.
	(movmd splitters): Similarly.
	(stpcpy_internal_normal, stpcpy_internal): Similarly for thes patterns.
	(movsd splitters): Similarly.

From-SVN: r262365
2018-07-03 18:27:38 -06:00
GCC Administrator f1ee57639d Daily bump.
From-SVN: r262364
2018-07-04 00:17:01 +00:00
Jonathan Wakely f3e91052bd P0556R3 Integral power-of-2 operations, P0553R2 Bit operations
P0553R2 is not in the C++2a working draft yet, but is likely to be
approved soon. Neither proposal supports std::byte but this adds
overloads of each function for std::byte, assuming that will also get
added.

	* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* include/precompiled/stdc++.h: Include new header.
	* include/std/bit: New header.
	(__rotl, __rotr, __countl_zero, __countl_one, __countr_zero)
	(__countr_one, __popcount, __ispow2, __ceil2, __floor2, __log2p1):
	Define for C++14.
	[!__STRICT_ANSI__] (rotl, rotr, countl_zero, countl_one, countr_zero)
	(countr_one, popcount): Define for C++2a. Also overload for std::byte.
	(ispow2, ceil2, floor2, log2p1): Define for C++2a.
	[!__STRICT_ANSI__] (ispow2, ceil2, floor2, log2p1): Overload for
	std::byte.
	* testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: New.
	* testsuite/26_numerics/bit/bit.pow.two/floor2.cc: New.
	* testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: New.
	* testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: New.
	* testsuite/26_numerics/bit/bitops.rot/rotl.cc: New.
	* testsuite/26_numerics/bit/bitops.rot/rotr.cc: New.
	* testsuite/26_numerics/bit/bitops.count/countl_one.cc: New.
	* testsuite/26_numerics/bit/bitops.count/countl_zero.cc: New.
	* testsuite/26_numerics/bit/bitops.count/countr_one.cc: New.
	* testsuite/26_numerics/bit/bitops.count/countr_zero.cc: New.

From-SVN: r262360
2018-07-03 22:04:45 +01:00
Jonathan Wakely cf3e6e9f15 Remove redundant #if conditional
The whole file is guarded by the same check already.

	* include/bits/alloc_traits.h: Remove redundant preprocessor
	condition.

From-SVN: r262359
2018-07-03 22:04:37 +01:00
Paolo Carlini 2dac4037aa decl.c (min_location): New.
/cp
2018-07-03  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (min_location): New.
	(smallest_type_quals_location): Use the latter.
	(check_concept_fn): Use DECL_SOURCE_LOCATION.
	(grokdeclarator): Use accurate locations in a number of error
	messages involving ds_thread, ds_storage_class, ds_virtual,
	ds_constexpr, ds_typedef and ds_friend; exploit min_location.

/testsuite
2018-07-03  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/other/locations1.C: New.
	* g++.dg/tls/locations1.C: Likewise.
	* g++.dg/diagnostic/virtual-constexpr.C: Likewise.
	* g++.dg/diagnostic/virtual-static.C: Likewise.
	* g++.dg/concepts/fn-concept2.C: Test the locations too.
	* g++.dg/cpp0x/constexpr-virtual5.C: Likewise.
	* g++.dg/cpp0x/pr51463.C: Likewise.
	* g++.dg/other/typedef1.C: Likewise.
	* g++.dg/parse/dtor13.C: Likewise.
	* g++.dg/template/error44.C: Likewise.
	* g++.dg/template/typedef4.C: Likewise.
	* g++.dg/template/typedef5.C: Likewise.
	* g++.dg/tls/diag-2.C: Likewise.
	* g++.old-deja/g++.brendan/crash11.C: Likewise.

From-SVN: r262358
2018-07-03 21:03:51 +00:00
Jeff Law c3c3ddbbcc h8300.c (h8300_insn_length_from_table): Consolidate ADDB...
* config/h8300/h8300.c (h8300_insn_length_from_table): Consolidate
	ADDB, ADDW and ADDL into a single ADD attribute which selects the
	right table based on the size of the operand.
	* config/h8300/h8300.md (length_table): Corresponding changes. All
	references to "addb", "addw" and "addl" changed to "add".
	(btst patterns): Merge two variants into a single pattern.
	(tstqi, tsthi): Likewise.
	(addhi3_incdec, addsi3_incdec): Likewise.
	(subhi3_h8300hs, subsi3_h8300hs): Likewise.
	(mulhi3, mulsi3): Likewise.
	(udivhi3, udivsi3): Likewise.
	(divhi3, divsi3): Likewise.
	(andorqi3, andorhi3, andorsi3): Likewise.

From-SVN: r262357
2018-07-03 13:37:41 -06:00
Uros Bizjak 15333be70a re PR tree-optimization/85694 (Generation of vectorized AVG (Average) instruction)
PR target/85694
	* config/i386/sse.md (uavg<mode>3_ceil): New expander.
	(<sse2_avx2>_uavg<mode>3<mask_name>): Simplify expander.

testsuite/ChangeLog:

	PR target/85694
	* gcc.target/i386/pr85694.c: New test.

From-SVN: r262354
2018-07-03 19:33:28 +02:00