Commit Graph

150580 Commits

Author SHA1 Message Date
Jonathan Wakely
eae0b895e0 PR71856 try to fix Parallel Mode assertions again
PR libstdc++/71856
	* doc/xml/manual/using.xml: Document macro.
	* include/bits/c++config [_GLIBCXX_DEBUG || _GLIBCXX_PARALLEL]
	(__glibcxx_assert): Rename to __glibcxx_assert_impl.
	[_GLIBCXX_DEBUG] (__glibcxx_assert): Expand to __glibcxx_assert_impl.
	* include/parallel/base.h [_GLIBCXX_PARALLEL_ASSERTIONS]
	(_GLIBCXX_PARALLEL_ASSERT): Expand to __glibcxx_assert_impl.
	[!_GLIBCXX_PARALLEL_ASSERTIONS] (_GLIBCXX_PARALLEL_ASSERT): Define as
	empty.
	* testsuite/25_algorithms/headers/algorithm/
	parallel_algorithm_assert2.cc: New test.

From-SVN: r243434
2016-12-08 12:08:14 +00:00
Pierre-Marie de Rodat
66110738f0 Add the missing ChangeLog entry for r243432
2016-12-08  Pierre-Marie de Rodat  <derodat@adacore.com>

	PR debug/78112
	* g++.dg/pr78112.C: Remove platform-dependent checks.
	* g++.dg/pr78112-2.C: New testcase.

From-SVN: r243433
2016-12-08 11:04:11 +00:00
Pierre-Marie de Rodat
8a00c78748 [PR78112] Remove platform-dependent checks in g++.dg/pr78112.C
... as there checks failed on many platforms. As a replacement, this
commit also adds a new testcase from source reduction. The hope is that
this new testcase will get a consistent output across all platforms.

gcc/testsuite/
	PR debug/78112
	* g++.dg/pr78112.C: Remove platform-dependent checks.
	* g++.dg/pr78112-2.C: New testcase.

From-SVN: r243432
2016-12-08 11:01:03 +00:00
Bin Cheng
a5b03f2a17 re PR middle-end/78684 (ICE in create_intersect_range_checks_index, at tree-vect-loop-manip.c:2074)
PR middle-end/78684
	* tree-vect-loop-manip.c (create_intersect_range_checks_index): Check
	sign bit for index step of data reference.
	gcc/testsuite
	PR middle-end/78684
	* g++.dg/torture/pr78684.C: New test.

From-SVN: r243431
2016-12-08 10:56:41 +00:00
Christophe Lyon
1adc60671c Fix failing poly64 tests on ARM
2016-12-08  Christophe Lyon  <christophe.lyon@linaro.org>

	* gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
	(CHECK_CRYPTO): Remove.
	(expected_poly64x1_t, expected_poly64x2_t): Remove

From-SVN: r243430
2016-12-08 10:23:29 +01:00
Jakub Jelinek
1d09844a1c P0003R5 - removal of dynamic exception specification from C++17
P0003R5 - removal of dynamic exception specification from C++17
	* parser.c (cp_parser_exception_specification_opt): For C++17
	error out on throw ( type-id-list ), for C++11 and C++14 issue
	-Wdeprecated warning on it.  Formatting fix.  Treat throw()
	in C++17 as noexcept(true).

	* g++.dg/compat/eh/ctor1.h: Adjust for deprecation of
	throw (type-id-list) in C++11 and C++14 and removal in C++17.
	* g++.dg/compat/eh/ctor1_y.C: Likewise.
	* g++.dg/compat/eh/new1_x.C: Likewise.
	* g++.dg/compat/eh/new1_y.C: Likewise.
	* g++.dg/compat/eh/spec3_x.C: Likewise.
	* g++.dg/compat/eh/spec3_y.C: Likewise.
	* g++.dg/compat/eh/template1.h: Likewise.
	* g++.dg/compat/eh/template1_y.C: Likewise.
	* g++.dg/compat/eh/unexpected1_x.C: Likewise.
	* g++.dg/compat/eh/unexpected1_y.C: Likewise.
	* g++.dg/cpp0x/auto9.C: Likewise.
	* g++.dg/cpp0x/defaulted23.C: Likewise.
	* g++.dg/cpp0x/error5.C: Likewise.
	* g++.dg/cpp0x/lambda/lambda-eh2.C: Likewise.
	* g++.dg/cpp0x/noexcept02.C: Likewise.
	* g++.dg/cpp0x/noexcept07.C: Likewise.
	* g++.dg/cpp0x/noexcept08.C: Likewise.
	* g++.dg/cpp0x/noexcept19.C: Likewise.
	* g++.dg/cpp0x/variadic73.C: Likewise.
	* g++.dg/cpp0x/variadic-throw.C: Likewise.
	* g++.dg/cpp1z/noexcept-type1.C: Likewise.
	* g++.dg/eh/async-unwind2.C: Likewise.
	* g++.dg/eh/cond4.C: Likewise.
	* g++.dg/eh/delete1.C: Likewise.
	* g++.dg/eh/ehopt1.C: Likewise.
	* g++.dg/eh/forced3.C: Likewise.
	* g++.dg/eh/forced4.C: Likewise.
	* g++.dg/eh/init-temp2.C: Likewise.
	* g++.dg/eh/pr38662.C: Likewise.
	* g++.dg/eh/pr41819.C: Likewise.
	* g++.dg/eh/shadow1.C: Likewise.
	* g++.dg/eh/spec2.C: Likewise.
	* g++.dg/eh/spec3.C: Likewise.
	* g++.dg/eh/spec5.C: Likewise.
	* g++.dg/eh/spec6.C: Likewise.
	* g++.dg/eh/spec7.C: Likewise.
	* g++.dg/eh/spec8.C: Likewise.
	* g++.dg/eh/spec9.C: Likewise.
	* g++.dg/eh/template1.C: Likewise.
	* g++.dg/eh/unexpected1.C: Likewise.
	* g++.dg/ext/has_nothrow_assign.C: Likewise.
	* g++.dg/ext/has_nothrow_constructor.C: Likewise.
	* g++.dg/ext/has_nothrow_copy-1.C: Likewise.
	* g++.dg/ext/has_nothrow_copy-2.C: Likewise.
	* g++.dg/ext/has_nothrow_copy-4.C: Likewise.
	* g++.dg/ext/has_nothrow_copy-5.C: Likewise.
	* g++.dg/ext/has_nothrow_copy-6.C: Likewise.
	* g++.dg/ext/has_nothrow_copy-7.C: Likewise.
	* g++.dg/gcov/gcov-7.C: Likewise.
	* g++.dg/init/new13.C: Likewise.
	* g++.dg/init/new25.C: Likewise.
	* g++.dg/lookup/exception1.C: Likewise.
	* g++.dg/opt/noreturn-1.C: Likewise.
	* g++.dg/other/error3.C: Likewise.
	* g++.dg/rtti/crash3.C: Likewise.
	* g++.dg/template/eh2.C: Likewise.
	* g++.dg/template/error36.C: Likewise.
	* g++.dg/tm/pr46567.C: Likewise.
	* g++.dg/tm/pr47340.C: Likewise.
	* g++.dg/torture/pr46364.C: Likewise.
	* g++.dg/torture/pr49394.C: Likewise.
	* g++.dg/torture/pr52918-1.C: Likewise.
	* g++.dg/torture/pr57190.C: Likewise.
	* g++.dg/torture/stackalign/eh-alloca-1.C: Likewise.
	* g++.dg/torture/stackalign/eh-fastcall-1.C: Likewise.
	* g++.dg/torture/stackalign/eh-global-1.C: Likewise.
	* g++.dg/torture/stackalign/eh-inline-1.C: Likewise.
	* g++.dg/torture/stackalign/eh-inline-2.C: Likewise.
	* g++.dg/torture/stackalign/eh-thiscall-1.C: Likewise.
	* g++.dg/torture/stackalign/eh-vararg-1.C: Likewise.
	* g++.dg/torture/stackalign/eh-vararg-2.C: Likewise.
	* g++.dg/tree-ssa/pr45605.C: Likewise.
	* g++.dg/warn/Wreturn-type-3.C: Likewise.
	* g++.old-deja/g++.eh/badalloc1.C: Likewise.
	* g++.old-deja/g++.eh/cleanup2.C: Likewise.
	* g++.old-deja/g++.eh/spec1.C: Likewise.
	* g++.old-deja/g++.eh/spec2.C: Likewise.
	* g++.old-deja/g++.eh/spec3.C: Likewise.
	* g++.old-deja/g++.eh/spec4.C: Likewise.
	* g++.old-deja/g++.eh/spec6.C: Likewise.
	* g++.old-deja/g++.eh/throw1.C: Likewise.
	* g++.old-deja/g++.eh/throw2.C: Likewise.
	* g++.old-deja/g++.eh/tmpl1.C: Likewise.
	* g++.old-deja/g++.eh/tmpl3.C: Likewise.
	* g++.old-deja/g++.mike/eh15.C: Likewise.
	* g++.old-deja/g++.mike/eh25.C: Likewise.
	* g++.old-deja/g++.mike/eh33.C: Likewise.
	* g++.old-deja/g++.mike/eh34.C: Likewise.
	* g++.old-deja/g++.mike/eh50.C: Likewise.
	* g++.old-deja/g++.mike/eh51.C: Likewise.
	* g++.old-deja/g++.mike/eh55.C: Likewise.
	* g++.old-deja/g++.mike/p10416.C: Likewise.
	* g++.old-deja/g++.other/crash28.C: Likewise.
	* g++.old-deja/g++.other/crash30.C: Likewise.
	* g++.old-deja/g++.other/new7.C: Likewise.
	* g++.old-deja/g++.pt/ehspec1.C: Likewise.
	* g++.old-deja/g++.robertl/eb123.C: Likewise.

	* testsuite/util/testsuite_new_operators.h: Include testsuite_hooks.h.
	(operator new): Use THROW macro.

From-SVN: r243429
2016-12-08 09:26:06 +01:00
Naveen H.S
23b88fda66 aarch64.c (aarch64_load_symref_appropriately): Handle SYMBOL_SMALL_TLSGD for ILP32.
2016-12-08  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>

gcc
	* config/aarch64/aarch64.c (aarch64_load_symref_appropriately):
	Handle SYMBOL_SMALL_TLSGD for ILP32.
	* config/aarch64/aarch64.md : tlsgd_small modified into
	tlsgd_small_<mode> to support SImode and DImode.
	*tlsgd_small modified into *tlsgd_small_<mode> to support SImode and
	DImode.

gcc/testsuite
	* gcc.target/aarch64/pr78382.c : New Testcase.

From-SVN: r243428
2016-12-08 05:09:37 +00:00
Andrew Pinski
4ba8f0a3a4 aarch64.c (aarch64_load_symref_appropriately): Access the lower part of RTX appropriately.
2016-12-08  Andrew Pinski  <apinski@cavium.com>

gcc
	* config/aarch64/aarch64.c (aarch64_load_symref_appropriately):
	Access the lower part of RTX appropriately.

gcc/testsuite
	* gcc.target/aarch64/pr71112.c : New Testcase.

From-SVN: r243427
2016-12-08 04:59:00 +00:00
David Malcolm
a96d1f1d02 Split class rtx_reader into md_reader vs rtx_reader
This moves read_rtx and friends into rtx_reader, and splits
rtx_reader into two classes:

class md_reader: has responsibility for reading chars, managing
include files, top-level directives etc.  It is the read-md.o part.

class rtx_reader, a subclass, has the code for reading hierarchical
rtx expressions using the format codes.   It is the read-rtl.o part.

This split is needed by a followup patch, which converts
read_rtx_operand to a virtual function of rtx_reader.  To do this,
instances of rtx_reader (or its subclasses) need a vtable, which
needs to include a ptr to the code in read-rtl.o.  Splitting it up
allows the gen* tools that currently purely use read-md.o to continue
to do so.

gcc/ChangeLog:
	* genpreds.c (write_tm_constrs_h): Update for renaming of
	rtx_reader_ptr to md_reader_ptr.
	(write_tm_preds_h): Likewise.
	(write_insn_preds_c): Likewise.
	* read-md.c (rtx_reader_ptr): Rename to...
	(md_reader_ptr): ...this, and convert from an
	rtx_reader * to a md_reader *.
	(rtx_reader::set_md_ptr_loc): Rename to...
	(md_reader::set_md_ptr_loc): ...this.
	(rtx_reader::get_md_ptr_loc): Rename to...
	(md_reader::get_md_ptr_loc): ...this.
	(rtx_reader::copy_md_ptr_loc): Rename to...
	(md_reader::copy_md_ptr_loc): ...this.
	(rtx_reader::fprint_md_ptr_loc): Rename to...
	(md_reader::fprint_md_ptr_loc): ...this.
	(rtx_reader::print_md_ptr_loc): Rename to...
	(md_reader::print_md_ptr_loc): ...this.
	(rtx_reader::join_c_conditions): Rename to...
	(md_reader::join_c_conditions): ...this.
	(rtx_reader::fprint_c_condition): ...this.
	(rtx_reader::print_c_condition): Rename to...
	(md_reader::print_c_condition): ...this.
	(fatal_with_file_and_line):  Update for renaming of
	rtx_reader_ptr to md_reader_ptr.
	(rtx_reader::require_char): Rename to...
	(md_reader::require_char): ...this.
	(rtx_reader::require_char_ws): Rename to...
	(md_reader::require_char_ws): ...this.
	(rtx_reader::require_word_ws): Rename to...
	(md_reader::require_word_ws): ...this.
	(rtx_reader::read_char): Rename to...
	(md_reader::read_char): ...this.
	(rtx_reader::unread_char): Rename to...
	(md_reader::unread_char): ...this.
	(rtx_reader::peek_char): Rename to...
	(md_reader::peek_char): ...this.
	(rtx_reader::read_name): Rename to...
	(md_reader::read_name): ...this.
	(rtx_reader::read_escape): Rename to...
	(md_reader::read_escape): ...this.
	(rtx_reader::read_quoted_string): Rename to...
	(md_reader::read_quoted_string): ...this.
	(rtx_reader::read_braced_string): Rename to...
	(md_reader::read_braced_string): ...this.
	(rtx_reader::read_string): Rename to...
	(md_reader::read_string): ...this.
	(rtx_reader::read_skip_construct): Rename to...
	(md_reader::read_skip_construct): ...this.
	(rtx_reader::handle_constants): Rename to...
	(md_reader::handle_constants): ...this.
	(rtx_reader::traverse_md_constants): Rename to...
	(md_reader::traverse_md_constants): ...this.
	(rtx_reader::handle_enum): Rename to...
	(md_reader::handle_enum): ...this.
	(rtx_reader::lookup_enum_type): Rename to...
	(md_reader::lookup_enum_type): ...this.
	(rtx_reader::traverse_enum_types): Rename to...
	(md_reader::traverse_enum_types): ...this.
	(rtx_reader::rtx_reader): Rename to...
	(md_reader::md_reader): ...this, and update for renaming of
	rtx_reader_ptr to md_reader_ptr.
	(rtx_reader::~rtx_reader): Rename to...
	(md_reader::~md_reader): ...this, and update for renaming of
	rtx_reader_ptr to md_reader_ptr.
	(rtx_reader::handle_include): Rename to...
	(md_reader::handle_include): ...this.
	(rtx_reader::handle_file): Rename to...
	(md_reader::handle_file): ...this.
	(rtx_reader::handle_toplevel_file): Rename to...
	(md_reader::handle_toplevel_file): ...this.
	(rtx_reader::get_current_location): Rename to...
	(md_reader::get_current_location): ...this.
	(rtx_reader::add_include_path): Rename to...
	(md_reader::add_include_path): ...this.
	(rtx_reader::read_md_files): Rename to...
	(md_reader::read_md_files): ...this.
	* read-md.h (class rtx_reader): Split into...
	(class md_reader): ...new class.
	(rtx_reader_ptr): Rename to...
	(md_reader_ptr): ...this, and convert to a md_reader *.
	(class noop_reader): Update base class to be md_reader.
	(class rtx_reader): Reintroduce as a subclass of md_reader.
	(rtx_reader_ptr): Reintroduce as a rtx_reader *.
	(read_char): Update for renaming of rtx_reader_ptr to
	md_reader_ptr.
	(unread_char): Likewise.
	* read-rtl.c (rtx_reader_ptr): New global.
	(rtx_reader::apply_iterator_to_string): Rename to...
	(md_reader::apply_iterator_to_string): ...this.
	(rtx_reader::copy_rtx_for_iterators): Rename to...
	(md_reader::copy_rtx_for_iterators): ...this.
	(rtx_reader::read_conditions): Rename to...
	(md_reader::read_conditions): ...this.
	(rtx_reader::record_potential_iterator_use): Rename to...
	(md_reader::record_potential_iterator_use): ...this.
	(rtx_reader::read_mapping): Rename to...
	(md_reader::read_mapping): ...this.
	(rtx_reader::read_rtx): Use rtx_reader_ptr when calling
	read_rtx_code.
	(rtx_reader::read_rtx_operand): Use get_string_obstack rather
	than directly accessing m_string_obstack.
	(rtx_reader::rtx_reader): New ctor.
	(rtx_reader::~rtx_reader): New dtor.

From-SVN: r243426
2016-12-08 01:51:04 +00:00
Ian Lance Taylor
776a8a927e runtime: remove some unused variables/declarations from runtime.h
Small patch from Eric Botcazou.
    
    Reviewed-on: https://go-review.googlesource.com/34029

From-SVN: r243424
2016-12-08 00:38:03 +00:00
GCC Administrator
f9adfccab1 Daily bump.
From-SVN: r243423
2016-12-08 00:16:22 +00:00
Segher Boessenkool
12705913ef simplify-rtx: Fix the last fix (PR78638)
I managed to get the last obvious fix wrong: mode is M1, GET_MODE (op)
is M2.

[ adding missing PR marker ]


	PR rtl-optimization/78638
	* simplify-rtx.c (simplify_truncation): M2 is not mode, it is
	GET_MODE (op).  Fix this.

From-SVN: r243420
2016-12-08 01:09:01 +01:00
Martin Sebor
ee92e7bafb PR c/53562 - Add -Werror= support for -D_FORTIFY_SOURCE / __builtin___memcpy_chk
PR c/53562 - Add -Werror= support for -D_FORTIFY_SOURCE / __builtin___memcpy_chk
PR middle-end/77784 - duplicate warning for snprintf when n > object size
PR middle-end/78149 - missing warning on strncpy buffer overflow due to an excessive bound
PR middle-end/78138 - missing warnings on buffer overflow with non-constant source length

gcc/c-family/ChangeLog:

	PR c/53562
	PR middle-end/77784
	PR middle-end/78149
	PR middle-end/78138
	* c.opt (-Wstringop-overflow): New option.

gcc/ChangeLog:

	PR middle-end/77784
	PR middle-end/78149
	PR middle-end/78138
	
	* builtins.c (expand_builtin_strcat, expand_builtin_strncat): New
	functions.
	(compute_dest_size, get_size_range, check_sizes, check_strncat_sizes)
	(check_memop_sizes): Same.
	(expand_builtin_memcpy): Call check memop_sizes.
	(expand_builtin_mempcpy): Same.
	(expand_builtin_memset): Same,
	(expand_builtin_bzero): Same.
	(expand_builtin_memory_chk): Call check_sizes.
	(expand_builtin_strcpy): Same.
	(expand_builtin_strncpy): Same.
	(maybe_emit_sprintf_chk_warning): Same.
	(expand_builtin): Handle strcat and strncat.
	(fini_object_sizes): Reset pointers.
	(compute_object_size): New function.
	* gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call):
	Avoid issuing warnings also issued during built-in expansion.
	* doc/invoke.texi (Warning Options): Document -Wstringop-overflow.

gcc/testsuite/ChangeLog:

	PR middle-end/77784
	PR middle-end/78149
	PR middle-end/78138

	* c-c++-common/Wsizeof-pointer-memaccess2.c: Adjust expected diagnostic.
	* g++.dg/ext/builtin-object-size3.C (bar): Same.
	* g++.dg/ext/strncpy-chk1.C: Same.
	* g++.dg/opt/memcpy1.C: Same.
	* g++.dg/torture/Wsizeof-pointer-memaccess1.C: Same.
	* gcc.c-torture/compile/pr55569.c: Disable -Wstringop-overflow.
	* gcc.dg/Wobjsize-1.c: Adjust expected diagnostic.
	* gcc.dg/attr-alloc_size.c: Same.
	* gcc.dg/builtin-stringop-chk-1.c: Adjust expected diagnostic.
	* gcc.dg/builtin-stringop-chk-2.c: Same.
	* gcc.dg/builtin-stringop-chk-4.c: New test.
	* gcc.dg/builtin-strncat-chk-1.c: Adjust expected diagnostic.
	* gcc.dg/memcpy-2.c: Same.
	* gcc.dg/pr40340-1.c: Same.
	* gcc.dg/pr40340-2.c (main): Same.
	* gcc.dg/pr40340-5.c (main): Same.
	* gcc.dg/torture/Wsizeof-pointer-memaccess1.c: Same.
	* gcc.dg/torture/pr71132.c: Disable -Wstringop-overflow.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust text of expected
	warning.
	* gfortran.dg/char_length_3.f90: Prune expected warnings.
	* gfortran.dg/pr38868.f: Add expected warnings.

From-SVN: r243419
2016-12-07 17:01:33 -07:00
Michael Meissner
fc3f36f9a1 re PR target/72717 (ICE: in emit_move_insn, at expr.c:3693 with vector shift @ powerpc64le)
[gcc]
2016-12-07  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/72717
	* config/rs6000/rs6000.c (rs6000_expand_vector_init): If the
	V2DImode elements are SUBREG's convert the result into DImode
	rather than failing in emit_move_insn.

[gcc/testsuite]
2016-12-07  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/72717
	* gcc.target/powerpc/pr72717.c: New test.

From-SVN: r243418
2016-12-07 23:52:05 +00:00
Alan Modra
18697a1de7 sync config/* from binutils
* elf.m4: Revert 2016-06-21 change.
	* picflag.m4: Likewise.  Revert 2016-04-30 change too.
	* override.m4 (AC_PROG_LEX): Import 2016-01-18 binutils fix
	for PR binutils/19481.

From-SVN: r243417
2016-12-08 09:46:03 +10:30
François Dumont
352f824f09 2016-12-07 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_tree.h
	(_Rb_tree<>::_M_copy(_Const_Link_type, _Base_ptr)): Delete.
	(_Rb_tree<>::_M_copy(const _Rb_tree&, _NodeGen&)): New.
	(_Rb_tree<>::_M_copy(const _Rb_tree&)): New, use latter.
	(_Rb_tree<>(const _Rb_tree&): Use latter.
	(_Rb_tree<>(const _Rb_tree&, const allocator_type&)): Likewise.
	(_Rb_tree<>::_M_move_data(_Rb_tree&, false_type)): Likewise.
	(_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Likewise.
	(_Rb_tree<>::operator=(const _Rb_tree&)): Likewise.

From-SVN: r243380
2016-12-07 21:16:24 +00:00
François Dumont
a4dec0d6de stl_map.h (map(const map&)): Make default.
2016-12-07  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/stl_map.h (map(const map&)): Make default.
	(map(map&&)): Likewise.
	(~map()): Likewise.
	(operator=(const map&)): Likewise.
	* include/bits/stl_multimap.h (multimap(const multimap&)): Make default.
	(multimap(multimap&&)): Likewise.
	(~multimap()): Likewise.
	(operator=(const multimap&)): Likewise.
	* include/bits/stl_set.h (set(const set&)): Make default.
	(set(set&&)): Likewise.
	(~set()): Likewise.
	(operator=(const set&)): Likewise.
	* include/bits/stl_multiset.h (multiset(const multiset&)): Make default.
	(multiset(multiset&&)): Likewise.
	(~multiset()): Likewise.
	(operator=(const multiset&)): Likewise.
	* include/bits/stl_tree.h (_Rb_tree_key_compare<>): New.
	(_Rb_tree_header): New.
	(_Rb_tree_impl): Inherit from latters.
	(_Rb_tree_impl()): Make default.
	(_Rb_tree_impl(const _Rb_tree_impl&)): New.
	(_Rb_tree<>(const _Rb_tree&): Use latter.
	(_Rb_tree_impl(_Rb_tree_impl&&)): New, default.
	(_Rb_tree_impl(const _Key_compare&, const _Node_allocator&)): Delete.
	(_Rb_tree_impl::_M_reset): Move...
	(_Rb_tree_header::_M_reset): ...here.
	(_Rb_tree_impl::_M_initialize): Delete.
	(_Rb_tree(_Rb_tree&&)): Make default.
	(_Rb_tree_header::_M_move_data(_Rb_tree_header&)): New.
	(_Rb_tree<>::_M_move_data(_Rb_tree&, true_type)): Use latter.
	(_Rb_tree<>(_Rb_tree&&)): Make default.

From-SVN: r243379
2016-12-07 21:12:49 +00:00
Jakub Jelinek
c89529306c builtins.c (fold_builtin_strstr): Removed.
* builtins.c (fold_builtin_strstr): Removed.
	(fold_builtin_2): Don't call fold_builtin_strstr.
	* gimple-fold.c (gimple_fold_builtin_strchr): Check is_strrchr
	earlier in the strrchr (x, 0) -> strchr (x, 0) optimization.
	(gimple_fold_builtin_strstr): New function.
	(gimple_fold_builtin): Call it.
	* fold-const-call.c (fold_const_call): Handle CFN_BUILT_IN_STRSTR.

	* gcc.dg/builtin-strstr-1.c: New test.
	* g++.dg/cpp0x/constexpr-strstr.C: New test.

From-SVN: r243378
2016-12-07 20:45:45 +01:00
Jakub Jelinek
77f1efdbe8 re PR tree-optimization/78692 (ICE (segfault))
PR c++/78692
	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Set lhs
	var to lhs of new_stmt right before noreturn handling rather than to
	lhs of e->call_stmt early.

	* g++.dg/torture/pr78692.C: New test.

From-SVN: r243377
2016-12-07 20:10:50 +01:00
David Malcolm
9c4e96eb1e Add some functions for use by the RTL frontend.
gcc/ChangeLog:
	* read-md.c (rtx_reader::require_char): New method.
	(require_char_ws): Convert from function to...
	(rtx_reader::require_char_ws): ...method.
	(rtx_reader::require_word_ws): New method.
	* read-md.h (rtx_reader::require_char): New method decl.
	(require_char_ws): Remove global decl in favor of...
	(rtx_reader::require_char_ws): ...new method decl.
	(rtx_reader::require_word_ws): New method decl.
	(rtx_reader::peek_char): New method decl.

From-SVN: r243376
2016-12-07 18:16:32 +00:00
Thomas Preud'homme
8e1d640fcd re PR rtl-optimization/78617 (LRA clobbers live register during rematerialization)
2016-12-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    PR rtl-optimization/78617
    * lra-remat.c (do_remat): Initialize live_hard_regs from live in
    registers, also setting hard registers mapped to pseudo registers.

    gcc/testsuite/
    PR rtl-optimization/78617
    * gcc.c-torture/execute/pr78617.c: New test.

From-SVN: r243374
2016-12-07 17:56:53 +00:00
David Malcolm
8194c53746 Introduce rtl_data::init_stack_alignment
Move this part of "expand"'s initialization of crtl into its own
method so that it can used by the RTL frontend when postprocessing
RTL dumps.

gcc/ChangeLog:
	* cfgexpand.c (pass_expand::execute): Move stack initializations
	to rtl_data::init_stack_alignment and call it.
	* emit-rtl.c (rtl_data::init_stack_alignment): New method.
	* emit-rtl.h (rtl_data::init_stack_alignment): New method.

From-SVN: r243371
2016-12-07 16:41:05 +00:00
Carl Love
27e7087f51 builtins-3.c: Move built-in tests for P8 and P9 to their own test file.
2016-12-07  Carl Love  <cel@us.ibm.com>

	* gcc.target/powerpc/builtins-3.c: Move built-in tests for P8 and
	P9 to their own test file.  This allows precise constraints on the
	effective target and compile options.
	* gcc.target/powerpc/builtins-3-p8.c: New file for the vector
	compare P8 built-in tests.
	* gcc.target/powerpc/builtins-3-p9.c: New file for the vector
	compare P9 built-in tests.

From-SVN: r243370
2016-12-07 16:21:16 +00:00
Uros Bizjak
4dfad1fb0d pr77761.c: Require int128 effective target.
* gcc.target/i386/pr77761.c: Require int128 effective target.
	(avx512f_test): Delete.
	(do_main): Rename to avx512f_test.

From-SVN: r243367
2016-12-07 16:56:30 +01:00
Jonathan Wakely
435f434288 Replace uses of C++14 remove_cv_t alias in C++11 header
* include/experimental/bits/fs_path.h (path::_S_convert): Replace
	uses of C++14 std::remove_cv_t alias template.

From-SVN: r243355
2016-12-07 15:23:01 +00:00
Jonathan Wakely
d71f5aa799 Replace use of C++14 std::exchange in C++11 testcase
* testsuite/28_regex/traits/char/user_defined.cc: Replace uses of
	C++14 std::exchange function.

From-SVN: r243354
2016-12-07 15:22:57 +00:00
Jonathan Wakely
1f153a1d2a Replace dynamic exception specifications in testsuite
* testsuite/util/testsuite_hooks.h (THROW): Define.
	* testsuite/util/replacement_memory_operators.h: Include
	testsuite_hooks.h and use THROW macro.
	* testsuite/util/testsuite_tr1.h: Likewise.
	* testsuite/20_util/allocator/1.cc: Use THROW macro.
	* testsuite/22_locale/locale/cons/12352.cc: Likewise.
	* testsuite/23_containers/vector/zero_sized_allocations.cc: Likewise.
	* testsuite/30_threads/lock_guard/cons/1.cc: Replace dynamic exception
	specification with noexcept-specifier.
	* testsuite/ext/pool_allocator/allocate_chunk.cc: Include
	testsuite_hooks.h and use THROW macro.
	* testsuite/ext/profile/replace_new.cc: Likewise.

From-SVN: r243353
2016-12-07 15:22:51 +00:00
Jonathan Wakely
ba454dfbbe Use _GLIBCXX_THROW macro in bitmap_allocator
* include/ext/bitmap_allocator.h (bitmap_allocator::_S_refill_pool)
	(bitmap_allocator::_M_allocate_single_object)
	(bitmap_allocator::_M_get): Use _GLIBCXX_THROW macro.

From-SVN: r243352
2016-12-07 15:22:44 +00:00
Jonathan Wakely
101ee3cc73 Disable test using std::set_unexcepted for C++17
* testsuite/18_support/bad_exception/59392.cc: Disable for C++17.

From-SVN: r243351
2016-12-07 15:22:37 +00:00
Jonathan Wakely
63915a91ab Improve tests for contents of <new> header
* testsuite/18_support/headers/new/synopsis.cc: Add C++14 and C++17
	declarations.
	* testsuite/18_support/headers/new/synopsis_cxx98.cc: New test.

From-SVN: r243349
2016-12-07 15:22:24 +00:00
Wilco Dijkstra
0064f49e76 GCC caches the whether a function is a leaf in crtl->is_leaf.
GCC caches the whether a function is a leaf in crtl->is_leaf. Using this
in the backend is best as leaf_function_p may not work correctly (eg. while
emitting prolog or epilog code).  There are many reads of crtl->is_leaf
before it is initialized.  Many targets do in targetm.frame_pointer_required
(eg. arm, aarch64, i386, mips, sparc), which is called before register 
allocation by ira_setup_eliminable_regset and sched_init.

Additionally, SHRINK_WRAPPING_ENABLED calls targetm.have_simple_return,
which evaluates the condition of the simple_return instruction.  On ARM
this results in a call to use_simple_return_p which requires crtl->is_leaf
to be set correctly.

To fix this, initialize crtl->is_leaf in ira_setup_eliminable_regset and
early on in ira.  A bootstrap did not find any uninitialized reads of
crtl->is_leaf on Thumb-2.  A follow-up patch will remove incorrect uses
of leaf_function_p from the ARM backend.

    gcc/
	* gcc/ira.c (ira_setup_eliminable_regset): Initialize crtl->is_leaf.
	(ira): Move initialization of crtl->is_leaf earlier.

From-SVN: r243347
2016-12-07 14:55:31 +00:00
Wilco Dijkstra
8734dfacbb Improve TI mode address offsets - these may either use LDP of 64-bit or LDR of 128-bit...
Improve TI mode address offsets - these may either use LDP of 64-bit or
LDR of 128-bit, so we need to use the correct intersection of offsets.
When splitting a large offset into base and offset, use a signed 9-bit 
unscaled offset.

Remove the Ump constraint on movti and movtf instructions as this blocks
the reload optimizer from merging address CSEs (is this supposed to work
only on 'm' constraints?).  The result is improved codesize, especially
wrf and gamess in SPEC2006.

    gcc/
	* config/aarch64/aarch64.md (movti_aarch64): Change Ump to m.
	(movtf_aarch64): Likewise.
	* config/aarch64/aarch64.c (aarch64_classify_address):
	Use correct intersection of offsets.
	(aarch64_legitimize_address_displacement): Use 9-bit signed offsets.
	(aarch64_legitimize_address): Use 9-bit signed offsets for TI/TF mode.
	Use 7-bit signed scaled mode for modes > 16 bytes.

From-SVN: r243346
2016-12-07 14:44:45 +00:00
James Greenhalgh
da88ea0265 [Patch PR78561 PowerPC] Revert to old behaviour for counting constant pools
gcc/

	PR rtl-optimization/78561
	* config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p) Use
	constant_pool_empty_p in place of get_pool_size_upper_bound.
	(rs6000_stack_info): Likewise.
	(rs6000_emit_prologue): Likewise.
	(rs6000_elf_declare_function_name): Likewise.
	(rs6000_set_up_by_prologue): Likewise.
	(rs6000_can_eliminate): Likewise.
	* output.h (get_pool_size_upper_bound): Delete.
	(constant_pool_empty_p): New.
	* varasm.c (get_pool_size_upper_bound): Delete
	(constant_pool_empty_p): New.

From-SVN: r243345
2016-12-07 14:01:59 +00:00
Martin Jambor
716c5aced1 Use dump_function_name rather than emit <built-in>
2016-12-07  Martin Jambor  <mjambor@suse.cz>

	PR c++/78589
	* error.c (dump_decl): Use dump_function_name to dump
	!DECL_LANG_SPECIFIC function decls with no or self-referencing
	abstract origin.

From-SVN: r243344
2016-12-07 14:09:07 +01:00
Nathan Sidwell
098eae0067 pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>): Simplify control flow and avoid re-tsubsting type.
* pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow
	and avoid re-tsubsting type.

From-SVN: r243343
2016-12-07 13:00:02 +00:00
Nathan Sidwell
b3235e974f cp-tree.h (enum cp_tree_index): Add CPTI_AUTO_IDENTIFIER & CPTI_DECLTYPE_AUTO_IDENTIFIER.
* cp-tree.h (enum cp_tree_index): Add CPTI_AUTO_IDENTIFIER &
	CPTI_DECLTYPE_AUTO_IDENTIFIER.
	(auto_identifier, decltype_auto_identifier): New.
	*decl.c (initialize_predefined_identifiers): Add 'auto' and
	'decltype(auto)'.
	(grokdeclarator): Use cached identifier.
	* pt.c (make_decltype_auto, make_auto, make_constrained_auto,
	is_auto): Likewise.

From-SVN: r243342
2016-12-07 12:52:39 +00:00
Pierre-Marie de Rodat
bbe9a71dff decl.c (gnat_to_gnu_entity): When they are global...
* gcc-interface/decl.c (gnat_to_gnu_entity): When they are global,
	consider ___XR GNAT encodings variables for renamings as static so
	they have a location in the debug info.

From-SVN: r243341
2016-12-07 12:04:01 +00:00
Eric Botcazou
f2e04c79ac decl.c (gnat_to_gnu_entity): Translate System.Address into ptr_type_node for every foreign convention.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Translate
	System.Address into ptr_type_node for every foreign convention.
	(gnat_to_gnu_subprog_type): Likewise for result and parameter types.
	(gnat_to_gnu_param): Do not do it here for GCC builtins.
	(intrin_return_compatible_p): Likewise.

From-SVN: r243340
2016-12-07 11:47:25 +00:00
Eric Botcazou
aa35e3ba8e Adjust comment
From-SVN: r243338
2016-12-07 11:29:28 +00:00
Eric Botcazou
2c1f5c0a34 decl.c (gnat_to_gnu_entity): Also call finish_character_type on Character subtypes.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Enumeration_Subtype>:
	Also call finish_character_type on Character subtypes.
	* gcc-interface/utils.c (finish_character_type): Deal with subtypes.

From-SVN: r243336
2016-12-07 11:25:37 +00:00
Bin Cheng
ebf4173488 re PR middle-end/78691 (ICE compiling Linux boot code)
PR tree-optimization/78691
	* match.pd ((convert1 (minmax ((convert2 (x) c)))) -> minmax (x c)):
	Require integral type for the outer expression.
	gcc/testsuite
	PR tree-optimization/78691
	* gcc.target/i386/pr78691-i386.c: New test.
	* gcc.target/powerpc/pr78691-ppc.c: New test.

From-SVN: r243335
2016-12-07 10:14:58 +00:00
Rainer Orth
81a58ffbb7 Compile gcc.target/i386/pr70322-?.c with -mno-stackrealign
* gcc.target/i386/pr70322-1.c: Add -mno-stackrealign to dg-options.
	* gcc.target/i386/pr70322-2.c: Likewise.
	* gcc.target/i386/pr70322-3.c: Likewise.
	* gcc.target/i386/pr70322-4.c: Likewise.

From-SVN: r243334
2016-12-07 08:53:45 +00:00
Naveen H.S
7df7674711 2016-12-07 Naveen H.S <Naveen.Hurugalawadi@cavium.com>
gcc
	* config/aarch64/aarch64.c
	(aarch64_builtin_support_vector_misalignment): New.
	(TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Define.
gcc/testsuite
	* gcc.target/aarch64/pr71727.c : New Testcase.

From-SVN: r243333
2016-12-07 03:10:59 +00:00
David Malcolm
fd1c9a07d4 Fix x86_64-ism in selftest (PR bootstrap/78705)
In r243317 I accidentally introduced an assumption in a selftest
in i386.c that Pmode == DImode.  This patch conditionalizes the
overzealous string comparison to avoid breaking the build on
32-bit i386.c targets.

gcc/ChangeLog:
	PR bootstrap/78705
	* config/i386/i386.c (selftest::ix86_test_dumping_memory_blockage):
	Conditionalize the string comparison on Pmode == DImode.

From-SVN: r243332
2016-12-07 01:28:13 +00:00
GCC Administrator
b9e8329d65 Daily bump.
From-SVN: r243328
2016-12-07 00:16:19 +00:00
Tom de Vries
8194dcdd37 re PR tree-optimization/67955 (tree-dse does not use pointer info)
PR tree-optimization/67955
	* tree-ssa-alias.c (same_addr_size_stores_p): New function.
	(stmt_kills_ref_p): Use it.

	PR tree-optimization/67955
	* gcc.dg/tree-ssa/dse-points-to.c: New test.

From-SVN: r243325
2016-12-06 16:18:17 -07:00
Eric Botcazou
6b8805cfce Put back blank line
From-SVN: r243324
2016-12-06 22:51:32 +00:00
Eric Botcazou
78bcf3dc72 re PR middle-end/78700 (gccgo testcases stack.go, recover.go, crypto/tls fails)
PR middle-end/78700
	* calls.c (expand_call): Move back call to prepare_call_address.

From-SVN: r243322
2016-12-06 22:47:00 +00:00
Than McIntosh
a5a56d88a1 compiler: pass lvalue/rvalue context to back end for var exprs
Add a new flag on the Var_expression class that indicates
    whether the var reference appears in an "lvalue" context
    (for example, on the LHS of an assignment stmt) or an
    "rvalue" context (for example, as an argument of a call).
    
    Add a traversal pass that visits assignment stmt LHS subtrees
    so as to mark things prior to backend gen. Select the right
    context value in other places where Backend::var_expression is
    called.
    
    Reviewed-on: https://go-review.googlesource.com/33990

	* go-gcc.cc (Gcc_backend::var_expression): Add Varexpr_context
	parameter.

From-SVN: r243321
2016-12-06 22:31:25 +00:00
Michael Meissner
dd5af1d617 re PR target/78658 (powerpc64le: ICE with -mcpu=power9 -Og)
[gcc]
2016-12-06  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/78658
	* config/rs6000/rs6000.md (zero_extendqi<mode>2): Use ^ instead of
	?* constraints for the ISA 3.0 patterns, so the register allocator
	is more likely to allocate QImode/HImode to vector registers for
	conversion to floating point unless a reload is needed.
	(zero_extendhi<mode>2): Likewise.
	(float<QHI:mode><FP_ISA3:mode>2_internal): Properly deal with the
	first alternative which is converting QImode/HImode to floating
	point and the QImode/HImode value is in a vector register, and
	does not allocate the second pseudo register.  Remove zero
	extending into traditional floating point registers, since the
	instruction used only works on traditional altivec registers.
	(floatuns<QHI:mode><FP_ISA3:mode>2_internal): Likewise.

[gcc/testsuite]
2016-12-06  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/78658
	* gcc.target/powerpc/pr78658.c: New test.

From-SVN: r243320
2016-12-06 22:15:31 +00:00