Commit Graph

164562 Commits

Author SHA1 Message Date
Martin Liska 3239d72683 Revert partially changes from r265454 (PR other/87735).
2018-10-25  Martin Liska  <mliska@suse.cz>

	PR other/87735
	* gcc.dg/tree-prof/time-profiler-1.c: Revert.
	* gcc.dg/tree-prof/time-profiler-2.c: Likewise.
	* gcc.dg/tree-prof/time-profiler-3.c: Likewise.
2018-10-25  Martin Liska  <mliska@suse.cz>

	PR other/87735
	* libgcov-profiler.c: Revert.

From-SVN: r265494
2018-10-25 15:36:12 +00:00
Jonathan Wakely 71e093897c PR libstdc++/87749 fix (and optimize) string move construction
The move constructor for the SSO string uses assign(const basic_string&)
when either:

(1) the source string is "local" and so the contents of the small string
buffer need to be copied, or

(2) the allocator does not propagate and is_always_equal is false.

Case (1) is suboptimal, because the assign member is not noexcept and
the compiler isn't smart enough to see it won't actually throw in this
case. This causes extra code in the move assignment operator so that any
exception will be turned into a call to std::terminate. This can be
fixed by copying small strings inline instead of calling assign.

Case (2) is a bug, because the specific instances of the allocators
could be equal even if is_always_equal is false. This can result in an
unnecessary deep copy (and potentially-throwing allocation) when the
storage should be moved. This can be fixed by simply checking if the
allocators are equal.

	PR libstdc++/87749
	* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
	(basic_string::operator=(basic_string&&)): For short strings copy the
	buffer inline. Only fall back to using assign(const basic_string&) to
	do a deep copy when reallocation is needed.
	* testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc:
	New test.
	* testsuite/21_strings/basic_string/modifiers/assign/char/
	move_assign_optim.cc: New test.
	* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc:
	New test.
	* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
	move_assign_optim.cc: New test.

From-SVN: r265493
2018-10-25 16:34:04 +01:00
Jan Hubicka 1afca3f426 ipa-devirt.c (main_odr_variant): Remove.
* ipa-devirt.c (main_odr_variant): Remove.
	(hash_odr_name, types_same_for_odr, types_odr_comparable,
	odr_name_hasher::equal, odr_subtypes_equivalent_p):
	Drop use of main_odr_variant.
	(add_type_duplicate): Silence confused warnings on integer types.
	(get_odr_type): Always look for main variant.
	(register_odr_type): Simplify.

From-SVN: r265492
2018-10-25 14:33:27 +00:00
Richard Biener 303d8f7792 tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Initialize ng to silence error with release checking bootstrap.
2018-10-25  Richard Biener  <rguenther@suse.de>

	* tree-vect-data-refs.c (vect_analyze_data_ref_accesses):
	Initialize ng to silence error with release checking bootstrap.

From-SVN: r265491
2018-10-25 14:28:18 +00:00
Ilya Leoshkevich b6f517556c S/390: Merge movdi_larl into movdi_64
Consider the following RTL:

(insn (set (mem/f/c:DI (reg/f:DI 60))
           (const:DI (plus:DI (symbol_ref:DI ("*.LANCHOR0"))
                              (const_int 8)))))

generated by cse2 pass.  It is matched to movdi_64, resulting in
the following inefficient code:

	larl	%r5,.L6			# Load literal pool@
	lg	%r1,.L7-.L6(%r5)	# Load .LANCHOR0+8
	stgrl	%r1,.LANCHOR0
	br	%r14

Matching it to movdi_larl improves the code, eliminating one
instruction and the literal pool entry:

	larl	%r1,.LANCHOR0+8
	stgrl	%r1,.LANCHOR0
	br	%r14

Taking it one step further, there is no reason to keep movdi_64 and
movdi_larl separate, since this could potentially improve code in other
ways by giving lra one more alternative to choose from.

gcc/ChangeLog:

2018-10-25  Ilya Leoshkevich  <iii@linux.ibm.com>

	* config/s390/constraints.md (ZL): New constraint.
	* config/s390/s390.c (legitimate_pic_operand_p): Accept LARL
	operands.
	* config/s390/s390.md (movdi_larl): Remove.
	(movdi_64): Add the LARL alternative.

gcc/testsuite/ChangeLog:

2018-10-25  Ilya Leoshkevich  <iii@linux.ibm.com>

	* gcc.target/s390/global-array-almost-huge-element.c: New test.
	* gcc.target/s390/global-array-almost-negative-huge-element.c: New test.
	* gcc.target/s390/global-array-element-pic.c: New test.
	* gcc.target/s390/global-array-even-element.c: New test.
	* gcc.target/s390/global-array-huge-element.c: New test.
	* gcc.target/s390/global-array-negative-huge-element.c: New test.
	* gcc.target/s390/global-array-odd-element.c: New test.

From-SVN: r265490
2018-10-25 14:23:31 +00:00
Richard Biener 4dd7c0dcd8 tree-if-conv.c: Include tree-ssa-sccvn.h.
2018-10-25  Richard Biener  <rguenther@suse.de>

	* tree-if-conv.c: Include tree-ssa-sccvn.h.
	(tree_if_conversion): Run CSE on the if-converted loop body.

From-SVN: r265489
2018-10-25 14:03:24 +00:00
Ilya Leoshkevich cd747405e4 Fix rtx_code_size static initialization order fiasco
r264556 and r264537 changed the format of EQ_ATTR_ALT RTXs to "ww",
which also required adjusting rtx_code_size initializer.  In order to
simplify things, the list of rtx_codes known to use HOST_WIDE_INTs was
replaced by the format string check.  However, unlike the old one, this
new check cannot be always performed at compile time, in which case a
static constructor is generated.  This may lead to a static
initialization order fiasco with respect to other static constructors
in the compiler, in case of PR87747, cselib's pool_allocator.

gcc/ChangeLog:

2018-10-25  Ilya Leoshkevich  <iii@linux.ibm.com>

	PR bootstrap/87747
	* rtl.c (RTX_CODE_HWINT_P_1): New helper macro.
	(RTX_CODE_HWINT_P): New macro.
	(rtx_code_size): Use RTX_CODE_HWINT_P ().

From-SVN: r265488
2018-10-25 13:47:10 +00:00
Marc Glisse 0f317ef762 Relocation (= move+destroy)
2018-10-25  Marc Glisse  <marc.glisse@inria.fr>

	PR libstdc++/87106
	* include/bits/alloc_traits.h (_S_construct, _S_destroy, construct,
	destroy): Add noexcept specification.
	* include/bits/allocator.h (construct, destroy): Likewise.
	* include/ext/alloc_traits.h (construct, destroy): Likewise.
	* include/ext/malloc_allocator.h (construct, destroy): Likewise.
	* include/ext/new_allocator.h (construct, destroy): Likewise.
	* include/bits/stl_uninitialized.h (__relocate_object_a, __relocate_a,
	__relocate_a_1): New functions.
	(__is_trivially_relocatable): New class.
	* include/bits/stl_vector.h (__use_relocate): New static member.
	* include/bits/vector.tcc (reserve, _M_realloc_insert,
	_M_default_append): Use __relocate_a.
	(reserve, _M_assign_aux, _M_realloc_insert, _M_fill_insert,
	_M_default_append, _M_range_insert): Move _GLIBCXX_ASAN_ANNOTATE_REINIT
	after _Destroy.
	* testsuite/23_containers/vector/modifiers/push_back/49836.cc:
	Replace CopyConsOnlyType with DelAnyAssign.

From-SVN: r265485
2018-10-25 13:03:13 +00:00
Jan Hubicka 09d3f04eae ipa-devirt.c (odr_types_equivalent_p): Do not ICE if one of types is anonymous.
* ipa-devirt.c (odr_types_equivalent_p): Do not ICE if one of types
	is anonymous.
	* g++.dg/lto/odr-1_0.C: New test.
	* g++.dg/lto/odr-1_1.C: New test.

From-SVN: r265484
2018-10-25 12:18:28 +00:00
Thomas Preud'homme 46ec926100 dg-cmp-results: display NA->FAIL & NA->UNRESOLVED by default
Currently, dg-cmp-results will not print anything for a test that was
not run before, even if it is a FAIL or UNRESOLVED now. This means that
when contributing a code change together with a testcase in the same
commit one must run dg-cmp-results twice: once to check for regression
on a full testsuite run and once against the new testcase with -v -v.
This also prevents using dg-cmp-results on sum files generated with
test_summary since these would not contain PASS.

This patch changes dg-cmp-results to print NA->FAIL and NA->UNRESOLVED
changes by default.

2018-10-25  Thomas Preud'homme  <thomas.preudhomme@linaro.org>

    contrib/
    * dg-cmp-results.sh: Print NA-FAIL and NA->UNRESOLVED changes at
    default verbosity.

From-SVN: r265483
2018-10-25 10:35:21 +00:00
Thomas Preud'homme 541eccada3 [testsuite] Fix sibcall-9 & sibcall-10 with -fPIC
gcc.dg/sibcall-9.c and gcc.dg/sibcall-10.c give execution failure
on ARM when compiled with -fPIC due to the PIC access to volatile
variable v creating an extra spill which causes the frame size of the
two recursive functions to be different. Making the variable static
solve the issue because the variable can be access in a PC-relative way
and avoid the spill, while still testing sibling call as originally
intended.

2018-10-25  Thomas Preud'homme  <thomas.preudhomme@linaro.org>

gcc/testsuite/
    * gcc.dg/sibcall-9.c: Make v static.
    * gcc.dg/sibcall-10.c: Likewise.

From-SVN: r265482
2018-10-25 10:19:49 +00:00
Richard Biener 7852940e7b re PR tree-optimization/87665 (gcc HEAD (svn: 265340) breaks elements on resize)
2018-10-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87665
	PR tree-optimization/87745
	* tree-vectorizer.h (get_earlier_stmt): Remove.
	(get_later_stmt): Pick up UID from the original non-pattern stmt.

	* gfortran.dg/20181025-1.f: New testcase.

From-SVN: r265481
2018-10-25 08:59:07 +00:00
Sam Tebbs 86f36311bc [DOC] Relocate list under Deprecated in options.texi to Var
gcc/doc
2018-10-25  Sam Tebbs  <sam.tebbs@arm.com>

	* options.texi (Deprecated): Move list to Var section.

From-SVN: r265480
2018-10-25 08:57:24 +00:00
Jakub Jelinek 37bc33f72c re PR fortran/87725 (OpenMP 4.5 clause schedule(simd,monotonic:static) not understood)
PR fortran/87725
	* openmp.c (gfc_match_omp_clauses): Parse simd, monotonic and
	nonmonotonic modifiers regardless of if they have been parsed
	already or if the opposite one has.  Fix up check whether
	comma after modifier should be parsed.
	(resolve_omp_clauses): Diagnose schedule modifier restrictions.

	* c-c++-common/gomp/schedule-modifiers-1.c (bar): Separate modifier
	from kind with a colon rather than comma.
	* gfortran.dg/gomp/schedule-modifiers-1.f90: New test.
	* gfortran.dg/gomp/schedule-modifiers-2.f90: New test.

From-SVN: r265479
2018-10-25 09:56:55 +02:00
GCC Administrator 872324bed4 Daily bump.
From-SVN: r265478
2018-10-25 00:16:38 +00:00
Segher Boessenkool b8ac95761a combine: Don't do make_more_copies for dest PC (PR87720)
Jumps are written in RTL as moves to PC.  But the latter has no mode,
so we shouldn't try to use it.  Since the optimization this routine
does does not really help for jumps at all, let's just skip it.


	PR rtl-optimization/87720
	* combine.c (make_more_copies): Skip if the dest is pc_rtx.

From-SVN: r265474
2018-10-25 00:34:40 +02:00
Alexandre Oliva f8719680bf gOlogy: do not change code in isolate-paths for warnings only
The isolate-paths pass is activated by various -f flags, but also by
-Wnull-dereference.  Most of its codegen changes are conditioned on at
least one of the -f flags, but those that detect, warn about and
isolate paths that return the address of local variables are enabled
even if the pass is activated only by -Wnull-dereference.

-W flags should not cause codegen changes, so this patch makes the
codegen changes conditional on the presence of any of the -f flags
that activate the pass.  Should we have a separate option to activate
only this kind of transformation?

for  gcc/ChangeLog

	* gimple-ssa-isolate-paths.c
	(find_implicit_erroneous_behavior): Do not change code if the
	pass is running for warnings only.
	(find_explicit_erroneous_behavior): Likewise.

From-SVN: r265473
2018-10-24 21:55:39 +00:00
Michael Meissner f78f04627d rs6000.c (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define as rs6000_mangle_decl_assembler_name.
[gcc]
2018-10-24  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000.c (TARGET_MANGLE_DECL_ASSEMBLER_NAME):
	Define as rs6000_mangle_decl_assembler_name.
	(rs6000_mangle_decl_assembler_name): If the user switched from IBM
	long double to IEEE long double, switch the names of the long
	double built-in functions to be <func>f128 instead of <func>l.

[gcc/testsuite]
2018-10-24  Michael Meissner  <meissner@linux.ibm.com>

	* gcc.target/powerpc/float128-math.c: New test to make sure the
	long double built-in function names use the f128 form if the user
	switched from IBM long double to IEEE long double.
	* gcc.target/powerpc/ppc-fortran/ieee128-math.f90: Likewise.

From-SVN: r265471
2018-10-24 20:16:31 +00:00
Jakub Jelinek df51934dce re PR c++/86288 (Recognize __gnu and/or __gnu__ as attribute-namespace)
PR c++/86288
	* parser.c (cp_parser_std_attribute): Canonicalize attr_ns, and when
	:: is not present and attr_ns non-NULL, canonicalize also attr_id.
	(cp_parser_attribute_spec): Fix comment typo.

	* g++.dg/cpp0x/gen-attrs-66.C: New test.

From-SVN: r265470
2018-10-24 21:39:23 +02:00
Martin Sebor a703b16ba4 extend.texi (nonnull): List no-argument form.
gcc/ChangeLog:

	* doc/extend.texi (nonnull): List no-argument form.  Reference
	-fno-delete-null-pointer-checks and -fisolate-erroneous-paths-attribute.

From-SVN: r265469
2018-10-24 13:33:56 -06:00
Martin Sebor fd85b88869 PR c++/84851 - missing -Wclass-memaccess for a memcpy in a copy ctor with a non-trivial member
gcc/cp/ChangeLog:

	PR c++/84851
	* call.c (maybe_warn_class_memaccess): Tighten up.

gcc/testsuite/ChangeLog:

	PR c++/84851
	* g++.dg/Wclass-memaccess-4.C: Remove XFAIL.

From-SVN: r265467
2018-10-24 12:06:14 -06:00
Richard Biener 313c39912b tree-ssa-sccvn.c (do_rpo_vn): Free rpo_state.
2018-10-24  Richard Biener  <rguenther@suse.de>

	* tree-ssa-sccvn.c (do_rpo_vn): Free rpo_state.

From-SVN: r265465
2018-10-24 14:31:17 +00:00
William Schmidt 28d2dc757e emmintrin.h (_mm_cvtpd_epi32): Change deprecated __vector long to __vector long long.
2018-10-24  Bill Schmidt  <wschmidt@linux.ibm.com>
	    Jinsong Ji <jji@us.ibm.com>

	* config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Change deprecated
	__vector long to __vector long long.
	(_mm_cvtpd_ps): Likewise.
	(_mm_cvttpd_epi32): Likewise.
	(_mm_cvtpi32_pd): Likewise.
	(_mm_unpackhi_epi64): Likewise.
	(_mm_unpacklo_epi64): Likewise.

From-SVN: r265464
2018-10-24 14:29:11 +00:00
Martin Liska 767d455188 Switch conversion: support any ax + b transformation (PR tree-optimization/84436).
2018-10-24  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/84436
	* tree-switch-conversion.c (switch_conversion::contains_same_values_p):
	Remove.
	(switch_conversion::contains_linear_function_p): New.
	(switch_conversion::build_one_array): Support linear
	transformation on input.
	* tree-switch-conversion.h (struct switch_conversion): Add
	contains_linear_function_p declaration.
2018-10-24  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/84436
	* gcc.dg/tree-ssa/pr84436-1.c: New test.
	* gcc.dg/tree-ssa/pr84436-2.c: New test.
	* gcc.dg/tree-ssa/pr84436-3.c: New test.
	* gcc.dg/tree-ssa/pr84436-4.c: New test.
	* gcc.dg/tree-ssa/pr84436-5.c: New test.

From-SVN: r265463
2018-10-24 13:52:21 +00:00
Richard Biener b5d0cdc9c8 Return hash of ADDR_EXPR if its argument is CONSTANT_CLASS_P.
2018-10-24  Richard Biener  <rguenther@suse.de>

	* varasm.c (const_hash_1): Return hash of ADDR_EXPR
	if its argument is CONSTANT_CLASS_P.

From-SVN: r265462
2018-10-24 13:49:47 +00:00
Jan Hubicka 9a97772f93 ipa-utils.h (type_with_linkage_p): No longer check for TYPE_STUB_DECL; it is wrong for forward declarations.
* ipa-utils.h (type_with_linkage_p): No longer check for TYPE_STUB_DECL;
	it is wrong for forward declarations.

From-SVN: r265460
2018-10-24 12:50:25 +00:00
Ilya Leoshkevich 04193ea0e6 Add myself to MAINTAINERS
ChangeLog:

2018-10-24  Ilya Leoshkevich  <iii@linux.ibm.com>

	* MAINTAINERS (Write After Approval): Add myself.

From-SVN: r265459
2018-10-24 12:10:58 +00:00
Ilya Leoshkevich 6f7133ec4f S/390: Fix ICE in s390_check_qrst_address ()
In r265371 (S/390: Make "b" constraint match literal pool references)
the CONSTANT_POOL_ADDRESS_P () check was moved from
s390_loadrelative_operand_p () to s390_check_qrst_address ().  However,
in the original code it was guarded by SYMBOL_REF_P (), which was not
added to the new code.

gcc/ChangeLog:

2018-10-24  Ilya Leoshkevich  <iii@linux.ibm.com>

	* config/s390/s390.c (s390_check_qrst_address): Add the missing
	SYMBOL_REF_P () check.

gcc/testsuite/ChangeLog:

2018-10-24  Ilya Leoshkevich  <iii@linux.ibm.com>

	* gcc.target/s390/20181024-1.c: New test.

From-SVN: r265458
2018-10-24 12:04:53 +00:00
Richard Biener be43a8877e re PR tree-optimization/87105 (Autovectorization [X86, SSE2, AVX2, DoublePrecision])
2018-10-24  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87105
	* tree-vect-data-refs.c (vect_analyze_group_access_1): Adjust
	dump classification.
	(vect_analyze_data_ref_accesses): Handle duplicate loads and
	stores by splitting the affected group after the fact.
	* tree-vect-slp.c (vect_build_slp_tree_2): Dump when we
	fail the SLP build because of size constraints.

	* gcc.dg/vect/bb-slp-39.c: New testcase.
	* gfortran.dg/vect/pr83232.f90: Un-XFAIL.

From-SVN: r265457
2018-10-24 11:46:58 +00:00
Rainer Orth dc6b6330c5 Disable string merging with alignment > 1 before Solaris 11.4/SPARC
* configure.ac (gcc_cv_ld_aligned_shf_merge): New test.
	* configure: Regenerate.
	* config.in: Regenerate.
	* varasm.c (mergeable_string_section): Use readonly_data_section
	if linker doesn't support SHF_MERGE with alignment > 8.
	(mergeable_constant_section): Likewise.

From-SVN: r265456
2018-10-24 11:27:35 +00:00
Richard Biener 53b8a7107e re PR tree-optimization/84013 (wrong __restrict clique with inline asm operand)
2018-10-24  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/84013
	* tree-ssa-structalias.c (struct msdi_data): New struct for
	marshalling data to walk_stmt_load_store_ops.
	(maybe_set_dependence_info): Refactor as callback for
	walk_stmt_load_store_ops.
	(compute_dependence_clique): Set restrict info on all stmt kinds.

	* gcc.dg/tree-ssa/restrict-9.c: New testcase.

From-SVN: r265455
2018-10-24 09:42:19 +00:00
Martin Liska 19b5595858 Remove reduntant dumps and make tp_first_run dump more compact.
2018-10-24  Martin Liska  <mliska@suse.cz>

	* cgraph.c (cgraph_node::dump):
	Remove reduntant dumps and make tp_first_run dump more compact.
2018-10-24  Martin Liska  <mliska@suse.cz>

	* libgcov-profiler.c: Start from 1 in order to distinguish
	functions which were seen and these that were not.

From-SVN: r265454
2018-10-24 08:47:59 +00:00
Richard Biener bf32992748 re PR tree-optimization/87665 (gcc HEAD (svn: 265340) breaks elements on resize)
2018-10-24  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87665
	* tree-vect-data-refs.c (vect_preserves_scalar_order_p): Adjust
	to reflect reality.

	* gcc.dg/torture/pr87665.c: New testcase.

From-SVN: r265452
2018-10-24 06:52:45 +00:00
François Dumont 4b763deedb 2018-10-24 François Dumont <fdumont@gcc.gnu.org>
* include/debug/safe_unordered_container.h
	(_Safe_unordered_container<>::_M_invalidate_locals): Take lambda
	parameter type from local end variable.
	(_Safe_unordered_container<>::_M_invalidate_all): Likewise.
	* include/debug/unordered_map
	(unordered_map<>::begin()): Use C++11 direct initialization.
	(unordered_map<>::end()): Likewise.
	(unordered_map<>::cbegin()): Likewise.
	(unordered_map<>::cend()): Likewise.
	(unordered_map<>::begin(size_type)): Likewise.
	(unordered_map<>::end(size_type)): Likewise.
	(unordered_map<>::cbegin(size_type)): Likewise.
	(unordered_map<>::cend(size_type)): Likewise.
	(unordered_map<>::emplace<>(_Args&&...)): Likewise.
	(unordered_map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
	(unordered_map<>::insert(const value_type&)): Likewise.
	(unordered_map<>::insert(value_type&&)): Likewise.
	(unordered_map<>::insert<>(_Pair&&)): Likewise.
	(unordered_map<>::insert(const_iterator, const value_type&)): Likewise.
	(unordered_map<>::insert(const_iterator, value_type&&)): Likewise.
	(unordered_map<>::insert<>(const_iterator, _Pair&&)): Likewise.
	(unordered_map<>::try_emplace<>(const key_type&, _Args&&...)): Likewise.
	(unordered_map<>::try_emplace<>(key_type&&, _Args&&...)): Likewise.
	(unordered_map<>::try_emplace<>(const_iterator, const key_type&,
	_Args&&...)): Likewise.
	(unordered_map<>::try_emplace<>(const_iterator, key_type&&,
	_Args&&...)): Likewise.
	(unordered_map<>::insert_or_assign<>(const key_type&, _Obj&&)): Likewise.
	(unordered_map<>::insert_or_assign<>(key_type&&, _Obj&&)): Likewise.
	(unordered_map<>::insert_or_assign<>(const_iterator, const key_type&,
	_Obj&&)): Likewise.
	(unordered_map<>::insert_or_assign<>(const_iterator, key_type&&,
	_Obj&&)): Likewise.
	(unordered_map<>::insert(note_type&&)): Likewise.
	(unordered_map<>::find(const key_type&)): Likewise.
	(unordered_map<>::equal_range(const key_type&)): Likewise.
	(unordered_map<>::_M_extract): New.
	(unordered_map<>::extract(const_iterator)): Use latter.
	(unordered_map<>::extract(const key_type&)): Likewise.
	(unordered_map<>::_M_erase): New.
	(unordered_map<>::erase(const key_type&)): Use latter.
	(unordered_map<>::erase(const_iterator)): Likewise.
	(unordered_map<>::erase(iterator)): Likewise.
	(unordered_map<>::_M_invalidate): New.
	(unordered_map<>::erase(const_iterator, const_iterator)): Use latter.
	(unordered_multimap<>::begin()): Use C++11 direct initialization.
	(unordered_multimap<>::end()): Likewise.
	(unordered_multimap<>::cbegin()): Likewise.
	(unordered_multimap<>::cend()): Likewise.
	(unordered_multimap<>::begin(size_type)): Likewise.
	(unordered_multimap<>::end(size_type)): Likewise.
	(unordered_multimap<>::cbegin(size_type)): Likewise.
	(unordered_multimap<>::cend(size_type)): Likewise.
	(unordered_multimap<>::emplace<>(_Args&&...)): Likewise.
	(unordered_multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
	(unordered_multimap<>::insert(const value_type&)): Likewise.
	(unordered_multimap<>::insert(const_iterator, const value_type&)): Likewise.
	(unordered_multimap<>::insert(const_iterator, value_type&&)): Likewise.
	(unordered_multimap<>::insert<>(_Pair&&)): Likewise.
	(unordered_multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
	(unordered_multimap<>::insert(note_type&&)): Likewise.
	(unordered_multimap<>::insert(const_iterator, note_type&&)): Likewise.
	(unordered_multimap<>::find(const key_type&)): Likewise.
	(unordered_multimap<>::equal_range(const key_type&)): Likewise.
	(unordered_multimap<>::_M_extract): New.
	(unordered_multimap<>::extract(const_iterator)): Use latter.
	(unordered_multimap<>::extract(const key_type&)): Likewise.
	(unordered_multimap<>::_M_erase): New.
	(unordered_multimap<>::erase(const_iterator)): Likewise.
	(unordered_multimap<>::erase(iterator)): Likewise.
	(unordered_multimap<>::_M_invalidate): New.
	(unordered_multimap<>::erase(const key_type&)): Use latter.
	(unordered_multimap<>::erase(const_iterator, const_iterator)): Likewise.
	* include/debug/unordered_set
	(unordered_set<>::begin()): Use C++11 direct initialization.
	(unordered_set<>::end()): Likewise.
	(unordered_set<>::cbegin()): Likewise.
	(unordered_set<>::cend()): Likewise.
	(unordered_set<>::begin(size_type)): Likewise.
	(unordered_set<>::end(size_type)): Likewise.
	(unordered_set<>::cbegin(size_type)): Likewise.
	(unordered_set<>::cend(size_type)): Likewise.
	(unordered_set<>::emplace<>(_Args&&...)): Likewise.
	(unordered_set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
	(unordered_set<>::insert(const value_type&)): Likewise.
	(unordered_set<>::insert(value_type&&)): Likewise.
	(unordered_set<>::insert(const_iterator, const value_type&)): Likewise.
	(unordered_set<>::insert(const_iterator, value_type&&)): Likewise.
	(unordered_set<>::insert(note_type&&)): Likewise.
	(unordered_set<>::insert(const_iterator, note_type&&)): Likewise.
	(unordered_set<>::find(const key_type&)): Likewise.
	(unordered_set<>::equal_range(const key_type&)): Likewise.
	(unordered_set<>::_M_extract): New.
	(unordered_set<>::extract(const_iterator)): Use latter.
	(unordered_set<>::extract(const key_type&)): Likewise.
	(unordered_set<>::_M_erase): New.
	(unordered_set<>::erase(const key_type&)): Use latter.
	(unordered_set<>::erase(const_iterator)): Likewise.
	(unordered_set<>::erase(iterator)): Likewise.
	(unordered_set<>::_M_invalidate): New.
	(unordered_set<>::erase(const_iterator, const_iterator)): Use latter.
	(unordered_multiset<>::begin()): Use C++11 direct initialization.
	(unordered_multiset<>::end()): Likewise.
	(unordered_multiset<>::cbegin()): Likewise.
	(unordered_multiset<>::cend()): Likewise.
	(unordered_multiset<>::begin(size_type)): Likewise.
	(unordered_multiset<>::end(size_type)): Likewise.
	(unordered_multiset<>::cbegin(size_type)): Likewise.
	(unordered_multiset<>::cend(size_type)): Likewise.
	(unordered_multiset<>::emplace<>(_Args&&...)): Likewise.
	(unordered_multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
	(unordered_multiset<>::insert(const value_type&)): Likewise.
	(unordered_multiset<>::insert(const_iterator, const value_type&)): Likewise.
	(unordered_multiset<>::insert(value_type&&)): Likewise.
	(unordered_multiset<>::insert(const_iterator, value_type&&)): Likewise.
	(unordered_multiset<>::insert(node_type&&)): Likewise.
	(unordered_multiset<>::insert(const_iterator, node_type&&)): Likewise.
	(unordered_multiset<>::find(const key_type&)): Likewise.
	(unordered_multiset<>::equal_range(const key_type&)): Likewise.
	(unordered_multiset<>::_M_extract): New.
	(unordered_multiset<>::extract(const_iterator)): Use latter.
	(unordered_multiset<>::extract(const key_type&)): Likewise.
	(unordered_multiset<>::_M_erase): New.
	(unordered_multiset<>::erase(const_iterator)): Likewise.
	(unordered_multiset<>::erase(iterator)): Likewise.
	(unordered_multiset<>::_M_invalidate): New.
	(unordered_multiset<>::erase(const key_type&)): Use latter.
	(unordered_multiset<>::erase(const_iterator, const_iterator)): Likewise.

From-SVN: r265451
2018-10-24 05:40:25 +00:00
François Dumont a01fc83fea cstddef: Add versioned namespace.
2018-10-24  François Dumont  <fdumont@gcc.gnu.org>

	* include/c_global/cstddef: Add versioned namespace.

From-SVN: r265450
2018-10-24 05:20:35 +00:00
GCC Administrator d21dad9827 Daily bump.
From-SVN: r265448
2018-10-24 00:16:54 +00:00
Jeff Law 040e0e4410 h8300.c (h8300_expand_prologue): Fix stm generation for H8/S.
* config/h8300/h8300.c (h8300_expand_prologue): Fix stm generation
	for H8/S.

From-SVN: r265444
2018-10-23 16:51:25 -06:00
Iain Buclaw 72eda5f274 MAINTAINERS (Write After Approval): Remove myself.
2018-10-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* MAINTAINERS (Write After Approval): Remove myself.

From-SVN: r265442
2018-10-23 21:42:23 +00:00
Iain Buclaw 4c029cee5c MAINTAINERS: Add myself as D front-end and libphobos maintainer.
2018-10-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* MAINTAINERS: Add myself as D front-end and libphobos maintainer.

From-SVN: r265441
2018-10-23 21:04:51 +00:00
Ian Lance Taylor 8dd2ae4bc7 re PR go/87661 (libgo bootstrap failure on arm-linux-gnueabihf (redefinition of constants))
PR go/87661
    runtime: remove unused armArch, hwcap and hardDiv
    
    After CL 140057 these are only written but never read in gccgo.
    
    Reviewed-on: https://go-review.googlesource.com/c/141077

From-SVN: r265439
2018-10-23 19:02:29 +00:00
Jakub Jelinek 53aba48746 lambda-this3.C: Limit dg-bogus directives to c++17_down only.
* g++.dg/cpp2a/lambda-this3.C: Limit dg-bogus directives to c++17_down
	only.  Add expected warnings and messages for c++2a.

From-SVN: r265430
2018-10-23 18:25:09 +02:00
Jonathan Wakely c3ba63c314 PR libstdc++/87704 fix unique_ptr(nullptr_t) constructors
Using a delegating constructor to implement these constructors means
that they instantiate the destructor, which requires the element_type to
be complete. In C++11 and C++14 they were specified to be delegating,
but that was changed as part of LWG 2801 so in C++17 they don't require
a complete type (as was intended all along).

	PR libstdc++/87704
	* include/bits/unique_ptr.h (unique_ptr::unique_ptr(nullptr_t)): Do
	not delegate to default constructor.
	(unique_ptr<T[], D>::unique_ptr(nullptr_t)): Likewise.
	* testsuite/20_util/unique_ptr/cons/incomplete.cc: New test.

From-SVN: r265423
2018-10-23 14:10:26 +01:00
Richard Biener 99c24b911b tree-vrp.c (add_assert_info): Guard dump_printf with dump_enabled_p.
2018-10-23  Richard Biener  <rguenther@suse.de>

	* tree-vrp.c (add_assert_info): Guard dump_printf with
	dump_enabled_p.
	* gimple-ssa-evrp-analyze.c
	(evrp_range_analyzer::record_ranges_from_incoming_edge):
	Use value_range::ignore_equivs_equal_p.

From-SVN: r265422
2018-10-23 11:37:52 +00:00
Richard Biener 1cab645d3e re PR tree-optimization/87105 (Autovectorization [X86, SSE2, AVX2, DoublePrecision])
2018-10-23  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87105
	PR tree-optimization/87608
	* passes.def (pass_all_early_optimizations): Add early phi-opt
	after dce.
	* tree-ssa-phiopt.c (value_replacement): Ignore NOPs and predicts in
	addition to debug stmts.
	(tree_ssa_phiopt_worker): Add early_p argument, do only min/max
	and abs replacement early.
	* tree-cfg.c (gimple_empty_block_p): Likewise.

	* g++.dg/tree-ssa/phiopt-1.C: New testcase.
	g++.dg/vect/slp-pr87105.cc: Likewise.
	* g++.dg/tree-ssa/pr21463.C: Scan phiopt2 because this testcase
	relies on phiprop run before.
	* g++.dg/tree-ssa/pr30738.C: Likewise.
	* g++.dg/tree-ssa/pr57380.C: Likewise.
	* gcc.dg/tree-ssa/pr84859.c: Likewise.
	* gcc.dg/tree-ssa/pr45397.c: Scan phiopt2 because phiopt1 is
	confused by copies in the IL left by EVRP.
	* gcc.dg/tree-ssa/phi-opt-5.c: Likewise, this time confused
	by predictors.
	* gcc.dg/tree-ssa/phi-opt-12.c: Scan phiopt2.
	* gcc.dg/pr24574.c: Likewise.
	* g++.dg/tree-ssa/pr86544.C: Scan phiopt4.

From-SVN: r265421
2018-10-23 11:34:56 +00:00
Richard Earnshaw 7a43314023 [arm] Update default CPUs during configure
There are a couple of places in config.gcc where the default CPU is
still arm6, but that was removed as a supported CPU earlier this year.
This patch fixes those entries.

The default CPU for configurations that do not explicitly set a
default is now arm7tdmi (so assumes thumb is available).  Given that
StrongArm is on the deprecated list, this is a better default than we
had previously.

For NetBSD the default is StrongArm; this is the only remaining port
that uses the old ABI and really still carries support for non-thumb
based targets.

	PR target/86383
	* config.gcc (arm*-*-netbsdelf*): Default to StrongARM if no CPU
	specified to configure.
	(arm*-*-*): Use ARM7TDMI as the target CPU if no default provided.

From-SVN: r265420
2018-10-23 10:19:15 +00:00
Richard Biener b1a5c71951 re PR tree-optimization/87700 (Compile time hog w/ -O1)
2018-10-23  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87700
	* tree-ssa-copy.c (set_copy_of_val): Fix change detection logic.

	* gcc.dg/torture/pr87700.c: New testcase.

From-SVN: r265418
2018-10-23 09:36:13 +00:00
Jakub Jelinek 20e363e492 re PR target/87674 (AVX512: incorrect intrinsic signature)
PR target/87674
	* config/i386/avx512vlintrin.h (_mm_mask_mullo_epi32): Change type of
	second argument from __mmask16 to __mmask8.
	* config/i386/avx512vlbwintrin.h (_mm_mask_packus_epi32,
	_mm_mask_packs_epi32): Likewise.
	* config/i386/avx512pfintrin.h (_mm512_mask_prefetch_i64scatter_ps):
	Likewise.
	(_mm512_mask_prefetch_i64scatter_pd): Likewise.  Formatting fix.

From-SVN: r265416
2018-10-23 11:25:57 +02:00
Richard Biener 34873d4c8e tree-vect-stmts.c (vect_analyze_stmt): Fix typo in comment.
2018-10-23  Richard Biener  <rguenther@suse.de>

	* tree-vect-stmts.c (vect_analyze_stmt): Fix typo in comment.

From-SVN: r265415
2018-10-23 09:17:29 +00:00
Richard Biener bc37759a51 re PR tree-optimization/86144 (GCC is not generating vector math calls to svml/acml functions)
2018-10-23  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/86144
	* tree-vect-stmts.c (vect_analyze_stmt): Prefer -mveclibabi
	over simd attribute.

From-SVN: r265414
2018-10-23 08:58:39 +00:00
Richard Biener a26eaf981d re PR tree-optimization/87693 (ICE in thread_around_empty_blocks, at tree-ssa-threadedge.c:984)
2018-10-23  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87693
	* tree-ssa-threadedge.c (thread_around_empty_blocks): Handle
	the case we do not find the taken edge.

	* gcc.dg/torture/pr87693.c: New testcase.

From-SVN: r265413
2018-10-23 08:51:20 +00:00