Jonathan Wakely [Thu, 11 Oct 2018 23:21:11 +0000 (00:21 +0100)]
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
Will Schmidt [Thu, 11 Oct 2018 21:31:32 +0000 (21:31 +0000)]
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
Will Schmidt [Thu, 11 Oct 2018 21:25:23 +0000 (21:25 +0000)]
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
Will Schmidt [Thu, 11 Oct 2018 21:10:12 +0000 (21:10 +0000)]
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
Giuliano Belinassi [Thu, 11 Oct 2018 21:06:12 +0000 (21:06 +0000)]
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
Will Schmidt [Thu, 11 Oct 2018 21:03:30 +0000 (21:03 +0000)]
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
Will Schmidt [Thu, 11 Oct 2018 20:59:15 +0000 (20:59 +0000)]
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
François Dumont [Thu, 11 Oct 2018 20:47:13 +0000 (20:47 +0000)]
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
François Dumont [Thu, 11 Oct 2018 20:21:57 +0000 (20:21 +0000)]
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
Tobias Burnus [Thu, 11 Oct 2018 19:37:28 +0000 (21:37 +0200)]
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
Wilco Dijkstra [Thu, 11 Oct 2018 19:10:12 +0000 (19:10 +0000)]
[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
David Malcolm [Thu, 11 Oct 2018 19:03:33 +0000 (19:03 +0000)]
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
Nathan Sidwell [Thu, 11 Oct 2018 18:58:55 +0000 (18:58 +0000)]
[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
Doug Rupp [Thu, 11 Oct 2018 18:36:34 +0000 (18:36 +0000)]
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
Jakub Jelinek [Thu, 11 Oct 2018 18:35:11 +0000 (20:35 +0200)]
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
David Malcolm [Thu, 11 Oct 2018 17:05:23 +0000 (17:05 +0000)]
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
Jonathan Wakely [Thu, 11 Oct 2018 16:37:23 +0000 (17:37 +0100)]
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
Andrew Stubbs [Thu, 11 Oct 2018 14:00:20 +0000 (14:00 +0000)]
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
Jakub Jelinek [Thu, 11 Oct 2018 13:46:27 +0000 (15:46 +0200)]
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
David Malcolm [Thu, 11 Oct 2018 13:21:28 +0000 (13:21 +0000)]
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
Richard Biener [Thu, 11 Oct 2018 12:59:56 +0000 (12:59 +0000)]
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
Nathan Sidwell [Thu, 11 Oct 2018 12:42:37 +0000 (12:42 +0000)]
[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
Jonathan Wakely [Thu, 11 Oct 2018 11:32:29 +0000 (12:32 +0100)]
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
Martin Jambor [Thu, 11 Oct 2018 08:53:49 +0000 (10:53 +0200)]
[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
Jakub Jelinek [Thu, 11 Oct 2018 07:13:55 +0000 (09:13 +0200)]
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
Jakub Jelinek [Thu, 11 Oct 2018 07:07:22 +0000 (09:07 +0200)]
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
GCC Administrator [Thu, 11 Oct 2018 00:16:55 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r265032
Eric Botcazou [Wed, 10 Oct 2018 22:54:04 +0000 (22:54 +0000)]
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
Marek Polacek [Wed, 10 Oct 2018 21:11:18 +0000 (21:11 +0000)]
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
Paul A. Clarke [Wed, 10 Oct 2018 20:52:48 +0000 (20:52 +0000)]
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
Bernd Edlinger [Wed, 10 Oct 2018 18:32:47 +0000 (18:32 +0000)]
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
Martin Sebor [Wed, 10 Oct 2018 17:09:26 +0000 (17:09 +0000)]
PR c/54391 - transparent_union typedef'ing inconsistent
gcc/testsuite/ChangeLog:
* gcc.dg/transparent-union-6.c: New.
From-SVN: r265024
Jonathan Wakely [Wed, 10 Oct 2018 15:39:33 +0000 (16:39 +0100)]
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
Martin Sebor [Wed, 10 Oct 2018 15:33:43 +0000 (15:33 +0000)]
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
Uros Bizjak [Wed, 10 Oct 2018 15:02:47 +0000 (17:02 +0200)]
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
Jakub Jelinek [Wed, 10 Oct 2018 09:28:26 +0000 (11:28 +0200)]
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
Jakub Jelinek [Wed, 10 Oct 2018 09:03:40 +0000 (11:03 +0200)]
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
Richard Biener [Wed, 10 Oct 2018 07:05:47 +0000 (07:05 +0000)]
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
GCC Administrator [Wed, 10 Oct 2018 00:16:55 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r265003
David Malcolm [Tue, 9 Oct 2018 23:37:19 +0000 (23:37 +0000)]
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
Paolo Carlini [Tue, 9 Oct 2018 21:16:09 +0000 (21:16 +0000)]
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
François Dumont [Tue, 9 Oct 2018 20:38:06 +0000 (20:38 +0000)]
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
Paul A. Clarke [Tue, 9 Oct 2018 20:31:52 +0000 (20:31 +0000)]
This is part 2/2 for contributing PPC64LE support for X86 SSE3 instrisics.
This is part 2/2 for contributing PPC64LE support for X86 SSE3
instrisics. This patch includes testsuite/gcc.target tests for the
intrinsics defined in pmmintrin.h.
Tested on POWER8 ppc64le and ppc64 (-m64 and -m32, the latter only reporting
10 new unsupported tests.)
[gcc/testsuite]
2018-10-09 Paul A. Clarke <pc@us.ibm.com>
* gcc.target/powerpc/sse3-check.h: New file.
* gcc.target/powerpc/sse3-addsubps.c: New file.
* gcc.target/powerpc/sse3-addsubpd.c: New file.
* gcc.target/powerpc/sse3-haddps.c: New file.
* gcc.target/powerpc/sse3-hsubps.c: New file.
* gcc.target/powerpc/sse3-haddpd.c: New file.
* gcc.target/powerpc/sse3-hsubpd.c: New file.
* gcc.target/powerpc/sse3-lddqu.c: New file.
* gcc.target/powerpc/sse3-movsldup.c: New file.
* gcc.target/powerpc/sse3-movshdup.c: New file.
* gcc.target/powerpc/sse3-movddup.c: New file.
* gcc.target/powerpc/pr37191.c: New file.
From-SVN: r264992
Paul A. Clarke [Tue, 9 Oct 2018 20:25:57 +0000 (20:25 +0000)]
This is a follow-on to earlier commits for adding compatibility implementations of x86 intrinsics for PPC64LE.
This is a follow-on to earlier commits for adding compatibility
implementations of x86 intrinsics for PPC64LE. This is the first of
two patches. This patch adds 11 of the 13 x86 intrinsics from
<pmmintrin.h> ("SSE3"). (Patch 2/2 adds tests for these intrinsics,
and briefly describes the tests performed.)
Implementations are relatively straightforward, with occasional
extra effort for vector element ordering.
Not implemented are _mm_wait and _mm_monitor, as there are no
direct or trivial analogs in the POWER ISA.
./gcc/ChangeLog:
2018-10-05 Paul A. Clarke <pc@us.ibm.com>
* config.gcc (powerpc*-*-*): Add pmmintrin.h to extra_headers.
* config/rs6000/pmmintrin.h: New file.
From-SVN: r264991
Tobias Burnus [Tue, 9 Oct 2018 18:03:31 +0000 (20:03 +0200)]
re PR fortran/83522 (ICE on allocatable string reference, string(:)(:))
2018-10-09 Tobias Burnus <burnus@net-b.de>
PR fortran/83522
* resolve.c (resolve_ref): Reject nonscalar
substring references.
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: r264990
Eric Botcazou [Tue, 9 Oct 2018 17:16:24 +0000 (17:16 +0000)]
re PR tree-optimization/86659 (gnat.dg/sso/q[23].adb FAIL)
PR tree-optimization/86659
* gimple-match.h (gimple_match_op constructors): Initialize reverse.
From-SVN: r264986
Ian Lance Taylor [Tue, 9 Oct 2018 16:51:10 +0000 (16:51 +0000)]
runtime: skip testSetPanicOnFault for gollvm
LLVM doesn't support non-call exception. This test was passing
more or less by luck: if the faulting instruction is between two
calls with the same landing pad (in instruction layout order,
not the program's logic order), it generates a merged PC range
that covers the faulting instruction. If the instruction layout
order changes, or it uses two different (but may be degenerate)
landing pads, this doesn't work.
Reviewed-on: https://go-review.googlesource.com/c/140517
From-SVN: r264985
Eric Botcazou [Tue, 9 Oct 2018 15:06:55 +0000 (15:06 +0000)]
[Ada] Fix spurious -Wuninitialized warnings for small records
This change is aimed at getting rid of spurious -Wuninitialized warnings
issued for small records passed by copy and containing default values
for some of their components.
The source of the problem is that the _Init parameter of the
initialization routine is declared as an in/out parameter, so the
uninitialized object is passed by copy to it and this can be flagged by
-Wuninitialized.
That's why the mode of the parameter is changed to out, except for the
cases where information really needs to be passed in: unconstrained
array types, protected and task types.
For the following record type Rec!
type Rec is record
B : Boolean := True;
end record;
the initialization routine must now be:
procedure r__recIP (_init : out r__rec1) is
begin
_init.b := true;
return;
end r__recIP;
2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_ch3.adb (Is_Null_Statement_List): New predicate.
(Build_Array_Init_Proc): Use it to find out whether the
initialization procedure Is_Null_Init_Proc; if so, set
Warnings_Off on the parameter.
(Build_Init_Procedure): Likewise.
(Init_Formals): Use an in/out first parameter only for
unconstrained arrays and for records either containing or built
for proteced types or task types; use an out parameter in all
the other cases.
* fe.h (Is_Init_Proc): Declare.
* gcc-interface/decl.c (type_requires_init_of_formal): Do not
return true for a discriminant in an unchecked union.
(gnat_to_gnu_param): Do not create a PARM_DECL for the Out
parameter of an initialization procedure.
From-SVN: r264984
Eric Botcazou [Tue, 9 Oct 2018 15:06:50 +0000 (15:06 +0000)]
[Ada] Fix incorrect computation of Component_Size in ASIS mode
2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: If
this is not a definition, retrieve the expression in all cases
even if we are just annotating types.
* gcc-interface/trans.c (gnat_to_gnu): Also translate Size
attribute for constrained types in this mode.
From-SVN: r264983
Eric Botcazou [Tue, 9 Oct 2018 15:06:46 +0000 (15:06 +0000)]
[Ada] Minor tweaks to suppress warnings
2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* adaint.c (__gnat_get_executable_suffix_ptr): Add new line.
(__gnat_locate_exec): Check that HOST_EXECUTABLE_SUFFIX is not
empty before doing a string search for it.
* socket.c (ATTRIBUTE_UNUSED): Define.
(__gnat_disable_sigpipe): Add ATTRIBUTE_UNUSED on parameter.
* terminals.c (ATTRIBUTE_UNUSED): Move around.
(__gnat_setup_child_communication): Add ATTRIBUTE_UNUSED on
parameter.
(__gnat_send_header): Add ATTRIBUTE_UNUSED on parameters.
From-SVN: r264982
Yannick Moy [Tue, 9 Oct 2018 15:06:41 +0000 (15:06 +0000)]
[Ada] Ignore pragmas Compile_Time_Error/Warning in GNATprove mode
GNATprove does not have sometimes the precise information of the
compiler about size of types and objects, so that it cannot evaluate the
expressions in pragma Compile_Time_Error/Warning the same way the
compiler does. Thus, these pragmas should be ignored in GNATprove mode,
as it can neither verify them nor assume them (if the expression cannot
be evaluated at compile time, then the semantics for GNAT is to ignore
them).
2018-10-09 Yannick Moy <moy@adacore.com>
gcc/ada/
* sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Rewrite
pragmas as null statements in GNATprove mode.
From-SVN: r264981
Eric Botcazou [Tue, 9 Oct 2018 15:06:35 +0000 (15:06 +0000)]
[Ada] Fix spurious error on derived record passed as Out parameter
This fixlet gets rid of a spurious error issued in the specific case of
a call to a subprogram taking an Out parameter of a discriminated record
type without default discriminants, if the actual parameter is the
result of the conversion to the record type of a variable whose type is
derived from the record and has a representation clause.
The compiler was failing to initialize the temporary made around the
call because of the representation clause, but this is required for a
type with discriminants because discriminants may be read by the called
subprogram.
2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_ch6.adb (Add_Call_By_Copy_Code): Initialize the temporary
made for an Out parameter if the formal type has discriminants.
gcc/testsuite/
* gnat.dg/derived_type5.adb, gnat.dg/derived_type5_pkg.ads: New
testcase.
From-SVN: r264980
Maroua Maalej [Tue, 9 Oct 2018 15:06:30 +0000 (15:06 +0000)]
[Ada] SPARK: fix bug related to non access object permissions
2018-10-09 Maroua Maalej <maalej@adacore.com>
gcc/ada/
* sem_spark.adb (Check_Declaration): fix bug related to non
access object permissions.
From-SVN: r264979
Doug Rupp [Tue, 9 Oct 2018 15:06:26 +0000 (15:06 +0000)]
[Ada] Minor copyright header fix
2018-10-09 Doug Rupp <rupp@adacore.com>
gcc/ada/
* libgnat/a-ncelfu.ads: Fix name in header to match package.
From-SVN: r264978
Eric Botcazou [Tue, 9 Oct 2018 15:06:21 +0000 (15:06 +0000)]
[Ada] Fix strange warning when using Ada.Iterator_Interface
The back-end was recently changed to issue more -Wuninitialized warnings
on Out parameters and this has caught a case related to
Ada.Iterator_Interface.: This patchlet simply kills this uninteresting
warning.
2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_disp.adb (Make_Disp_Asynchronous_Select_Spec): Set
Warnings_Off on the B out parameter.
gcc/testsuite/
* gnat.dg/warn17.adb: New testcase.
From-SVN: r264977
Eric Botcazou [Tue, 9 Oct 2018 15:06:16 +0000 (15:06 +0000)]
[Ada] Einfo: minor comment fix
2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* einfo.ads: Small comment fix.
From-SVN: r264976
Eric Botcazou [Tue, 9 Oct 2018 15:06:11 +0000 (15:06 +0000)]
[Ada] Internal error on inlined renaming of subprogram instance
This fixes a recent regression introduced in the compiler for the
inlined renaming of a subprogram instantiated in a package body. It was
wrongly clearing the Is_Public flag on the entity associated with the
body.
2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_ch7.adb (Has_Referencer): Add comment for the
N_Freeze_Entity case. Do not rely on
Has_Referencer_Of_Non_Subprograms to clear the Is_Public flag on
subprogram entities.
gcc/testsuite/
* gnat.dg/inline14.adb, gnat.dg/inline14_pkg.adb,
gnat.dg/inline14_pkg.ads: New testcase.
From-SVN: r264975
Ed Schonberg [Tue, 9 Oct 2018 15:06:05 +0000 (15:06 +0000)]
[Ada] Unnesting: fix handling of private types that are synchronized
2018-10-09 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_unst.adb (In_Synchronized_Call): Handle properly private
types whose full views are synchronized types, in order to
recognize generated subprograms whose bodies must be considered
reachable even if no direct calls to them are visible in the
source.
From-SVN: r264974
Ed Schonberg [Tue, 9 Oct 2018 15:05:59 +0000 (15:05 +0000)]
[Ada] Fix expansion of operations on nonbinary modular types
2018-10-09 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_ch4.adb (Expand_Modular_Op): When expanding an operation
on nonbinary modular types, convert the opersnds to an integer
type that is large enough to hold the modulus of the type, which
may be larger than Integer'Last.
From-SVN: r264973
Ed Schonberg [Tue, 9 Oct 2018 15:05:54 +0000 (15:05 +0000)]
[Ada] Unnesting: fix handling of uplevel refs to unconstrained formals
2018-10-09 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_unst.adb (Unnest_Subprogram): When an uplevel reference
is to an unconstrained formal, the 'Access reference that is
created to initialize the corresponding component of the
activation record must be wrapped in an unchecked conversion to
the generated type of the component. Otherwise, spurious suvtype
conformance errors will be generated when the code is within an
instantiation and the type of the formal is a formal type of the
enclosing generic. Note that during unnesting there is no simple
way to determine that the code appears within an instance
because ther is no scope stack.
From-SVN: r264972
Eric Botcazou [Tue, 9 Oct 2018 15:05:49 +0000 (15:05 +0000)]
[Ada] Remove spurious -Wuninitialized warning for small array at -O2
2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* gcc-interface/decl.c (type_requires_init_of_formal): New
predicate.
(gnat_to_gnu_param): Use it to determine whether a PARM_DECL
must be created for an Out parameter passed by copy.
From-SVN: r264971
Arnaud Charlet [Tue, 9 Oct 2018 15:05:44 +0000 (15:05 +0000)]
[Ada] Bounded_Holders: fix a typo
2018-10-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* libgnat/a-coboho.ads (Storage_Element): Fix a typo.
From-SVN: r264970
Claire Dross [Tue, 9 Oct 2018 15:05:39 +0000 (15:05 +0000)]
[Ada] Functional_Vectors: remove default value for max size
2018-10-09 Claire Dross <dross@adacore.com>
gcc/ada/
* libgnat/a-cfinve.ads: Remove default value for
Max_Size_In_Storage_Elements as it was not supported in SPARK.
From-SVN: r264969
Ed Schonberg [Tue, 9 Oct 2018 15:05:34 +0000 (15:05 +0000)]
[Ada] Reset Is_True_Constant on entites used as OUT/IN OUT actuals
2018-10-09 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_ch6.adb (Add_Call_By_Copy_Node,
Add_Simple_Call_By_Copy_Node, Expand_Call_Helper): Reset
Is_True_Constant on entities used as Out or In_Out parameters in
calls.
From-SVN: r264968
Ed Schonberg [Tue, 9 Oct 2018 15:05:29 +0000 (15:05 +0000)]
[Ada] Unnesting: avoid unnecessary loads of System
2018-10-09 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_unst.adb (Unnest_Subprogram): Do not load System to obtain
the Address entity unless an activation record is being built.
Removes useless with_clauses for System when nested subprograms
do not have uplevel references, and therefore do not need
activation records.
From-SVN: r264967
Ed Schonberg [Tue, 9 Oct 2018 15:05:24 +0000 (15:05 +0000)]
[Ada] Spurious error message on visibiliy change in aspect expression
This patch removes an improper error message on a visibility change in
an aspect expression between the freeze point and the end of the
declaration list, when the expression involves a call to a instance of
Unchecked_Conversion and the enclosing package declaration has a package
body with multiple subprogram bodies.
The following must compile quietly:
----
package body Par.Rep is
procedure Nothing is begin null; end;
procedure Rien is begin null; end;
end;
----
with Par.Loc;
package Par.Rep is
type Rec is record
X, Y : Integer;
end record
with Volatile;
Thing2 : Unsigned_32 := 15;
Thing3 : Rec
with Volatile, Address => To_Address (Par.Loc.Flash_Base);
procedure Nothing;
end;
----
pragma Restrictions (No_Elaboration_Code);
with interfaces; use interfaces;
pragma unreferenced (interfaces);
with Tp; use Tp;
pragma unreferenced (Tp);
package Par is
end Par;
----
with Ada.Unchecked_Conversion;
with System;
with Interfaces; use Interfaces;
package Tp is
subtype system_address is unsigned_32;
function to_address is new
ada.unchecked_conversion (system_address, system.address);
function To_32 is new
ada.unchecked_conversion (System.Address, System_Address);
end;
----
with TP; use TP;
package Par.Loc is
FLASH_BASE : constant system_address := 16#0800_0000#;
end;
2018-10-09 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_ch6.adb (Fully_Conformant_Expressions): Handle properly
the conformance check on an aspect expression that includes a
call to an instance of Unchecked_Conversion, or more generally a
call to an intrinsic operation.
From-SVN: r264966
Eric Botcazou [Tue, 9 Oct 2018 15:05:19 +0000 (15:05 +0000)]
[Ada] Repinfo: list the mechanism of functions only
2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* repinfo.adb: Remove with/use clause for Stand.
(List_Mechanisms): List the mechanism of functions only.
From-SVN: r264965
Bob Duff [Tue, 9 Oct 2018 15:05:14 +0000 (15:05 +0000)]
[Ada] Various User Manual updates for GNATpp
2018-10-09 Bob Duff <duff@adacore.com>
gcc/ada/
* doc/gnat_ugn/gnat_utility_programs.rst: Correct spelling of
--eol switch. Document the language-version switches. Update
description for --no-exception.
From-SVN: r264964
Vasiliy Fofanov [Tue, 9 Oct 2018 15:05:09 +0000 (15:05 +0000)]
[Ada] System.Os_Lib.Normalize_Pathname: fix incorrect comment
2018-10-09 Vasiliy Fofanov <fofanov@adacore.com>
gcc/ada/
* libgnat/s-os_lib.ads (Normalize_Pathname): Fix incorrect
comment.
From-SVN: r264963
Arnaud Charlet [Tue, 9 Oct 2018 15:05:04 +0000 (15:05 +0000)]
[Ada] Remove CodePeer annotation
2018-10-09 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* vxlink.adb: Remove pragma Annotate, no longer needed.
From-SVN: r264962
Ed Schonberg [Tue, 9 Oct 2018 15:04:58 +0000 (15:04 +0000)]
[Ada] Preserve Do_Range_Check flags in SPARK mode
2018-10-09 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* checks.adb (Apply_Type_Conversion_Checks): Use GNATprove_Mode
rather than SPARK_mode in order to preserve the Do_Range_Check
flag for verification purposes.
From-SVN: r264961
Ed Schonberg [Tue, 9 Oct 2018 15:04:53 +0000 (15:04 +0000)]
[Ada] Spurious warning on uninitialized entity during code generation
This patch suppresses a spurious warning coming from the GCC backend, on
an aggregate that cannot be built in place and for which a temporary
variable must be created. If the type of the aggregate is a packed
boolean array, the generated code may appear to use an uninitialized
value for a component of the array, when in fact the code simply sets a
single bit of that array.
2018-10-09 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_aggr.adb (Expand_Array_Aggregate): If it is not possible
to build in place an aggregate with component associations, set
the Warnings_Off flag on the generated temporary, to prevent
spurious warnings from the backend when compiling with the
-Wuninitialized gcc flag.
gcc/testsuite/
* gnat.dg/warn18.adb: New testcase.
From-SVN: r264960
Jonathan Wakely [Tue, 9 Oct 2018 13:06:46 +0000 (14:06 +0100)]
Define std::string and related typedefs outside __cxx11 namespace
The typedefs for common specializations of std::__cxx11::basic_string do
not need to be in the std::__cxx11 namespace. Those typedefs are never
used for linkage purposes so don't appear in mangled names, and so don't
need to be distinct from the equivalent typedefs for the COW
std::basic_string specializations. It is OK for the same typedef to
refer to different types in different translation units.
Defining them directly in namespace std improves diagnostics that use
those typedefs. For example:
error: could not convert '1' from 'int' to 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'}
will now be printed as:
error: could not convert '1' from 'int' to 'std::string' {aka 'std::__cxx11::basic_string<char>'}
The precise type is still shown, but the typedef is not obfuscated with
the inline namespace.
* include/bits/stringfwd.h (string, wstring, u16string, u32string):
Define typedefs outside of __cxx11 inline namespace.
* python/libstdcxx/v6/printers.py (register_type_printers): Also
register printers for typedefs in new location.
From-SVN: r264958
Richard Biener [Tue, 9 Oct 2018 11:43:46 +0000 (11:43 +0000)]
re PR middle-end/63155 (memory hog)
2018-10-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/63155
* tree-ssa-structalias.c: Include tree-ssa.h.
(get_constraint_for_ssa_var): For undefs return nothing_id.
(find_func_aliases): Cleanup PHI handling.
From-SVN: r264956
Richard Biener [Tue, 9 Oct 2018 11:37:46 +0000 (11:37 +0000)]
tree-vectorizer.c (dump_stmt_cost): Fix cut&paste missing replacements.
2018-10-09 Richard Biener <rguenther@suse.de>
* tree-vectorizer.c (dump_stmt_cost): Fix cut&paste missing
replacements.
From-SVN: r264954
Martin Liska [Tue, 9 Oct 2018 08:34:52 +0000 (10:34 +0200)]
ASAN: emit line information of stack variables.
2018-10-09 Martin Liska <mliska@suse.cz>
* asan.c (asan_emit_stack_protection): If a stack variable
is located in a same file as current function, then emit
line info into variable definition string.
2018-10-09 Martin Liska <mliska@suse.cz>
* c-c++-common/asan/pr64820.c: Add line number to scanned
pattern.
* c-c++-common/asan/use-after-return-1.c: Likewise.
* g++.dg/asan/function-argument-1.C (main): Likewise.
* g++.dg/asan/function-argument-2.C (main): Likewise.
* g++.dg/asan/function-argument-3.C (main): Likewise.
* g++.dg/asan/use-after-scope-1.C (main): Likewise.
* g++.dg/asan/use-after-scope-2.C (main): Likewise.
* g++.dg/asan/use-after-scope-types-1.C (main): Likewise.
* g++.dg/asan/use-after-scope-types-2.C (main): Likewise.
* g++.dg/asan/use-after-scope-types-3.C (main): Likewise.
* g++.dg/asan/use-after-scope-types-4.C (main): Likewise.
* g++.dg/asan/use-after-scope-types-5.C (main): Likewise.
* gcc.dg/asan/pr78541.c (main): Likewise.
* gcc.dg/asan/use-after-scope-1.c (main): Likewise.
* gcc.dg/asan/use-after-scope-10.c (main): Likewise.
* gcc.dg/asan/use-after-scope-2.c (main): Likewise.
* gcc.dg/asan/use-after-scope-3.c (main): Likewise.
* gcc.dg/asan/use-after-scope-5.c (main): Likewise.
* gcc.dg/asan/use-after-scope-9.c (main): Likewise.
From-SVN: r264951
Paul Thomas [Tue, 9 Oct 2018 07:46:48 +0000 (07:46 +0000)]
re PR fortran/87151 (allocating array of character)
2018-10-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87151
* trans-array.c (gfc_get_array_span): Deal with deferred char
array components having a TYPE_MAX_VALUE of zero.
(gfc_array_init_size): Use the hidden string length component
to build the descriptor dtype.
(gfc_array_allocate): Remove the erroneous replacement of the
charlen backend decl with a temporary.
(gfc_conv_expr_descriptor): Use the ss_info string length in
the case of deferred character components.
(gfc_alloc_allocatable_for_assignment): Actually compare the
string lengths for deferred characters. Make sure that kind > 1
is handled correctly. Set the span field of the descriptor.
* trans-intrinsic.c (gfc_conv_intrinsic_len): Remove the stupid
comment.
PR fortran/80931
* trans-array.c (gfc_array_allocate): Set the span field for
variable length character arrays.
2018-10-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87151
* gfortran.dg/deferred_type_component_3.f90: New test.
PR fortran/80931
* gfortran.dg/deferred_character_28.f90: New test.
* gfortran.dg/deferred_character_29.f90: New test (note that
this test appears in PR83196 comment #4 by mistake).
From-SVN: r264949
GCC Administrator [Tue, 9 Oct 2018 00:16:37 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264948
Eric Botcazou [Mon, 8 Oct 2018 22:50:51 +0000 (22:50 +0000)]
print-rtl.c (rtx_writer::print_rtx_operand_code_i): Print column information.
* print-rtl.c (rtx_writer::print_rtx_operand_code_i): Print column
information.
From-SVN: r264944
Eric Botcazou [Mon, 8 Oct 2018 22:49:07 +0000 (22:49 +0000)]
cgraphunit.c (cgraph_node::expand_thunk): Do not force DECL_IGNORED_P on the thunk.
* cgraphunit.c (cgraph_node::expand_thunk): Do not force DECL_IGNORED_P
on the thunk.
From-SVN: r264943
Eric Botcazou [Mon, 8 Oct 2018 22:47:32 +0000 (22:47 +0000)]
re PR tree-optimization/86659 (gnat.dg/sso/q[23].adb FAIL)
PR tree-optimization/86659
* gimple-match.h (struct gimple_match_op): Add reverse field.
(gimple_match_op::set_op): New overloaded method.
* gimple-match-head.c (maybe_build_generic_op) <BIT_FIELD_REF>: Set
the REF_REVERSE_STORAGE_ORDER flag on the value.
(gimple_simplify) <GIMPLE_ASSIGN>: For BIT_FIELD_REF, propagate the
REF_REVERSE_STORAGE_ORDER flag and avoid simplifying if it is set.
From-SVN: r264942
Richard Sandiford [Mon, 8 Oct 2018 18:58:59 +0000 (18:58 +0000)]
Use FOR_EACH_IMM_USE_FAST in gimple-ssa-backprop.c
As pointed out by Richard in PR63155. It speeds up the testcase a few %.
2018-10-08 Richard Sandiford <richard.sandiford@arm.com>
gcc/
PR middle-end/63155
* gimple-ssa-backprop.c (backprop::intersect_uses): Use
FOR_EACH_IMM_USE_FAST instead of FOR_EACH_IMM_USE_STMT.
From-SVN: r264941
Paul Koning [Mon, 8 Oct 2018 16:49:48 +0000 (12:49 -0400)]
* config/pdp11/t-pdp11: Remove -mfloat32 switch.
From-SVN: r264939
H.J. Lu [Mon, 8 Oct 2018 14:54:53 +0000 (14:54 +0000)]
i386: Correct _mm512_mask3_fmaddsub_round_pd
Define _mm512_mask3_fmaddsub_round_pd with
__builtin_ia32_vfmaddsubpd512_mask, instead of
__builtin_ia32_vfmaddpd512_mask.
PR target/87517
* config/i386/avx512fintrin.h (_mm512_mask_fmaddsub_round_pd):
Defined with __builtin_ia32_vfmaddsubpd512_mask.
From-SVN: r264935
Richard Biener [Mon, 8 Oct 2018 14:47:40 +0000 (14:47 +0000)]
x86-tune-costs.h (znver1_cost): Make AVX256 vector loads cost the same as AVX128 ones.
2018-10-08 Richard Biener <rguenther@suse.de>
* config/i386/x86-tune-costs.h (znver1_cost): Make AVX256 vector loads
cost the same as AVX128 ones.
From-SVN: r264934
Ian Lance Taylor [Mon, 8 Oct 2018 14:21:30 +0000 (14:21 +0000)]
libgo: update to Go 1.11.1 release
Reviewed-on: https://go-review.googlesource.com/c/140277
From-SVN: r264932
Paul Koning [Mon, 8 Oct 2018 14:16:13 +0000 (10:16 -0400)]
Fix ICE on block move when using LRA.
* config/pdp11/pdp11-protos.h (output_block_move): Remove.
(expand_block_move): New function.
* config/pdp11/pdp11.c (output_block_move): Remove.
(expand_block_move): New function.
* config/pdp11/pdp11.h (MOVE_RATIO): New definition.
* config/pdp11/pdp11.md (movmemhi): Use expand_block_move.
(*movmemhi1): Remove.
From-SVN: r264930
Martin Liska [Mon, 8 Oct 2018 14:12:53 +0000 (16:12 +0200)]
Come up with gcc/testsuite/g++.target/i386/i386.dg and move there some tests.
2018-10-08 Martin Liska <mliska@suse.cz>
* gcc.target/i386/i386.exp: Move procedures to
target-supports.exp.
* g++.target/i386/i386.exp: New file.
* gcc.target/i386/mv*.C: Move here tests and remove
target filter in these tests.
From-SVN: r264929
Cesar Philippidis [Mon, 8 Oct 2018 14:04:45 +0000 (07:04 -0700)]
[Fortran] Disable "Assignment to contiguous pointer from non-contiguous target" error
gcc/fortran/
* expr.c (gfc_check_pointer_assign): Demote "Assignment to
contiguous pointer from non-contiguous target" to a warning.
gcc/testsuite/
* gfortran.dg/contiguous_4.f90: Adjust.
* gfortran.dg/contiguous_4.f90: New test.
From-SVN: r264928
Robin Dapp [Mon, 8 Oct 2018 13:16:32 +0000 (13:16 +0000)]
S/390: Increase latencies for some FP instructions
This patch increases the latency of some floating point instructions to better
match the real machine's behavior.
2018-10-08 Robin Dapp <rdapp@linux.ibm.com>
* config/s390/2827.md: Increase latencies for some FP instructions.
From-SVN: r264927
Richard Biener [Mon, 8 Oct 2018 12:29:51 +0000 (12:29 +0000)]
tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Open a dump scope.
2018-10-08 Richard Biener <rguenther@suse.de>
* tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
Open a dump scope.
* tree-vectorizer.c (dump_stmt_cost): Add cost param and dump it.
* tree-vectorizer.h (dump_stmt_cost): Adjust.
(add_stmt_cost): Dump return value of the hook.
From-SVN: r264923
Jonathan Wakely [Mon, 8 Oct 2018 12:17:58 +0000 (13:17 +0100)]
PR libstdc++/87538 Verify fix for std::experimental::not_fn
PR libstdc++/87538
* testsuite/experimental/functional/87538.cc: New test.
From-SVN: r264922
Jonathan Wakely [Mon, 8 Oct 2018 12:07:22 +0000 (13:07 +0100)]
PR libstdc++/87538 fix std::not_fn exception specifications
PR libstdc++/87538
* include/std/functional (_Not_fn::operator()): Check value of
__is_nothrow_invocable as well.
* testsuite/20_util/function_objects/not_fn/87538.cc: New test.
From-SVN: r264921
Paul Thomas [Mon, 8 Oct 2018 11:17:10 +0000 (11:17 +0000)]
re PR fortran/86372 (Segfault on ASSOCIATE statement with CHARACTER variable)
2018-10-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/86372
* trans-stmt.c (trans_associate_var): Character associate names
with variable string length do not have to be deferred length
for the string length to be set, if variable.
2018-10-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/86372
* gfortran.dg/associate_41.f90: New test.
From-SVN: r264919
Rainer Orth [Mon, 8 Oct 2018 11:03:22 +0000 (11:03 +0000)]
Require string merging support in gnat.dg/string_merge?.adb etc.
* gcc.dg/merge-all-constants-2.c: Require string_merging support.
* gnat.dg/string_merge1.adb: Likewise.
* gnat.dg/string_merge2.adb: Likewise.
From-SVN: r264918
Rainer Orth [Mon, 8 Oct 2018 10:59:36 +0000 (10:59 +0000)]
Require constructor priority support in c-c++-common/Wprio-ctor-dtor.c
* c-c++-common/Wprio-ctor-dtor.c: Require init_priority support.
From-SVN: r264917
Martin Liska [Mon, 8 Oct 2018 09:53:44 +0000 (11:53 +0200)]
Limit a MV test just for x86 target.
2018-10-08 Martin Liska <mliska@suse.cz>
* g++.dg/ext/pr82625.C: Add dg-compile filter.
From-SVN: r264916
Paul Thomas [Mon, 8 Oct 2018 09:11:03 +0000 (09:11 +0000)]
re PR fortran/86372 (Segfault on ASSOCIATE statement with CHARACTER variable)
2018-10-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/86372
* trans-stmt.c (trans_associate_var): Character associate names
with variable string length do not have to be deferred length
for the string length to be set, if variable.
2018-10-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/86372
* gfortran.dg/associate_41.f90: New test.
From-SVN: r264915
Paolo Carlini [Mon, 8 Oct 2018 09:02:55 +0000 (09:02 +0000)]
re PR c++/71128 ([concepts] ICE on ill-formed explicit instantiation of a function concept)
/cp
2018-10-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/71128
* pt.c (do_decl_instantiation): Per 12.6.8/5, a concept cannot be
explicitly instantiated.
/testsuite
2018-10-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/71128
* g++.dg/concepts/pr71128.C: New.
From-SVN: r264914
Richard Sandiford [Mon, 8 Oct 2018 08:16:13 +0000 (08:16 +0000)]
Don't ICE on vectors of enums (PR 87286)
We've traditionally allowed vectors of enums (not sure if that's
deliberate) but vector_types_compatible_elements_p checked for
INTEGER_TYPE rather than INTEGRAL_TYPE_P.
2018-10-08 Richard Sandiford <richard.sandiford@arm.com>
gcc/c-family/
PR c/87286
* c-common.c (vector_types_compatible_elements_p): Use
INTEGRAL_TYPE_P instead of checking only for INTEGER_TYPE.
gcc/testsuite/
PR c/87286
* gcc.dg/pr87286.c: New test.
From-SVN: r264913