Commit Graph

164601 Commits

Author SHA1 Message Date
Wilco Dijkstra
0cfc095c8d [AArch64] Support zero-extended move to FP register
The popcount expansion uses SIMD instructions acting on 64-bit values.
As a result a popcount of a 32-bit integer requires zero-extension before 
moving the zero-extended value into an FP register.  This patch adds
support for zero-extended int->FP moves to avoid the redundant uxtw.
Similarly, add support for 32-bit zero-extending load->FP register
and 32-bit zero-extending FP->FP and FP->int moves.
Add a missing 'fp' arch attribute to the related 8/16-bit pattern and
fix an incorrect type attribute.

To complete zero-extended load support, add a new alternative to 
load_pair_zero_extendsidi2_aarch64 to support LDP into FP registers too.

int f (int a)
{
  return __builtin_popcount (a);
}

Before:
	uxtw	x0, w0
	fmov	d0, x0
	cnt	v0.8b, v0.8b
	addv	b0, v0.8b
	fmov	w0, s0
	ret

After:
	fmov	s0, w0
	cnt	v0.8b, v0.8b
	addv	b0, v0.8b
	fmov	w0, s0
	ret

Passes regress & bootstrap on AArch64.

    gcc/
	* config/aarch64/aarch64.md (zero_extendsidi2_aarch64): Add alternatives
	to zero-extend between int and floating-point registers.
	(load_pair_zero_extendsidi2_aarch64): Add alternative for zero-extended
	ldp into floating-point registers.  Add type and arch attributes.
	(zero_extend<SHORT:mode><GPI:mode>2_aarch64): Add arch attribute.
	Use f_loads for type attribute.

    testsuite/
	* gcc.target/aarch64/popcnt.c: Test zero-extended popcount.
	* gcc.target/aarch64/vec_zeroextend.c: Test zero-extended vectors.

From-SVN: r265079
2018-10-12 10:49:27 +00:00
Christophe Lyon
4dc003fffa Fix typo in previous commit.
2018-10-12  Christophe Lyon  <christophe.lyon@linaro.org>

	PR c++/87364
	* c-pretty-print.c (c_pretty_printer::constant): Fix typo.

From-SVN: r265078
2018-10-12 09:38:05 +02:00
Will Wray
79371671cb re PR c++/87364 (Pretty print of enumerator never prints the id, always falls back to C-style cast output)
PR c++/87364
	* c-pretty-print.h (pp_c_type_cast): Prototype.
	(pp_c_integer_constant): Likewise.
	* c-pretty-print.c (pp_c_type_cast): No longer static.
	(pp_c_integer_constant): Likewise.
	(pp_c_enumeration_constant): Fix loop termination when finding
	name of constant.  No longer returns a value.  Call
	pp_c_integer_constant.
	(c_pretty_printer::constant): Update for changes to
	pp_c_enumeration_constant.

	PR c++/87364
	* cxx-pretty-print.c (pp_cxx_enumeration_constant): New function.
	(cxx_pretty_printer::constant): Use it.

From-SVN: r265077
2018-10-11 21:35:48 -06:00
Martin Sebor
0b8c3649a5 extend.texi (attribute packed): Correct typos.
gcc/ChangeLog:

	* doc/extend.texi (attribute packed): Correct typos.

From-SVN: r265076
2018-10-11 21:18:23 -06:00
Martin Sebor
02f8305836 extend.texi (attribute flatten): Mention interaction with noinline.
gcc/ChangeLog:

	* doc/extend.texi (attribute flatten): Mention interaction with
	noinline.

From-SVN: r265075
2018-10-11 21:16:10 -06:00
Jan Hubicka
97ae2126ca re PR target/87156 (ICE building libstdc++ for mips64)
PR target/87156
	* cgraphclones.c (cgraph_node::create_version_clone_with_body):
	Set new_decl virtual flag to zero.

From-SVN: r265074
2018-10-11 20:40:17 -06:00
Martin Sebor
bf142d1570 PR middle-end/87593 - conflicting format_arg attributes on a declaration accepted
gcc/ChangeLog:

	* doc/extend.texi (attribute format_arg): Discuss using multiple
	attributes on a single function.

From-SVN: r265073
2018-10-11 19:42:08 -06:00
GCC Administrator
ccd20ab691 Daily bump.
From-SVN: r265072
2018-10-12 00:16:46 +00:00
Jonathan Wakely
49cb790a4c PR libstdc++/77691 increase allocation size to at least alignment
It's not safe to assume that malloc(n) returns memory aligned to more
than n, so when relying on the guaranteed alignment of malloc ensure
that the number of bytes allocated is at least as large as the
alignment.

	PR libstdc++/77691
	* include/experimental/memory_resource (__resource_adaptor_imp): Do
	not allocate sizes smaller than alignment when relying on guaranteed
	alignment.
	* testsuite/experimental/memory_resource/new_delete_resource.cc:
	Adjust expected number of bytes allocated for alignof(max_align_t).

From-SVN: r265068
2018-10-12 00:21:11 +01:00
Will Schmidt
47d31f1aa4 fold-vec-insert-char-p8.c: New.
[testsuite]

2018-10-10  Will Schmidt  <will_schmidt@vnet.ibm.com>

	* gcc.target/powerpc/fold-vec-insert-char-p8.c: New.
	* gcc.target/powerpc/fold-vec-insert-char-p9.c: New.
	* gcc.target/powerpc/fold-vec-insert-double.c: New.
	* gcc.target/powerpc/fold-vec-insert-float-p8.c: New.
	* gcc.target/powerpc/fold-vec-insert-float-p9.c: New.
	* gcc.target/powerpc/fold-vec-insert-int-p8.c: New.
	* gcc.target/powerpc/fold-vec-insert-int-p9.c: New.
	* gcc.target/powerpc/fold-vec-insert-longlong.c: New.
	* gcc.target/powerpc/fold-vec-insert-short-p8.c: New.
	* gcc.target/powerpc/fold-vec-insert-short-p9.c: New.

From-SVN: r265067
2018-10-11 21:31:32 +00:00
Will Schmidt
3c32917793 fold-vec-extract-char.p7.c: New.
[testsuite]
	* gcc.target/powerpc/fold-vec-extract-char.p7.c: New.
	* gcc.target/powerpc/fold-vec-extract-char.p8.c: New.
	* gcc.target/powerpc/fold-vec-extract-char.p9.c: New.
	* gcc.target/powerpc/fold-vec-extract-double.p7.c: New.
	* gcc.target/powerpc/fold-vec-extract-double.p8.c: New.
	* gcc.target/powerpc/fold-vec-extract-double.p9.c: New.
	* gcc.target/powerpc/fold-vec-extract-float.p7.c: New.
	* gcc.target/powerpc/fold-vec-extract-float.p8.c: New.
	* gcc.target/powerpc/fold-vec-extract-float.p9.c: New.
	* gcc.target/powerpc/fold-vec-extract-int.p7.c: New.
	* gcc.target/powerpc/fold-vec-extract-int.p8.c: New.
	* gcc.target/powerpc/fold-vec-extract-int.p9.c: New.
	* gcc.target/powerpc/fold-vec-extract-longlong.p7.c: New.
	* gcc.target/powerpc/fold-vec-extract-longlong.p8.c: New.
	* gcc.target/powerpc/fold-vec-extract-longlong.p9.c: New.
	* gcc.target/powerpc/fold-vec-extract-short.p7.c: New.
	* gcc.target/powerpc/fold-vec-extract-short.p8.c: New.
	* gcc.target/powerpc/fold-vec-extract-short.p9.c: New.

From-SVN: r265066
2018-10-11 21:25:23 +00:00
Will Schmidt
d9519daf1e fold-vec-select-char.c: New.
[testsuite]

2018-10-11  Will Schmidt  <will_schmidt@vnet.ibm.com>

	* gcc.target/powerpc/fold-vec-select-char.c: New.
	* gcc.target/powerpc/fold-vec-select-double.c: New.
	* gcc.target/powerpc/fold-vec-select-float.c: New.
	* gcc.target/powerpc/fold-vec-select-int.c: New.
	* gcc.target/powerpc/fold-vec-select-longlong.c: New.
	* gcc.target/powerpc/fold-vec-select-short.c: New.

From-SVN: r265065
2018-10-11 21:10:12 +00:00
Giuliano Belinassi
121ef08b0b re PR tree-optimization/86829 (Missing sin(atan(x)) and cos(atan(x)) optimizations)
PR tree-optimization/86829
	* match.pd (sin (atan (x))): New simplification rules.
	(cos (atan (x))): Likewise.
	* real.c (build_sinatan_real): New function.
	* real.h (build_sinatan_real): Prototype.

	PR tree-optimization/86829
	* gcc.dg/sinatan-1.c: New test.
	* gcc.dg/sinatan-2.c: New test.
	* gcc.dg/sinatan-3.c: New test.

From-SVN: r265064
2018-10-11 15:06:12 -06:00
Will Schmidt
ea010af6b4 rs6000.c (map_to_integral_tree_type): New helper function.
[gcc]

2018-10-09  Will Schmidt <will_schmidt@vnet.ibm.com>

	* config/rs6000/rs6000.c (map_to_integral_tree_type): New helper
	function.
	(fold_mergeeo_helper): New helper function.
	(rs6000_gimple_fold_builtin): Add hooks for vec_mergee and vec_mergeo
	intrinsics.  Correct some whitespace indentation issues.

From-SVN: r265063
2018-10-11 21:03:30 +00:00
Will Schmidt
5746195cdc fold-vec-mergeeo-floatdouble.c: New.
[testsuite]

2018-10-09  Will Schmidt  <will_schmidt@vnet.ibm.com>

	* gcc.target/powerpc/fold-vec-mergeeo-floatdouble.c: New.
	* gcc.target/powerpc/fold-vec-mergeeo-int.c: New.
	* gcc.target/powerpc/fold-vec-mergeeo-longlong.c: New.

From-SVN: r265062
2018-10-11 20:59:15 +00:00
François Dumont
3e670ecf0b 2018-10-11 François Dumont <fdumont@gcc.gnu.org>
* include/debug/forward_list
	(forward_list<>::before_begin()): Use C++11 direct initialization.
	(forward_list<>::begin()): Likewise.
	(forward_list<>::end()): Likewise.
	(forward_list<>::cbefore_begin()): Likewise.
	(forward_list<>::cbegin()): Likewise.
	(forward_list<>::cend()): Likewise.
	(forward_list<>::emplace_after<>(const_iterator, _Args&&...)): Likewise.
	(forward_list<>::insert_after(const_iterator, const _Tp&)): Likewise.
	(forward_list<>::insert_after(const_iterator, _Tp&&)): Likewise.
	(forward_list<>::insert_after(const_iterator, size_type, const _Tp&)):
	Likewise.
	(forward_list<>::insert_after(const_iterator, initializer_list<>)):
	Likewise.
	(forward_list<>::erase_after(const_iterator)): Likewise.
	(forward_list<>::erase_after(const_iterator, const_iterator)): Likewise
	and ensure consistent iterator comparison.

From-SVN: r265061
2018-10-11 20:47:13 +00:00
François Dumont
91febb0e2b 2018-10-11 François Dumont <fdumont@gcc.gnu.org>
* include/bits/forward_list.h
	(_Fwd_list_iterator<>::operator==): Replace member function with inline
	friend.
	(_Fwd_list_iterator<>::operator!=): Likewise.
	(_Fwd_list_const_iterator<>::operator==): Likewise.
	(_Fwd_list_const_iterator<>::operator!=): Likewise.
	(operator==(const _Fwd_list_iterator<>&,
	const _Fwd_list_const_iterator<>&)): Remove.
	(operator!=(const _Fwd_list_iterator<>&,
	const _Fwd_list_const_iterator<>&)): Remove.
	(forward_list<>::_Node): Take typedef from base type.
	(forward_list<>::iterator): Likewise.
	(forward_list<>::const_iterator): Likewise.

From-SVN: r265060
2018-10-11 20:21:57 +00:00
Tobias Burnus
2c4f9ec162 revert: re PR fortran/83522 (ICE on allocatable string reference, string(:)(:))
2018-10-11  Tobias Burnus <burnus@net-b.de>

        Revert:
        2018-10-09  Tobias Burnus <burnus@net-b.de>

        PR fortran/83522
        * resolve.c (resolve_ref): Reject nonscalar
        substring references.

2018-10-11  Tobias Burnus <burnus@net-b.de>

        Revert:
        2018-10-09  Tobias Burnus <burnus@net-b.de>

        PR fortran/83522
        * gfortran.dg/actual_array_substr_1.f90: Add dg-error,
        change to dg-do compile.
        * gfortran.dg/actual_array_substr_2.f90: Ditto.
        * gfortran.dg/array_initializer_1.f90: Use array
        element not size-one section.
        * gfortran.dg/array_substring.f90: New.

From-SVN: r265059
2018-10-11 21:37:28 +02:00
Wilco Dijkstra
1b6acf2339 [AArch64] Fix PR87511
As mentioned in PR87511, the shift used in aarch64_mask_and_shift_for_ubfiz_p
should be evaluated as a HOST_WIDE_INT rather than int.

Passes bootstrap & regress.

    gcc/
	PR target/87511
	* config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p):
	Use HOST_WIDE_INT_1U for shift.

    testsuite/
	PR target/87511
	* gcc.target/aarch64/pr87511.c: Add new test.

From-SVN: r265058
2018-10-11 19:10:12 +00:00
David Malcolm
03f6d32edb C++: suggestions for misspelled private members (PR c++/84993)
PR c++/84993 identifies a problem with our suggestions for
misspelled member names in the C++ FE for the case where the
member is private.

For example, given:

class foo
{
public:
  double get_ratio() const { return m_ratio; }

private:
  double m_ratio;
};

void test(foo *ptr)
{
  if (ptr->ratio >= 0.5)
    ;// etc
}

...we currently emit this suggestion:

<source>: In function 'void test(foo*)':
<source>:12:12: error: 'class foo' has no member named 'ratio'; did you mean 'm_ratio'?
   if (ptr->ratio >= 0.5)
            ^~~~~
            m_ratio

...but if the user follows this suggestion, they get:

<source>: In function 'void test(foo*)':
<source>:12:12: error: 'double foo::m_ratio' is private within this context
   if (ptr->m_ratio >= 0.5)
            ^~~~~~~
<source>:7:10: note: declared private here
   double m_ratio;
          ^~~~~~~
<source>:12:12: note: field 'double foo::m_ratio' can be accessed via 'double foo::get_ratio() const'
   if (ptr->m_ratio >= 0.5)
            ^~~~~~~
            get_ratio()

It feels wrong to be emitting a fix-it hint that doesn't compile, so this
patch adds the accessor fix-it hint logic to this case, so that we directly
offer a valid suggestion:

<source>: In function 'void test(foo*)':
<source>:12:12: error: 'class foo' has no member named 'ratio'; did you mean
'double foo::m_ratio'? (accessible via 'double foo::get_ratio() const')
   if (ptr->ratio >= 0.5)
            ^~~~~
            get_ratio()

gcc/cp/ChangeLog:
	PR c++/84993
	* call.c (enforce_access): Move diagnostics to...
	(complain_about_access): ...this new function.
	* cp-tree.h (class access_failure_info): Rename split out field
	"m_field_decl" into "m_decl" and "m_diag_decl".
	(access_failure_info::record_access_failure): Add tree param.
	(access_failure_info::was_inaccessible_p): New accessor.
	(access_failure_info::get_decl): New accessor.
	(access_failure_info::get_diag_decl): New accessor.
	(access_failure_info::get_any_accessor): New member function.
	(access_failure_info::add_fixit_hint): New static member function.
	(complain_about_access): New decl.
	* typeck.c (access_failure_info::record_access_failure): Update
	for change to fields.
	(access_failure_info::maybe_suggest_accessor): Split out into...
	(access_failure_info::get_any_accessor): ...this new function...
	(access_failure_info::add_fixit_hint): ...and this new function.
	(finish_class_member_access_expr): Split out "has no member named"
	error-handling into...
	(complain_about_unrecognized_member): ...this new function, and
	check that the guessed name is accessible along the access path.
	Only provide a spell-correction fix-it hint if it is; otherwise,
	attempt to issue an accessor fix-it hint.

gcc/testsuite/ChangeLog:
	PR c++/84993
	* g++.dg/torture/accessor-fixits-9.C: New test.

From-SVN: r265056
2018-10-11 19:03:33 +00:00
Nathan Sidwell
c7f45560c7 [C++ PATCH] parser simplification
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00689.html
	cp/
	* parser.c (cp_parser_translation_unit): Return void.  Don't fail
	at first extra }, simplify logic.
	(c_parse_file): Call finish_translation_unit here.

	testsuite/
	* g++.dg/parse/close-brace.C: New.
	* g++.dg/cpp0x/noexcept16.C: Avoid warning.
	* g++.old-deja/g++.other/crash32.C: Add another error

From-SVN: r265055
2018-10-11 18:58:55 +00:00
Doug Rupp
13c4e4031a leverage linker relaxation on ppc vxworks RTPs
2018-10-11  Doug Rupp  <rupp@adacore.com>
            Olivier Hainque  <hainque@adacore.com>

        * config/rs6000/vxworks.h (VXWORKS_RELAX_LINK_SPEC): New macro.
        Pass --relax to the linker for RTPs.
        (LINK_SPEC): Append VXWORKS_RELAX_LINK_SPEC.

Co-Authored-By: Olivier Hainque <hainque@adacore.com>

From-SVN: r265054
2018-10-11 18:36:34 +00:00
Jakub Jelinek
1cc6eecd5d re PR c++/85070 (ICE on C++ code: in lazily_declare_fn, at cp/method.c:2409)
PR c++/85070
	* g++.dg/cpp0x/pr85070.C: Change effective target for diagnostics from
	c++14_only to c++14.

From-SVN: r265052
2018-10-11 20:35:11 +02:00
David Malcolm
cbd8652b67 multiline.exp: complain about mismatched dg-{begin|end}-multiline-output
Mismatched dg-{begin|end}-multiline-output directives are currently
silently ignored, leading to difficult-to-diagnose test failures
involving excess output.

This patch makes multiline.exp complain about them.

gcc/testsuite/ChangeLog:
	* lib/multiline.exp (dg-begin-multiline-output): Issue an error if
	there hasn't been a dg-end-multiline-output since the last
	dg-begin-multiline-output.
	(dg-end-multiline-output): Issue an error if there hasn't been a
	dg-begin-multiline-output.  Reset _multiline_last_beginning_line
	as soon possible.  Rename "line" to "last_line".

From-SVN: r265046
2018-10-11 17:05:23 +00:00
Jonathan Wakely
cfef4c324a PR libstdc++/80538 Only call sleep for non-zero values
Avoid a system call when no sleep is required. Sleep in a loop (actually
two loops) to handle interruption by signals.

	PR libstdc++/80538
	* src/c++11/thread.cc (this_thread::__sleep_for)
	[_GLIBCXX_HAVE_SLEEP]: Only call sleep for non-zero values.
	Loop while sleep call is interrupted and until steady_clock
	shows requested duration has elapsed.
	(!_GLIBCXX_HAVE_USLEEP]: Use the _GLIBCXX_HAVE_SLEEP code path, but
	avoiding the usleep call.
	* testsuite/30_threads/this_thread/60421.cc: Test repeated
	signal interruptions.

From-SVN: r265044
2018-10-11 17:37:23 +01:00
Andrew Stubbs
2045ae1d3f Elide repeated RTL elements.
GCN's 64-lane vectors tend to make RTL dumps very long.  This patch makes them
far more bearable by eliding long sequences of the same element into "repeated"
messages.

This also takes care of reading repeated sequences in the RTL front-end.

There are self tests for both reading and writing.

2018-10-11  Andrew Stubbs  <ams@codesourcery.com>
	    Jan Hubicka  <jh@suse.cz>
	    Martin Jambor  <mjambor@suse.cz>

	gcc/
	* print-rtl.c (print_rtx_operand_codes_E_and_V): Print how many times
	the same elements are repeated rather than printing all of them.
	* read-rtl.c (rtx_reader::read_rtx_operand): Recognize and expand
	"repeated" elements.
	* read-rtl-function.c (test_loading_repeat): New function.
	(read_rtl_function_c_tests): Call test_loading_repeat.
	* rtl-tests.c (test_dumping_repeat): New function.
	(rtl_tests_c_tests): Call test_dumping_repeat.

	gcc/testsuite/
	* selftests/repeat.rtl: New file.

Co-Authored-By: Jan Hubicka <jh@suse.cz>
Co-Authored-By: Martin Jambor <mjambor@suse.cz>

From-SVN: r265042
2018-10-11 14:00:20 +00:00
Jakub Jelinek
f9f3b77cf5 re PR c++/87582 (Returning a reference to a data member via structured bindings dangles)
PR c++/87582
	* typeck.c (maybe_warn_about_returning_address_of_local): If
	whats_returned is a structured binding identifier and the structured
	binding is a reference, recurse on its initializer.

	* g++.dg/cpp1z/decomp48.C: New test.

From-SVN: r265041
2018-10-11 15:46:27 +02:00
David Malcolm
954ad1127e libcpp: show macro definition when used with wrong argument count
Consider:

demo.c: In function 'test':
demo.c:5:40: error: macro "LOG_2" requires 3 arguments, but only 2 given
5 |   LOG_2 ("loading file: %s\n", filename);
  |                                        ^

This patch adds a note showing the definition of the macro in
question, giving:

demo.c: In function 'test':
demo.c:5:40: error: macro "LOG_2" requires 3 arguments, but only 2 given
5 |   LOG_2 ("loading file: %s\n", filename);
  |                                        ^
In file included from demo.c:1:
logging.h:1: note: macro "LOG_2" defined here
1 | #define LOG_2(FMT, ARG0, ARG1) do { fprintf (stderr, (FMT), (ARG0), (ARG1)); }
  | 

gcc/testsuite/ChangeLog:
	* g++.dg/diagnostic/macro-arg-count.C: Move to...
	* c-c++-common/cpp/macro-arg-count-1.c: ...here, generalizing
	output for C vs C++.  Expect notes showing the definitions of the
	macros.
	* c-c++-common/cpp/macro-arg-count-2.c: New test, adapted from the
	above.

libcpp/ChangeLog:
	* macro.c (_cpp_arguments_ok): If the argument count is wrong, add
	a note showing the definition of the macro.

From-SVN: r265040
2018-10-11 13:21:28 +00:00
Richard Biener
c727b83513 x86-tune-costs.h (bdver?_memcpy, [...]): Unify to ...
2018-10-11  Richard Biener  <rguenther@suse.de>

	* config/i386/x86-tune-costs.h (bdver?_memcpy, bdver?_memset,
	bdver?_cost): Unify to ...
	(bdver_memcpy, bdver_memset, bdver_cost): ... this.
	* config/i386/i386.c (processor_cost_table): Adjust.

From-SVN: r265038
2018-10-11 12:59:56 +00:00
Nathan Sidwell
c1b48b2929 [PATCH] A couple of line map fixes
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00623.html
	* include/line-map.h (LINEMAPS_MACRO_LOWEST_LOCATION): Fix
	off-by-one error.
	* line-map.c (linemap_enter_macro): Use RAII.  Clear all of the
	macro_locations.

From-SVN: r265037
2018-10-11 12:42:37 +00:00
Jonathan Wakely
c7790bdbd9 Make ext allocators support heterogeneous equality comparison
The Allocator requirements include the ability to compare different
specializations of the same allocator class template. This did not work
for __gnu_cxx::new_allocator and other extension allocators.  This patch
replaces the equality operators for those allocators with inline friends
that support heterogeneous comparisons.  (I'm not changing all ext
allocators because some are bit-rotted already).

Additionally, the equality operators for comparing two std::allocator
objects of the same type are now defined as inline friends. Those
overloads don't need to be declared at namespace scope, because they
aren't specified in the standard (but they're needed in this
implementation to avoid ambiguities caused by the extra overloads
defined for the base allocator type).

	* include/bits/allocator.h
	(operator==(const allocator<_Tp>&, const allocator<_Tp>))
	(operator!=(const allocator<_Tp>&, const allocator<_Tp>)): Replace
	with inline friends.
	* include/ext/debug_allocator.h (operator==, operator!=): Replace
	with inline friend functions that compare to rebound allocators.
	* include/ext/malloc_allocator.h (operator==, operator!=): Likewise.
	* include/ext/new_allocator.h (operator==, operator!=): Likewise.
	* testsuite/ext/debug_allocator/eq.cc: New test.
	* testsuite/ext/ext_pointer/alloc_eq.cc: New test.
	* testsuite/ext/malloc_allocator/eq.cc: New test.
	* testsuite/ext/new_allocator/eq.cc: New test.

From-SVN: r265036
2018-10-11 12:32:29 +01:00
Martin Jambor
e7336b8e23 [testsuite] Further fixes to warn-abs-1.c
2018-10-11  Martin Jambor  <mjambor@suse.cz>

	testsuite/
	* gcc.dg/warn-abs-1.c: Guard tests assuming size of long double is
	greater that the size of double by target large_long double.

From-SVN: r265035
2018-10-11 10:53:49 +02:00
Jakub Jelinek
46c6269045 c-lex.c (c_common_has_attribute): Return 201803 instead of 20180312 for no_unique_address.
* c-lex.c (c_common_has_attribute): Return 201803 instead of 20180312
	for no_unique_address.

	* g++.dg/cpp2a/feat-cxx2a.C: New test.

From-SVN: r265034
2018-10-11 09:13:55 +02:00
Jakub Jelinek
f7904392b7 re PR c++/87547 (G++ reports bad type names for bit-field members)
PR c++/87547
	* rtti.c (get_tinfo_decl_dynamic): Use unlowered_expr_type instead
	of TREE_TYPE.

	* g++.dg/rtti/typeid12.C: New test.

From-SVN: r265033
2018-10-11 09:07:22 +02:00
GCC Administrator
6b0649cba3 Daily bump.
From-SVN: r265032
2018-10-11 00:16:55 +00:00
Eric Botcazou
a1a0e08d63 re PR middle-end/87574 (ICE in add_data_member_location_attribute at gcc/gcc/dwarf2out.c:19226 since r264943)
PR middle-end/87574
	* cgraphunit.c (cgraph_node::expand_thunk): Force DECL_IGNORED_P on
	the thunk when expanding to GIMPLE.

From-SVN: r265028
2018-10-10 22:54:04 +00:00
Marek Polacek
8e9558f029 PR c++/87567 - constexpr rejects call to non-constexpr function.
* constexpr.c (potential_constant_expression_1) <case FOR_STMT>: Return
	true if the condition is always false.
	<case WHILE_STMT>: Likewise.

	* g++.dg/cpp1y/constexpr-loop7.C: New test.

From-SVN: r265027
2018-10-10 21:11:18 +00:00
Paul A. Clarke
c6e8b0b3af Fat-fingered my recent patch adding the SSE3 testcases for powerpc,
most likely by twice applying the patch which added the testcases.

This patch removes the duplicated code.

[gcc/testsuite]

2018-10-10  Paul A. Clarke  <pc@us.ibm.com>

	PR target/87579
	* gcc.target/powerpc/sse3-check.h: Remove duplicated code.
	* gcc.target/powerpc/sse3-addsubps.c: Likewise.
	* gcc.target/powerpc/sse3-addsubpd.c: Likewise.
	* gcc.target/powerpc/sse3-haddps.c: Likewise.
	* gcc.target/powerpc/sse3-hsubps.c: Likewise.
	* gcc.target/powerpc/sse3-haddpd.c: Likewise.
	* gcc.target/powerpc/sse3-hsubpd.c: Likewise.
	* gcc.target/powerpc/sse3-lddqu.c: Likewise.
	* gcc.target/powerpc/sse3-movsldup.c: Likewise.
	* gcc.target/powerpc/sse3-movshdup.c: Likewise.
	* gcc.target/powerpc/sse3-movddup.c: Likewise.
	* gcc.target/powerpc/pr37191.c: Likewise.

From-SVN: r265026
2018-10-10 20:52:48 +00:00
Bernd Edlinger
3846751b82 varasm.c (mergeable_string_section): Don't try to move zero-length strings to the merge section.
2018-10-10  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * varasm.c (mergeable_string_section): Don't try to move zero-length
        strings to the merge section.

From-SVN: r265025
2018-10-10 18:32:47 +00:00
Martin Sebor
e3129f233c PR c/54391 - transparent_union typedef'ing inconsistent
gcc/testsuite/ChangeLog:
	* gcc.dg/transparent-union-6.c: New.

From-SVN: r265024
2018-10-10 11:09:26 -06:00
Jonathan Wakely
422a9f7789 PR libstdc++/87544 limit max_size() to PTRDIFF_MAX / sizeof(T)
The C++17 standard requires the default implementation for
allocator_traits::max_size to return SIZE_MAX / sizeof(value_type).
That causes GCC to warn because the value could be larger than can
sensibly be passed to malloc. This patch changes the new_allocator and
malloc_allocator max_size() members to use PTRDIFF_MAX instead of
SIZE_MAX (and because they define it, the allocator_traits default isn't
used). This also changes vector::max_size to impose a sensible limit
using PTRDIFF_MAX for cases where the value from the allocator or
allocator_traits is not sensible.

	PR libstdc++/87544
	* include/bits/stl_vector.h (vector::_S_max_size): Limit size to
	PTRDIFF_MAX / sizeof(value_type).
	* include/ext/malloc_allocator.h (malloc_allocator::max_size):
	Likewise.
	* include/ext/new_allocator.h (new_allocator::max_size): Likewise.
	* testsuite/23_containers/vector/allocator/minimal.cc: Adjust
	expected value for max_size().
	* testsuite/23_containers/vector/capacity/87544.cc: New test.

From-SVN: r265021
2018-10-10 16:39:33 +01:00
Martin Sebor
d3a46ecb38 memchr-1.c: Avoid assuming 4-byte wchar_t.
gcc/testsuite/ChangeLog:

	* gcc.c-torture/execute/memchr-1.c: Avoid assuming 4-byte wchar_t.
	Add a test for 2-byte wchar_t.
	* gcc.dg/builtin-memchr.c: New test.

From-SVN: r265020
2018-10-10 09:33:43 -06:00
Uros Bizjak
7be65e79f6 re PR target/87573 (error: could not split insn since r264877)
PR target/87573
	* config/i386/mmx.md (const_vector 0 -> mem splitter): New splitter.

testsuite/ChangeLog:

	PR target/87573
	* gcc.target/i386/pr87573.c: New test.

From-SVN: r265019
2018-10-10 17:02:47 +02:00
Jakub Jelinek
1f10b5b8db re PR target/87550 (Intrinsics for rdpmc (__rdpmc, __builtin_ia32_rdpmc) are interpreted as pure functions)
PR target/87550
	* config/i386/i386-builtin.def (IX86_BUILTIN_RDPMC): Move from args set
	to special_args set.

	* gcc.target/i386/pr87550.c: New test.

From-SVN: r265007
2018-10-10 11:28:26 +02:00
Jakub Jelinek
1c07061211 re PR c/87286 (ICE on vectors of enums)
PR c/87286
	* gcc.dg/pr87286.c: Add -Wno-psabi to dg-options.

From-SVN: r265006
2018-10-10 11:03:40 +02:00
Richard Biener
6cdd5aecfb sse.md (reduc_plus_scal_v8df, [...]): Merge into pattern reducing to half width and recursing and pattern terminating...
2018-10-10  Richard Biener  <rguenther@suse.de>

	* config/i386/sse.md (reduc_plus_scal_v8df, reduc_plus_scal_v4df,
	reduc_plus_scal_v2df, reduc_plus_scal_v16sf, reduc_plus_scal_v8sf,
	reduc_plus_scal_v4sf): Merge into pattern reducing to half width
	and recursing and pattern terminating the recursion on SSE
	vector width using ix86_expand_reduc.
	(reduc_sminmax_scal_<mode>): Split into part reducing to half
	width and recursing and SSE2 vector variant doing the final
	reduction with ix86_expand_reduc.
	(reduc_uminmax_scal_<mode>): Likewise for the AVX512 variants
	with terminating the recursion at AVX level, splitting that
	to SSE there.

From-SVN: r265004
2018-10-10 07:05:47 +00:00
GCC Administrator
fa23d4e122 Daily bump.
From-SVN: r265003
2018-10-10 00:16:55 +00:00
David Malcolm
c24300baea Cleanup of libcpp diagnostic callbacks
This patch renames the "error" callback within libcpp
to "diagnostic", and uses the pair of enums in cpplib.h, rather
than passing two different kinds of "int" around.

gcc/c-family/ChangeLog:
	* c-common.c (c_option_controlling_cpp_error): Rename to...
	(c_option_controlling_cpp_diagnostic): ...this, and convert
	"reason" from int to enum.
	(c_cpp_error): Rename to...
	(c_cpp_diagnostic): ...this, converting level and reason to enums.
	* c-common.h (c_cpp_error): Rename to...
	(c_cpp_diagnostic): ...this, converting level and reason to enums.
	* c-opts.c (c_common_init_options): Update for renaming.

gcc/fortran/ChangeLog:
	* cpp.c (gfc_cpp_init_0): Update for renamings.
	(cb_cpp_error): Rename to...
	(cb_cpp_diagnostic): ...this, converting level and reason to
	enums.

gcc/ChangeLog:
	* genmatch.c (error_cb): Rename to...
	(diagnostic_cb): ...this, converting int params to enums.
	(fatal_at): Update for renaming.
	(warning_at): Likewise.
	(main): Likewise.
	* input.c (selftest::ebcdic_execution_charset::apply):
	Update for renaming of...
	(selftest::ebcdic_execution_charset::on_error): ...this, renaming
	to...
	(selftest::ebcdic_execution_charset::on_diagnostic): ...this,
	converting level and reason to enums.
	(class selftest::lexer_error_sink): Rename to...
	(class selftest::lexer_test_options): ...this, renaming field
	"m_errors" to "m_diagnostics".
	(selftest::lexer_test_options::apply): Update for renaming of...
	(selftest::lexer_test_options::on_error): ...this, renaming to...
	(selftest::lexer_test_options::on_diagnostic): ...this
	converting level and reason to enums.
	(selftest::test_lexer_string_locations_raw_string_unterminated):
	Update for renamings.
	* opth-gen.awk (struct cpp_reason_option_codes_t): Use enum for
	"reason".

libcpp/ChangeLog:
	* charset.c (noop_error_cb): Rename to...
	(noop_diagnostic_cb): ...this, converting params to enums.
	(cpp_interpret_string_ranges): Update for renaming and enums.
	* directives.c (check_eol_1): Convert reason to enum.
	(do_diagnostic): Convert code and reason to enum.
	(do_error): Use CPP_W_NONE rather than 0.
	(do_pragma_dependency): Likewise.
	* errors.c (cpp_diagnostic_at): Convert level and reason to enums.
	Update for renaming.
	(cpp_diagnostic): Convert level and reason to enums.
	(cpp_error): Convert level to enum.
	(cpp_warning): Convert reason to enums.
	(cpp_pedwarning): Likewise.
	(cpp_warning_syshdr): Likewise.
	(cpp_diagnostic_with_line): Convert level and reason to enums.
	Update for renaming.
	(cpp_error_with_line): Convert level to enum.
	(cpp_warning_with_line): Convert reason to enums.
	(cpp_pedwarning_with_line): Likewise.
	(cpp_warning_with_line_syshdr): Likewise.
	(cpp_error_at): Convert level to enum.
	(cpp_errno): Likewise.
	(cpp_errno_filename): Likewise.
	* include/cpplib.h (enum cpp_diagnostic_level): Name this enum,
	and move to before struct cpp_callbacks.
	(enum cpp_warning_reason): Likewise.
	(cpp_callbacks::diagnostic): Convert params from int to enums.
	(cpp_error): Convert int param to enum cpp_diagnostic_level.
	(cpp_warning): Convert int param to enum cpp_warning_reason.
	(cpp_pedwarning): Likewise.
	(cpp_warning_syshdr): Likewise.
	(cpp_errno): Convert int param to enum cpp_diagnostic_level.
	(cpp_errno_filename): Likewise.
	(cpp_error_with_line): Likewise.
	(cpp_warning_with_line): Convert int param to enum
	cpp_warning_reason.
	(cpp_pedwarning_with_line): Likewise.
	(cpp_warning_with_line_syshdr): Likewise.
	(cpp_error_at): Convert int param to enum cpp_diagnostic_level.
	* macro.c (create_iso_definition): Convert int to enum.
	(_cpp_create_definition): Likewise.

From-SVN: r264999
2018-10-09 23:37:19 +00:00
Paolo Carlini
5abdb369eb re PR c++/84423 ([concepts] ICE with invalid using declaration)
/cp
2018-10-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84423
	* pt.c (convert_template_argument): Immediately return error_mark_node
	if the second argument is erroneous.
	* parser.c (cp_parser_type_id): Add location_t * parameter.
	(cp_parser_type_id_1): Likewise.
	(cp_parser_alias_declaration): Adjust cp_parser_type_id call,
	obtain the location of the type and save it.
	(cp_parser_template_type_arg): Adjust.
	(cp_parser_trailing_type_id): Likewise.
	* decl.c (grokdeclarator): Improve error message for 'auto' in
	alias declaration.

/testsuite
2018-10-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84423
	* g++.dg/concepts/pr84423-1.C: New.
	* g++.dg/concepts/pr84423-2.C: Likewise.
	* g++.dg/cpp0x/auto39.C: Test location too.
	* g++.dg/cpp0x/auto9.C: Likewise.
	* g++.dg/cpp1y/pr60384.C: Likewise.

From-SVN: r264996
2018-10-09 21:16:09 +00:00
François Dumont
2f039722d0 2018-10-09 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_list.h
	(_List_operator<>::operator==): Replace member function with inline
	friend.
	(_List_operator<>::operator!=): Likewise.
	(_List_const_operator<>::operator==): Likewise.
	(_List_const_operator<>::operator!=): Likewise.
	(operator==(const _List_iterator<>&, const _List_const_iterator<>&)):
	Remove.
	(operator!=(const _List_iterator<>&, const _List_const_iterator<>&)):
	Remove.

From-SVN: r264993
2018-10-09 20:38:06 +00:00