Index: libgomp/ChangeLog =================================================================== --- libgomp/ChangeLog (.../tags/gcc_7_2_0_release) +++ libgomp/ChangeLog (.../branches/gcc-7-branch) @@ -1,3 +1,26 @@ +2017-09-15 Jakub Jelinek + + Backported from mainline + 2017-09-14 Jakub Jelinek + + PR c++/81314 + * testsuite/libgomp.c++/pr81314.C: New test. + +2017-09-07 Jakub Jelinek + + Backported from mainline + 2017-08-09 Jakub Jelinek + + PR c/81687 + * testsuite/libgomp.c/pr81687-1.c: New test. + * testsuite/libgomp.c/pr81687-2.c: New test. + + 2017-07-27 Jakub Jelinek + + PR c/45784 + * testsuite/libgomp.c/pr45784.c: New test. + * testsuite/libgomp.c++/pr45784.C: New test. + 2017-08-14 Release Manager * GCC 7.2.0 released. Index: libgomp/testsuite/libgomp.c++/pr81314.C =================================================================== --- libgomp/testsuite/libgomp.c++/pr81314.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ libgomp/testsuite/libgomp.c++/pr81314.C (.../branches/gcc-7-branch) @@ -0,0 +1,38 @@ +// PR c++/81314 +// { dg-do link } + +template +struct S { + S () { s = 0; } + S (const S &x) { s = x.s; } + ~S () {} + int s; +}; + +void +foo (S<2> &x) +{ + #pragma omp taskloop + for (int i = 0; i < 100; ++i) + x.s++; +} + +void +bar (S<3> &x) +{ + #pragma omp task + x.s++; +} + +int +main () +{ + S<2> s; + S<3> t; + #pragma omp parallel + #pragma omp master + { + foo (s); + bar (t); + } +} Index: libgomp/testsuite/libgomp.c++/pr45784.C =================================================================== --- libgomp/testsuite/libgomp.c++/pr45784.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ libgomp/testsuite/libgomp.c++/pr45784.C (.../branches/gcc-7-branch) @@ -0,0 +1,5 @@ +// PR c/45784 +// { dg-do run } + +#include "../libgomp.c/pr45784.c" + Index: libgomp/testsuite/libgomp.c/pr81687-2.c =================================================================== --- libgomp/testsuite/libgomp.c/pr81687-2.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ libgomp/testsuite/libgomp.c/pr81687-2.c (.../branches/gcc-7-branch) @@ -0,0 +1,27 @@ +/* PR c/81687 */ +/* { dg-do link } */ +/* { dg-additional-options "-O2" } */ + +int +main () +{ + __label__ lab4, lab5, lab6; + volatile int l = 0; + int m = l; + void foo (int x) { if (x == 1) goto lab4; } + void bar (int x) { if (x == 2) goto lab5; } + void baz (int x) { if (x == 3) goto lab6; } + #pragma omp parallel + { + foo (m + 1); + lab4:; + } + #pragma omp task + { + bar (m + 2); + lab5:; + } + baz (m + 3); + lab6:; + return 0; +} Index: libgomp/testsuite/libgomp.c/pr45784.c =================================================================== --- libgomp/testsuite/libgomp.c/pr45784.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ libgomp/testsuite/libgomp.c/pr45784.c (.../branches/gcc-7-branch) @@ -0,0 +1,41 @@ +/* PR c/45784 */ +/* { dg-do run } */ + +void +foo (int n) +{ + char *p, vla[2 * n]; + int i; + #pragma omp parallel for + for (p = vla; p < vla + (sizeof (vla) / sizeof (vla[0])); p++) + *p = ' '; + #pragma omp parallel for + for (i = 0; i < 2 * n; i++) + if (vla[i] != ' ') + __builtin_abort (); +} + +void +bar (int n) +{ + char *p, vla1[n], vla2[n * 2], vla3[n * 3], vla4[n * 4]; + int i; + __builtin_memset (vla4, ' ', n * 4); + #pragma omp parallel for + for (p = vla4 + sizeof (vla1); p < vla4 + sizeof (vla3) - sizeof (vla2) + sizeof (vla1); p += sizeof (vla4) / sizeof (vla4)) + p[0] = '!'; + #pragma omp parallel for + for (i = 0; i < n * 4; i++) + if (vla4[i] != ((i >= n && i < 2 * n) ? '!' : ' ')) + __builtin_abort (); +} + +int +main () +{ + volatile int n; + n = 128; + foo (n); + bar (n); + return 0; +} Index: libgomp/testsuite/libgomp.c/pr81687-1.c =================================================================== --- libgomp/testsuite/libgomp.c/pr81687-1.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ libgomp/testsuite/libgomp.c/pr81687-1.c (.../branches/gcc-7-branch) @@ -0,0 +1,23 @@ +/* PR c/81687 */ +/* { dg-do link } */ +/* { dg-additional-options "-O2" } */ + +extern int printf (const char *, ...); + +int +main () +{ + #pragma omp parallel + { + lab1: + printf ("lab1=%p\n", (void *)(&&lab1)); + } + lab2: + #pragma omp parallel + { + lab3: + printf ("lab2=%p\n", (void *)(&&lab2)); + } + printf ("lab3=%p\n", (void *)(&&lab3)); + return 0; +} Index: libsanitizer/include/system/sys/ptrace.h =================================================================== --- libsanitizer/include/system/sys/ptrace.h (.../tags/gcc_7_2_0_release) (nonexistent) +++ libsanitizer/include/system/sys/ptrace.h (.../branches/gcc-7-branch) @@ -0,0 +1,7 @@ +#include_next +#ifndef PTRACE_GETREGSET +/* glibc before + https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=cbff0d9689c4d68578b6a4f0a17807232506ea27 + doesn't define PTRACE_GETREGSET. */ +#define PTRACE_GETREGSET 0x4204 +#endif Index: libsanitizer/ChangeLog =================================================================== --- libsanitizer/ChangeLog (.../tags/gcc_7_2_0_release) +++ libsanitizer/ChangeLog (.../branches/gcc-7-branch) @@ -1,3 +1,19 @@ +2017-10-05 H.J. Lu + + Backported from mainline + 2017-10-05 H.J. Lu + + PR sanitizer/82379 + * configure.tgt (SANITIZER_COMMON_TARGET_DEPENDENT_OBJECTS): Set + to sanitizer_linux_x86_64.lo if __x86_64__ is defined by $CC. + +2017-09-07 Jakub Jelinek + + Backported from mainline + 2017-08-07 Jakub Jelinek + + * include/system/sys/ptrace.h: New file. + 2017-08-14 Release Manager * GCC 7.2.0 released. Index: libsanitizer/configure.tgt =================================================================== --- libsanitizer/configure.tgt (.../tags/gcc_7_2_0_release) +++ libsanitizer/configure.tgt (.../branches/gcc-7-branch) @@ -27,6 +27,8 @@ TSAN_SUPPORTED=yes LSAN_SUPPORTED=yes TSAN_TARGET_DEPENDENT_OBJECTS=tsan_rtl_amd64.lo + fi + if echo "int x = __x86_64__;" | $CC -c -x c -o /dev/null - > /dev/null 2>&1; then SANITIZER_COMMON_TARGET_DEPENDENT_OBJECTS=sanitizer_linux_x86_64.lo fi ;; Index: libstdc++-v3/doc/xml/manual/status_cxx2017.xml =================================================================== --- libstdc++-v3/doc/xml/manual/status_cxx2017.xml (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/doc/xml/manual/status_cxx2017.xml (.../branches/gcc-7-branch) @@ -482,7 +482,6 @@ - Constexpr for std::char_traits @@ -489,8 +488,8 @@ P0426R1 - 7 (partial) - ??? + 7.3 + __cpp_lib_constexpr_char_traits >= 201611 Index: libstdc++-v3/doc/xml/manual/extensions.xml =================================================================== --- libstdc++-v3/doc/xml/manual/extensions.xml (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/doc/xml/manual/extensions.xml (.../branches/gcc-7-branch) @@ -502,7 +502,7 @@ demangling. - If you have read the source + If you have read the source documentation for namespace abi then you are aware of the cross-vendor C++ ABI in use by GCC. One of the exposed functions is used for demangling, Index: libstdc++-v3/doc/html/manual/status.html =================================================================== --- libstdc++-v3/doc/html/manual/status.html (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/doc/html/manual/status.html (.../branches/gcc-7-branch) @@ -684,11 +684,11 @@ P0505R0 - 7 ??? Constexpr for std::char_traits + 7 ??? Constexpr for std::char_traits P0426R1 - 7 (partial) ??? Integrating std::string_view and std::string + 7.3 __cpp_lib_constexpr_char_traits >= 201611 Integrating std::string_view and std::string P0254R2 @@ -961,4 +961,4 @@
\ No newline at end of file + Home License Index: libstdc++-v3/doc/html/manual/ext_demangling.html =================================================================== --- libstdc++-v3/doc/html/manual/ext_demangling.html (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/doc/html/manual/ext_demangling.html (.../branches/gcc-7-branch) @@ -7,7 +7,7 @@ original C++ source identifiers is called “demangling.”

- If you have read the source + If you have read the source documentation for namespace abi then you are aware of the cross-vendor C++ ABI in use by GCC. One of the exposed functions is used for demangling, Index: libstdc++-v3/doc/doxygen/mainpage.html =================================================================== --- libstdc++-v3/doc/doxygen/mainpage.html (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/doc/doxygen/mainpage.html (.../branches/gcc-7-branch) @@ -28,7 +28,7 @@

There are two types of documentation for libstdc++. One is the distribution documentation, which can be read online - here + here or offline from the file doc/html/index.html in the library source directory.

@@ -78,11 +78,11 @@ pages. See the section "Documentation Style" in doc/xml/manual/appendix_contributing.xml in the source tree for how to create (and write) the doxygen markup. - This style guide can also be viewed on the web. + This style guide can also be viewed on the web.

License, Copyright, and Other Lawyerly Verbosity

The libstdc++ documentation is released under - + these terms.

Part of the generated documentation involved comments and notes from Index: libstdc++-v3/include/std/optional =================================================================== --- libstdc++-v3/include/std/optional (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/std/optional (.../branches/gcc-7-branch) @@ -1000,23 +1000,23 @@ // Hash. - template>::__enable_hash_call> + template, + bool = __poison_hash<_Up>::__enable_hash_call> struct __optional_hash_call_base { size_t operator()(const optional<_Tp>& __t) const - noexcept(noexcept(hash<_Tp> {}(*__t))) + noexcept(noexcept(hash<_Up>{}(*__t))) { // We pick an arbitrary hash for disengaged optionals which hopefully // usual values of _Tp won't typically hash to. constexpr size_t __magic_disengaged_hash = static_cast(-3333); - return __t ? hash<_Tp> {}(*__t) : __magic_disengaged_hash; + return __t ? hash<_Up>{}(*__t) : __magic_disengaged_hash; } }; - template - struct __optional_hash_call_base<_Tp, false> {}; + template + struct __optional_hash_call_base<_Tp, _Up, false> {}; template struct hash> Index: libstdc++-v3/include/std/string_view =================================================================== --- libstdc++-v3/include/std/string_view (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/std/string_view (.../branches/gcc-7-branch) @@ -106,7 +106,7 @@ _M_str{__str} { } - basic_string_view& + constexpr basic_string_view& operator=(const basic_string_view&) noexcept = default; // [string.view.iterators], iterators @@ -127,19 +127,19 @@ cend() const noexcept { return this->_M_str + this->_M_len; } - const_reverse_iterator + constexpr const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(this->end()); } - const_reverse_iterator + constexpr const_reverse_iterator rend() const noexcept { return const_reverse_iterator(this->begin()); } - const_reverse_iterator + constexpr const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(this->end()); } - const_reverse_iterator + constexpr const_reverse_iterator crend() const noexcept { return const_reverse_iterator(this->begin()); } @@ -208,7 +208,7 @@ // [string.view.modifiers], modifiers: - void + constexpr void remove_prefix(size_type __n) { __glibcxx_assert(this->_M_len >= __n); @@ -216,15 +216,16 @@ this->_M_len -= __n; } - void + constexpr void remove_suffix(size_type __n) { this->_M_len -= __n; } - void + constexpr void swap(basic_string_view& __sv) noexcept { - std::swap(this->_M_len, __sv._M_len); - std::swap(this->_M_str, __sv._M_str); + auto __tmp = *this; + *this = __sv; + __sv = __tmp; } @@ -261,7 +262,7 @@ __pos, this->size()), basic_string_view{}); } - int + constexpr int compare(basic_string_view __str) const noexcept { int __ret = traits_type::compare(this->_M_str, __str._M_str, @@ -271,24 +272,24 @@ return __ret; } - int + constexpr int compare(size_type __pos1, size_type __n1, basic_string_view __str) const { return this->substr(__pos1, __n1).compare(__str); } - int + constexpr int compare(size_type __pos1, size_type __n1, basic_string_view __str, size_type __pos2, size_type __n2) const { return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2)); } - int + constexpr int compare(const _CharT* __str) const noexcept { return this->compare(basic_string_view{__str}); } - int + constexpr int compare(size_type __pos1, size_type __n1, const _CharT* __str) const { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); } - int + constexpr int compare(size_type __pos1, size_type __n1, const _CharT* __str, size_type __n2) const { @@ -296,78 +297,78 @@ .compare(basic_string_view(__str, __n2)); } - size_type + constexpr size_type find(basic_string_view __str, size_type __pos = 0) const noexcept { return this->find(__str._M_str, __pos, __str._M_len); } - size_type + constexpr size_type find(_CharT __c, size_type __pos=0) const noexcept; - size_type + constexpr size_type find(const _CharT* __str, size_type __pos, size_type __n) const noexcept; - size_type + constexpr size_type find(const _CharT* __str, size_type __pos=0) const noexcept { return this->find(__str, __pos, traits_type::length(__str)); } - size_type + constexpr size_type rfind(basic_string_view __str, size_type __pos = npos) const noexcept { return this->rfind(__str._M_str, __pos, __str._M_len); } - size_type + constexpr size_type rfind(_CharT __c, size_type __pos = npos) const noexcept; - size_type + constexpr size_type rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept; - size_type + constexpr size_type rfind(const _CharT* __str, size_type __pos = npos) const noexcept { return this->rfind(__str, __pos, traits_type::length(__str)); } - size_type + constexpr size_type find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept { return this->find_first_of(__str._M_str, __pos, __str._M_len); } - size_type + constexpr size_type find_first_of(_CharT __c, size_type __pos = 0) const noexcept { return this->find(__c, __pos); } - size_type + constexpr size_type find_first_of(const _CharT* __str, size_type __pos, size_type __n) const; - size_type + constexpr size_type find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept { return this->find_first_of(__str, __pos, traits_type::length(__str)); } - size_type + constexpr size_type find_last_of(basic_string_view __str, size_type __pos = npos) const noexcept { return this->find_last_of(__str._M_str, __pos, __str._M_len); } - size_type + constexpr size_type find_last_of(_CharT __c, size_type __pos=npos) const noexcept { return this->rfind(__c, __pos); } - size_type + constexpr size_type find_last_of(const _CharT* __str, size_type __pos, size_type __n) const; - size_type + constexpr size_type find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept { return this->find_last_of(__str, __pos, traits_type::length(__str)); } - size_type + constexpr size_type find_first_not_of(basic_string_view __str, size_type __pos = 0) const noexcept { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); } - size_type + constexpr size_type find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept; - size_type + constexpr size_type find_first_not_of(const _CharT* __str, size_type __pos, size_type __n) const; - size_type + constexpr size_type find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept { return this->find_first_not_of(__str, __pos, @@ -374,19 +375,19 @@ traits_type::length(__str)); } - size_type + constexpr size_type find_last_not_of(basic_string_view __str, size_type __pos = npos) const noexcept { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); } - size_type + constexpr size_type find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept; - size_type + constexpr size_type find_last_not_of(const _CharT* __str, size_type __pos, size_type __n) const; - size_type + constexpr size_type find_last_not_of(const _CharT* __str, size_type __pos = npos) const noexcept { @@ -394,7 +395,7 @@ traits_type::length(__str)); } - size_type + constexpr size_type _M_check(size_type __pos, const char* __s) const { if (__pos > this->size()) @@ -405,7 +406,7 @@ } // NB: _M_limit doesn't check for a bad __pos value. - size_type + constexpr size_type _M_limit(size_type __pos, size_type __off) const _GLIBCXX_NOEXCEPT { const bool __testoff = __off < this->size() - __pos; @@ -445,109 +446,109 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template - inline bool + constexpr bool operator==(basic_string_view<_CharT, _Traits> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.size() == __y.size() && __x.compare(__y) == 0; } template - inline bool + constexpr bool operator==(basic_string_view<_CharT, _Traits> __x, __detail::__idt> __y) noexcept { return __x.size() == __y.size() && __x.compare(__y) == 0; } template - inline bool + constexpr bool operator==(__detail::__idt> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.size() == __y.size() && __x.compare(__y) == 0; } template - inline bool + constexpr bool operator!=(basic_string_view<_CharT, _Traits> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return !(__x == __y); } template - inline bool + constexpr bool operator!=(basic_string_view<_CharT, _Traits> __x, __detail::__idt> __y) noexcept { return !(__x == __y); } template - inline bool + constexpr bool operator!=(__detail::__idt> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return !(__x == __y); } template - inline bool + constexpr bool operator< (basic_string_view<_CharT, _Traits> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) < 0; } template - inline bool + constexpr bool operator< (basic_string_view<_CharT, _Traits> __x, __detail::__idt> __y) noexcept { return __x.compare(__y) < 0; } template - inline bool + constexpr bool operator< (__detail::__idt> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) < 0; } template - inline bool + constexpr bool operator> (basic_string_view<_CharT, _Traits> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) > 0; } template - inline bool + constexpr bool operator> (basic_string_view<_CharT, _Traits> __x, __detail::__idt> __y) noexcept { return __x.compare(__y) > 0; } template - inline bool + constexpr bool operator> (__detail::__idt> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) > 0; } template - inline bool + constexpr bool operator<=(basic_string_view<_CharT, _Traits> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) <= 0; } template - inline bool + constexpr bool operator<=(basic_string_view<_CharT, _Traits> __x, __detail::__idt> __y) noexcept { return __x.compare(__y) <= 0; } template - inline bool + constexpr bool operator<=(__detail::__idt> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) <= 0; } template - inline bool + constexpr bool operator>=(basic_string_view<_CharT, _Traits> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) >= 0; } template - inline bool + constexpr bool operator>=(basic_string_view<_CharT, _Traits> __x, __detail::__idt> __y) noexcept { return __x.compare(__y) >= 0; } template - inline bool + constexpr bool operator>=(__detail::__idt> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) >= 0; } Index: libstdc++-v3/include/std/type_traits =================================================================== --- libstdc++-v3/include/std/type_traits (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/std/type_traits (.../branches/gcc-7-branch) @@ -2758,9 +2758,14 @@ template struct __is_invocable_impl<_Result, _Ret, __void_t> - : __or_, is_convertible>::type + : is_convertible::type { }; + template + struct __is_invocable_impl<_Result, void, __void_t> + : true_type + { }; + template struct __is_invocable : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type @@ -2857,10 +2862,26 @@ __call_is_nothrow_<_Fn, _ArgTypes...>>::type { }; + template + struct __is_nt_invocable_impl : false_type { }; + + template + struct __is_nt_invocable_impl<_Result, _Ret, + __void_t> + : __and_, + is_nothrow_constructible<_Ret, typename _Result::type>> + { }; + + template + struct __is_nt_invocable_impl<_Result, void, + __void_t> + : true_type + { }; + /// std::is_nothrow_invocable_r template struct is_nothrow_invocable_r - : __and_<__is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>, + : __and_<__is_nt_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>, __call_is_nothrow_<_Fn, _ArgTypes...>>::type { }; @@ -3043,14 +3064,16 @@ template inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value; -#ifdef __has_builtin -# if !__has_builtin(__has_unique_object_representations) -// Try not to break non-GNU compilers that don't support the built-in: -# define _GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP 1 +#if __GNUC__ >= 7 +# define _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP 1 +#elif defined(__is_identifier) +// For non-GNU compilers: +# if ! __is_identifier(__has_unique_object_representations) +# define _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP 1 # endif #endif -#ifndef _GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP +#ifdef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP # define __cpp_lib_has_unique_object_representations 201606 /// has_unique_object_representations template @@ -3060,13 +3083,13 @@ )> { }; #endif -#undef _GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP +#undef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP #if __GNUC__ >= 7 # define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1 -#elif defined __has_builtin +#elif defined(__is_identifier) // For non-GNU compilers: -# if __has_builtin(__is_aggregate) +# if ! __is_identifier(__is_aggregate) # define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1 # endif #endif Index: libstdc++-v3/include/std/chrono =================================================================== --- libstdc++-v3/include/std/chrono (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/std/chrono (.../branches/gcc-7-branch) @@ -622,7 +622,8 @@ { } // conversions - template + template>> constexpr time_point(const time_point& __t) : __d(__t.time_since_epoch()) { } Index: libstdc++-v3/include/std/istream =================================================================== --- libstdc++-v3/include/std/istream (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/std/istream (.../branches/gcc-7-branch) @@ -150,9 +150,9 @@ * whatever data is appropriate for the type of the argument. * * If an exception is thrown during extraction, ios_base::badbit - * will be turned on in the stream's error state without causing an - * ios_base::failure to be thrown. The original exception will then - * be rethrown. + * will be turned on in the stream's error state (without causing an + * ios_base::failure to be thrown) and the original exception will + * be rethrown if badbit is set in the exceptions mask. */ //@{ @@ -286,9 +286,9 @@ * by gcount(). * * If an exception is thrown during extraction, ios_base::badbit - * will be turned on in the stream's error state without causing an - * ios_base::failure to be thrown. The original exception will then - * be rethrown. + * will be turned on in the stream's error state (without causing an + * ios_base::failure to be thrown) and the original exception will + * be rethrown if badbit is set in the exceptions mask. */ /** Index: libstdc++-v3/include/std/sstream =================================================================== --- libstdc++-v3/include/std/sstream (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/std/sstream (.../branches/gcc-7-branch) @@ -302,12 +302,14 @@ __xfer_bufptrs(const basic_stringbuf& __from, basic_stringbuf* __to) : _M_to{__to}, _M_goff{-1, -1, -1}, _M_poff{-1, -1, -1} { - const _CharT* __str = __from._M_string.data(); + const _CharT* const __str = __from._M_string.data(); + const _CharT* __end = nullptr; if (__from.eback()) { - _M_goff[0] = __from.eback() - __str; - _M_goff[1] = __from.gptr() - __str; - _M_goff[2] = __from.egptr() - __str; + _M_goff[0] = __from.eback() - __str; + _M_goff[1] = __from.gptr() - __str; + _M_goff[2] = __from.egptr() - __str; + __end = __from.egptr(); } if (__from.pbase()) { @@ -314,7 +316,18 @@ _M_poff[0] = __from.pbase() - __str; _M_poff[1] = __from.pptr() - __from.pbase(); _M_poff[2] = __from.epptr() - __str; + if (__from.pptr() > __end) + __end = __from.pptr(); } + + // Set _M_string length to the greater of the get and put areas. + if (__end) + { + // The const_cast avoids changing this constructor's signature, + // because it is exported from the dynamic library. + auto& __mut_from = const_cast(__from); + __mut_from._M_string._M_length(__end - __str); + } } ~__xfer_bufptrs() Index: libstdc++-v3/include/experimental/string_view =================================================================== --- libstdc++-v3/include/experimental/string_view (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/experimental/string_view (.../branches/gcc-7-branch) @@ -219,7 +219,7 @@ // [string.view.modifiers], modifiers: - void + constexpr void remove_prefix(size_type __n) { __glibcxx_assert(this->_M_len >= __n); @@ -227,15 +227,16 @@ this->_M_len -= __n; } - void + constexpr void remove_suffix(size_type __n) { this->_M_len -= __n; } - void + constexpr void swap(basic_string_view& __sv) noexcept { - std::swap(this->_M_len, __sv._M_len); - std::swap(this->_M_str, __sv._M_str); + auto __tmp = *this; + *this = __sv; + __sv = __tmp; } @@ -285,7 +286,7 @@ __pos, this->size()), basic_string_view{}); } - int + constexpr int compare(basic_string_view __str) const noexcept { int __ret = traits_type::compare(this->_M_str, __str._M_str, @@ -295,24 +296,24 @@ return __ret; } - int + constexpr int compare(size_type __pos1, size_type __n1, basic_string_view __str) const { return this->substr(__pos1, __n1).compare(__str); } - int + constexpr int compare(size_type __pos1, size_type __n1, basic_string_view __str, size_type __pos2, size_type __n2) const { return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2)); } - int + constexpr int compare(const _CharT* __str) const noexcept { return this->compare(basic_string_view{__str}); } - int + constexpr int compare(size_type __pos1, size_type __n1, const _CharT* __str) const { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); } - int + constexpr int compare(size_type __pos1, size_type __n1, const _CharT* __str, size_type __n2) const { @@ -320,78 +321,78 @@ .compare(basic_string_view(__str, __n2)); } - size_type + constexpr size_type find(basic_string_view __str, size_type __pos = 0) const noexcept { return this->find(__str._M_str, __pos, __str._M_len); } - size_type + constexpr size_type find(_CharT __c, size_type __pos=0) const noexcept; - size_type + constexpr size_type find(const _CharT* __str, size_type __pos, size_type __n) const noexcept; - size_type + constexpr size_type find(const _CharT* __str, size_type __pos=0) const noexcept { return this->find(__str, __pos, traits_type::length(__str)); } - size_type + constexpr size_type rfind(basic_string_view __str, size_type __pos = npos) const noexcept { return this->rfind(__str._M_str, __pos, __str._M_len); } - size_type + constexpr size_type rfind(_CharT __c, size_type __pos = npos) const noexcept; - size_type + constexpr size_type rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept; - size_type + constexpr size_type rfind(const _CharT* __str, size_type __pos = npos) const noexcept { return this->rfind(__str, __pos, traits_type::length(__str)); } - size_type + constexpr size_type find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept { return this->find_first_of(__str._M_str, __pos, __str._M_len); } - size_type + constexpr size_type find_first_of(_CharT __c, size_type __pos = 0) const noexcept { return this->find(__c, __pos); } - size_type + constexpr size_type find_first_of(const _CharT* __str, size_type __pos, size_type __n) const; - size_type + constexpr size_type find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept { return this->find_first_of(__str, __pos, traits_type::length(__str)); } - size_type + constexpr size_type find_last_of(basic_string_view __str, size_type __pos = npos) const noexcept { return this->find_last_of(__str._M_str, __pos, __str._M_len); } - size_type + constexpr size_type find_last_of(_CharT __c, size_type __pos=npos) const noexcept { return this->rfind(__c, __pos); } - size_type + constexpr size_type find_last_of(const _CharT* __str, size_type __pos, size_type __n) const; - size_type + constexpr size_type find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept { return this->find_last_of(__str, __pos, traits_type::length(__str)); } - size_type + constexpr size_type find_first_not_of(basic_string_view __str, size_type __pos = 0) const noexcept { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); } - size_type + constexpr size_type find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept; - size_type + constexpr size_type find_first_not_of(const _CharT* __str, size_type __pos, size_type __n) const; - size_type + constexpr size_type find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept { return this->find_first_not_of(__str, __pos, @@ -398,19 +399,19 @@ traits_type::length(__str)); } - size_type + constexpr size_type find_last_not_of(basic_string_view __str, size_type __pos = npos) const noexcept { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); } - size_type + constexpr size_type find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept; - size_type + constexpr size_type find_last_not_of(const _CharT* __str, size_type __pos, size_type __n) const; - size_type + constexpr size_type find_last_not_of(const _CharT* __str, size_type __pos = npos) const noexcept { @@ -452,109 +453,109 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template - inline bool + constexpr bool operator==(basic_string_view<_CharT, _Traits> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.size() == __y.size() && __x.compare(__y) == 0; } template - inline bool + constexpr bool operator==(basic_string_view<_CharT, _Traits> __x, __detail::__idt> __y) noexcept { return __x.size() == __y.size() && __x.compare(__y) == 0; } template - inline bool + constexpr bool operator==(__detail::__idt> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.size() == __y.size() && __x.compare(__y) == 0; } template - inline bool + constexpr bool operator!=(basic_string_view<_CharT, _Traits> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return !(__x == __y); } template - inline bool + constexpr bool operator!=(basic_string_view<_CharT, _Traits> __x, __detail::__idt> __y) noexcept { return !(__x == __y); } template - inline bool + constexpr bool operator!=(__detail::__idt> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return !(__x == __y); } template - inline bool + constexpr bool operator< (basic_string_view<_CharT, _Traits> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) < 0; } template - inline bool + constexpr bool operator< (basic_string_view<_CharT, _Traits> __x, __detail::__idt> __y) noexcept { return __x.compare(__y) < 0; } template - inline bool + constexpr bool operator< (__detail::__idt> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) < 0; } template - inline bool + constexpr bool operator> (basic_string_view<_CharT, _Traits> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) > 0; } template - inline bool + constexpr bool operator> (basic_string_view<_CharT, _Traits> __x, __detail::__idt> __y) noexcept { return __x.compare(__y) > 0; } template - inline bool + constexpr bool operator> (__detail::__idt> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) > 0; } template - inline bool + constexpr bool operator<=(basic_string_view<_CharT, _Traits> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) <= 0; } template - inline bool + constexpr bool operator<=(basic_string_view<_CharT, _Traits> __x, __detail::__idt> __y) noexcept { return __x.compare(__y) <= 0; } template - inline bool + constexpr bool operator<=(__detail::__idt> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) <= 0; } template - inline bool + constexpr bool operator>=(basic_string_view<_CharT, _Traits> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) >= 0; } template - inline bool + constexpr bool operator>=(basic_string_view<_CharT, _Traits> __x, __detail::__idt> __y) noexcept { return __x.compare(__y) >= 0; } template - inline bool + constexpr bool operator>=(__detail::__idt> __x, basic_string_view<_CharT, _Traits> __y) noexcept { return __x.compare(__y) >= 0; } Index: libstdc++-v3/include/experimental/bits/string_view.tcc =================================================================== --- libstdc++-v3/include/experimental/bits/string_view.tcc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/experimental/bits/string_view.tcc (.../branches/gcc-7-branch) @@ -49,7 +49,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find(const _CharT* __str, size_type __pos, size_type __n) const noexcept { @@ -70,7 +70,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find(_CharT __c, size_type __pos) const noexcept { @@ -86,7 +86,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept { @@ -106,7 +106,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: rfind(_CharT __c, size_type __pos) const noexcept { @@ -123,7 +123,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find_first_of(const _CharT* __str, size_type __pos, size_type __n) const { @@ -139,7 +139,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find_last_of(const _CharT* __str, size_type __pos, size_type __n) const { @@ -160,7 +160,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find_first_not_of(const _CharT* __str, size_type __pos, size_type __n) const { @@ -172,7 +172,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find_first_not_of(_CharT __c, size_type __pos) const noexcept { @@ -183,7 +183,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find_last_not_of(const _CharT* __str, size_type __pos, size_type __n) const { @@ -204,7 +204,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find_last_not_of(_CharT __c, size_type __pos) const noexcept { Index: libstdc++-v3/include/ext/new_allocator.h =================================================================== --- libstdc++-v3/include/ext/new_allocator.h (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/ext/new_allocator.h (.../branches/gcc-7-branch) @@ -96,7 +96,7 @@ // NB: __n is permitted to be 0. The C++ standard says nothing // about what the return value is when __n == 0. pointer - allocate(size_type __n, const void* = 0) + allocate(size_type __n, const void* = static_cast(0)) { if (__n > this->max_size()) std::__throw_bad_alloc(); Index: libstdc++-v3/include/bits/hashtable.h =================================================================== --- libstdc++-v3/include/bits/hashtable.h (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/bits/hashtable.h (.../branches/gcc-7-branch) @@ -973,17 +973,8 @@ _M_bucket_count = __bkt_count; } - __try - { - for (; __f != __l; ++__f) - this->insert(*__f); - } - __catch(...) - { - clear(); - _M_deallocate_buckets(); - __throw_exception_again; - } + for (; __f != __l; ++__f) + this->insert(*__f); } templateclear(this->rdstate() | __state); } - // Flip the internal state on for the proper state bits, then re - // throws the propagated exception if bit also set in + // Flip the internal state on for the proper state bits, then + // rethrows the propagated exception if bit also set in // exceptions(). void _M_setstate(iostate __state) Index: libstdc++-v3/include/bits/stl_stack.h =================================================================== --- libstdc++-v3/include/bits/stl_stack.h (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/bits/stl_stack.h (.../branches/gcc-7-branch) @@ -86,7 +86,7 @@ * * The second template parameter defines the type of the underlying * sequence/container. It defaults to std::deque, but it can be - * any type that supports @c back, @c push_back, and @c pop_front, + * any type that supports @c back, @c push_back, and @c pop_back, * such as std::list, std::vector, or an appropriate user-defined * type. * Index: libstdc++-v3/include/bits/stl_iterator_base_types.h =================================================================== --- libstdc++-v3/include/bits/stl_iterator_base_types.h (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/bits/stl_iterator_base_types.h (.../branches/gcc-7-branch) @@ -200,7 +200,8 @@ * sugar for internal library use only. */ template - inline typename iterator_traits<_Iter>::iterator_category + inline _GLIBCXX_CONSTEXPR + typename iterator_traits<_Iter>::iterator_category __iterator_category(const _Iter&) { return typename iterator_traits<_Iter>::iterator_category(); } Index: libstdc++-v3/include/bits/basic_string.h =================================================================== --- libstdc++-v3/include/bits/basic_string.h (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/bits/basic_string.h (.../branches/gcc-7-branch) @@ -115,8 +115,24 @@ template using _If_sv = enable_if_t< __and_, + __not_>, __not_>>::value, _Res>; + + // Allows an implicit conversion to __sv_type. + static __sv_type + _S_to_string_view(__sv_type __svt) noexcept + { return __svt; } + + // Wraps a string_view by explicit conversion and thus + // allows to add an internal constructor that does not + // participate in overload resolution when a string_view + // is provided. + struct __sv_wrapper + { + explicit __sv_wrapper(__sv_type __sv) noexcept : _M_sv(__sv) { } + __sv_type _M_sv; + }; #endif // Use empty-base optimization: http://www.cantrip.org/emptyopt.html @@ -593,7 +609,7 @@ #if __cplusplus > 201402L /** * @brief Construct string from a substring of a string_view. - * @param __t Source string view. + * @param __t Source object convertible to string view. * @param __pos The index of the first character to copy from __t. * @param __n The number of characters to copy from __t. * @param __a Allocator to use. @@ -601,16 +617,27 @@ template> basic_string(const _Tp& __t, size_type __pos, size_type __n, const _Alloc& __a = _Alloc()) - : basic_string(__sv_type(__t).substr(__pos, __n), __a) { } + : basic_string(_S_to_string_view(__t).substr(__pos, __n), __a) { } /** * @brief Construct string from a string_view. - * @param __sv Source string view. + * @param __t Source object convertible to string view. * @param __a Allocator to use (default is default allocator). */ + template> + explicit + basic_string(const _Tp& __t, const _Alloc& __a = _Alloc()) + : basic_string(__sv_wrapper(_S_to_string_view(__t)), __a) { } + + /** + * @brief Only internally used: Construct string from a string view + * wrapper. + * @param __svw string view wrapper. + * @param __a Allocator to use. + */ explicit - basic_string(__sv_type __sv, const _Alloc& __a = _Alloc()) - : basic_string(__sv.data(), __sv.size(), __a) { } + basic_string(__sv_wrapper __svw, const _Alloc& __a) + : basic_string(__svw._M_sv.data(), __svw._M_sv.size(), __a) { } #endif // C++17 /** @@ -756,12 +783,12 @@ #if __cplusplus > 201402L /** * @brief Set value to string constructed from a string_view. - * @param __sv A string_view. + * @param __svt An object convertible to string_view. */ - template - _If_sv<_Tp, basic_string&> - operator=(_Tp __sv) - { return this->assign(__sv); } + template + _If_sv<_Tp, basic_string&> + operator=(const _Tp& __svt) + { return this->assign(__svt); } /** * @brief Convert to a string_view. @@ -768,7 +795,7 @@ * @return A string_view. */ operator __sv_type() const noexcept - { return __sv_type(data(), size()); } + { return __sv_type(data(), size()); } #endif // C++17 // Iterators: @@ -1157,12 +1184,13 @@ #if __cplusplus > 201402L /** * @brief Append a string_view. - * @param __sv The string_view to be appended. + * @param __svt An object convertible to string_view to be appended. * @return Reference to this string. */ - basic_string& - operator+=(__sv_type __sv) - { return this->append(__sv); } + template + _If_sv<_Tp, basic_string&> + operator+=(const _Tp& __svt) + { return this->append(__svt); } #endif // C++17 /** @@ -1265,22 +1293,26 @@ #if __cplusplus > 201402L /** * @brief Append a string_view. - * @param __sv The string_view to be appended. + * @param __svt An object convertible to string_view to be appended. * @return Reference to this string. */ - basic_string& - append(__sv_type __sv) - { return this->append(__sv.data(), __sv.size()); } + template + _If_sv<_Tp, basic_string&> + append(const _Tp& __svt) + { + __sv_type __sv = __svt; + return this->append(__sv.data(), __sv.size()); + } /** * @brief Append a range of characters from a string_view. - * @param __sv The string_view to be appended from. + * @param __svt An object convertible to string_view to be appended from. * @param __pos The position in the string_view to append from. * @param __n The number of characters to append from the string_view. * @return Reference to this string. */ - template - _If_sv<_Tp, basic_string&> + template + _If_sv<_Tp, basic_string&> append(const _Tp& __svt, size_type __pos, size_type __n = npos) { __sv_type __sv = __svt; @@ -1433,21 +1465,25 @@ #if __cplusplus > 201402L /** * @brief Set value from a string_view. - * @param __sv The source string_view. + * @param __svt The source object convertible to string_view. * @return Reference to this string. */ - basic_string& - assign(__sv_type __sv) - { return this->assign(__sv.data(), __sv.size()); } + template + _If_sv<_Tp, basic_string&> + assign(const _Tp& __svt) + { + __sv_type __sv = __svt; + return this->assign(__sv.data(), __sv.size()); + } /** * @brief Set value from a range of characters in a string_view. - * @param __sv The source string_view. + * @param __svt The source object convertible to string_view. * @param __pos The position in the string_view to assign from. * @param __n The number of characters to assign. * @return Reference to this string. */ - template + template _If_sv<_Tp, basic_string&> assign(const _Tp& __svt, size_type __pos, size_type __n = npos) { @@ -1692,23 +1728,27 @@ /** * @brief Insert a string_view. * @param __pos Iterator referencing position in string to insert at. - * @param __sv The string_view to insert. + * @param __svt The object convertible to string_view to insert. * @return Reference to this string. */ - basic_string& - insert(size_type __pos, __sv_type __sv) - { return this->insert(__pos, __sv.data(), __sv.size()); } + template + _If_sv<_Tp, basic_string&> + insert(size_type __pos, const _Tp& __svt) + { + __sv_type __sv = __svt; + return this->insert(__pos, __sv.data(), __sv.size()); + } /** * @brief Insert a string_view. * @param __pos Iterator referencing position in string to insert at. - * @param __sv The string_view to insert from. + * @param __svt The object convertible to string_view to insert from. * @param __pos Iterator referencing position in string_view to insert * from. * @param __n The number of characters to insert. * @return Reference to this string. */ - template + template _If_sv<_Tp, basic_string&> insert(size_type __pos1, const _Tp& __svt, size_type __pos2, size_type __n = npos) @@ -2120,23 +2160,27 @@ * @brief Replace range of characters with string_view. * @param __pos The position to replace at. * @param __n The number of characters to replace. - * @param __sv The string_view to insert. + * @param __svt The object convertible to string_view to insert. * @return Reference to this string. */ - basic_string& - replace(size_type __pos, size_type __n, __sv_type __sv) - { return this->replace(__pos, __n, __sv.data(), __sv.size()); } + template + _If_sv<_Tp, basic_string&> + replace(size_type __pos, size_type __n, const _Tp& __svt) + { + __sv_type __sv = __svt; + return this->replace(__pos, __n, __sv.data(), __sv.size()); + } /** * @brief Replace range of characters with string_view. * @param __pos1 The position to replace at. * @param __n1 The number of characters to replace. - * @param __sv The string_view to insert from. + * @param __svt The object convertible to string_view to insert from. * @param __pos2 The position in the string_view to insert from. * @param __n2 The number of characters to insert. * @return Reference to this string. */ - template + template _If_sv<_Tp, basic_string&> replace(size_type __pos1, size_type __n1, const _Tp& __svt, size_type __pos2, size_type __n2 = npos) @@ -2153,12 +2197,16 @@ to replace at. * @param __i2 An iterator referencing the end position for the replace. - * @param __sv The string_view to insert from. + * @param __svt The object convertible to string_view to insert from. * @return Reference to this string. */ - basic_string& - replace(const_iterator __i1, const_iterator __i2, __sv_type __sv) - { return this->replace(__i1 - begin(), __i2 - __i1, __sv); } + template + _If_sv<_Tp, basic_string&> + replace(const_iterator __i1, const_iterator __i2, const _Tp& __svt) + { + __sv_type __sv = __svt; + return this->replace(__i1 - begin(), __i2 - __i1, __sv); + } #endif // C++17 private: @@ -2288,13 +2336,18 @@ #if __cplusplus > 201402L /** * @brief Find position of a string_view. - * @param __sv The string_view to locate. + * @param __svt The object convertible to string_view to locate. * @param __pos Index of character to search from (default 0). * @return Index of start of first occurrence. */ - size_type - find(__sv_type __sv, size_type __pos = 0) const noexcept - { return this->find(__sv.data(), __pos, __sv.size()); } + template + _If_sv<_Tp, size_type> + find(const _Tp& __svt, size_type __pos = 0) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return this->find(__sv.data(), __pos, __sv.size()); + } #endif // C++17 /** @@ -2345,13 +2398,18 @@ #if __cplusplus > 201402L /** * @brief Find last position of a string_view. - * @param __sv The string_view to locate. + * @param __svt The object convertible to string_view to locate. * @param __pos Index of character to search back from (default end). * @return Index of start of last occurrence. */ - size_type - rfind(__sv_type __sv, size_type __pos = npos) const noexcept - { return this->rfind(__sv.data(), __pos, __sv.size()); } + template + _If_sv<_Tp, size_type> + rfind(const _Tp& __svt, size_type __pos = npos) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return this->rfind(__sv.data(), __pos, __sv.size()); + } #endif // C++17 /** @@ -2419,13 +2477,19 @@ #if __cplusplus > 201402L /** * @brief Find position of a character of a string_view. - * @param __sv A string_view containing characters to locate. + * @param __svt An object convertible to string_view containing + * characters to locate. * @param __pos Index of character to search from (default 0). * @return Index of first occurrence. */ - size_type - find_first_of(__sv_type __sv, size_type __pos = 0) const noexcept - { return this->find_first_of(__sv.data(), __pos, __sv.size()); } + template + _If_sv<_Tp, size_type> + find_first_of(const _Tp& __svt, size_type __pos = 0) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return this->find_first_of(__sv.data(), __pos, __sv.size()); + } #endif // C++17 /** @@ -2497,13 +2561,19 @@ #if __cplusplus > 201402L /** * @brief Find last position of a character of string. - * @param __sv A string_view containing characters to locate. + * @param __svt An object convertible to string_view containing + * characters to locate. * @param __pos Index of character to search back from (default end). * @return Index of last occurrence. */ - size_type - find_last_of(__sv_type __sv, size_type __pos = npos) const noexcept - { return this->find_last_of(__sv.data(), __pos, __sv.size()); } + template + _If_sv<_Tp, size_type> + find_last_of(const _Tp& __svt, size_type __pos = npos) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return this->find_last_of(__sv.data(), __pos, __sv.size()); + } #endif // C++17 /** @@ -2574,13 +2644,19 @@ #if __cplusplus > 201402L /** * @brief Find position of a character not in a string_view. - * @param __sv A string_view containing characters to avoid. + * @param __svt A object convertible to string_view containing + * characters to avoid. * @param __pos Index of character to search from (default 0). * @return Index of first occurrence. */ - size_type - find_first_not_of(__sv_type __sv, size_type __pos = 0) const noexcept - { return this->find_first_not_of(__sv.data(), __pos, __sv.size()); } + template + _If_sv<_Tp, size_type> + find_first_not_of(const _Tp& __svt, size_type __pos = 0) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return this->find_first_not_of(__sv.data(), __pos, __sv.size()); + } #endif // C++17 /** @@ -2650,13 +2726,19 @@ #if __cplusplus > 201402L /** * @brief Find last position of a character not in a string_view. - * @param __sv A string_view containing characters to avoid. + * @param __svt An object convertible to string_view containing + * characters to avoid. * @param __pos Index of character to search back from (default end). * @return Index of last occurrence. */ - size_type - find_last_not_of(__sv_type __sv, size_type __pos = npos) const noexcept - { return this->find_last_not_of(__sv.data(), __pos, __sv.size()); } + template + _If_sv<_Tp, size_type> + find_last_not_of(const _Tp& __svt, size_type __pos = npos) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return this->find_last_not_of(__sv.data(), __pos, __sv.size()); + } #endif // C++17 /** @@ -2754,46 +2836,57 @@ #if __cplusplus > 201402L /** * @brief Compare to a string_view. - * @param __sv A string_view to compare against. + * @param __svt An object convertible to string_view to compare against. * @return Integer < 0, 0, or > 0. */ - int - compare(__sv_type __sv) const - { - const size_type __size = this->size(); - const size_type __osize = __sv.size(); - const size_type __len = std::min(__size, __osize); + template + _If_sv<_Tp, int> + compare(const _Tp& __svt) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + const size_type __size = this->size(); + const size_type __osize = __sv.size(); + const size_type __len = std::min(__size, __osize); - int __r = traits_type::compare(_M_data(), __sv.data(), __len); - if (!__r) - __r = _S_compare(__size, __osize); - return __r; - } + int __r = traits_type::compare(_M_data(), __sv.data(), __len); + if (!__r) + __r = _S_compare(__size, __osize); + return __r; + } /** * @brief Compare to a string_view. * @param __pos A position in the string to start comparing from. * @param __n The number of characters to compare. - * @param __sv A string_view to compare against. + * @param __svt An object convertible to string_view to compare + * against. * @return Integer < 0, 0, or > 0. */ - int - compare(size_type __pos, size_type __n, __sv_type __sv) const - { return __sv_type(*this).substr(__pos, __n).compare(__sv); } + template + _If_sv<_Tp, int> + compare(size_type __pos, size_type __n, const _Tp& __svt) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return __sv_type(*this).substr(__pos, __n).compare(__sv); + } /** * @brief Compare to a string_view. * @param __pos1 A position in the string to start comparing from. * @param __n1 The number of characters to compare. - * @param __sv A string_view to compare against. + * @param __svt An object convertible to string_view to compare + * against. * @param __pos2 A position in the string_view to start comparing from. * @param __n2 The number of characters to compare. * @return Integer < 0, 0, or > 0. */ - template + template _If_sv<_Tp, int> compare(size_type __pos1, size_type __n1, const _Tp& __svt, size_type __pos2, size_type __n2 = npos) const + noexcept(is_same<_Tp, __sv_type>::value) { __sv_type __sv = __svt; return __sv_type(*this) @@ -2918,7 +3011,10 @@ int compare(size_type __pos, size_type __n1, const _CharT* __s, size_type __n2) const; - }; + + // Allow basic_stringbuf::__xfer_bufptrs to call _M_length: + template friend class basic_stringbuf; + }; _GLIBCXX_END_NAMESPACE_CXX11 #else // !_GLIBCXX_USE_CXX11_ABI // Reference-counted COW string implentation @@ -3343,8 +3439,24 @@ template using _If_sv = enable_if_t< __and_, + __not_>, __not_>>::value, _Res>; + + // Allows an implicit conversion to __sv_type. + static __sv_type + _S_to_string_view(__sv_type __svt) noexcept + { return __svt; } + + // Wraps a string_view by explicit conversion and thus + // allows to add an internal constructor that does not + // participate in overload resolution when a string_view + // is provided. + struct __sv_wrapper + { + explicit __sv_wrapper(__sv_type __sv) noexcept : _M_sv(__sv) { } + __sv_type _M_sv; + }; #endif public: @@ -3471,7 +3583,7 @@ #if __cplusplus > 201402L /** * @brief Construct string from a substring of a string_view. - * @param __t Source string view. + * @param __t Source object convertible to string view. * @param __pos The index of the first character to copy from __t. * @param __n The number of characters to copy from __t. * @param __a Allocator to use. @@ -3479,16 +3591,27 @@ template> basic_string(const _Tp& __t, size_type __pos, size_type __n, const _Alloc& __a = _Alloc()) - : basic_string(__sv_type(__t).substr(__pos, __n), __a) { } + : basic_string(_S_to_string_view(__t).substr(__pos, __n), __a) { } /** * @brief Construct string from a string_view. - * @param __sv Source string view. + * @param __t Source object convertible to string view. * @param __a Allocator to use (default is default allocator). */ + template> + explicit + basic_string(const _Tp& __t, const _Alloc& __a = _Alloc()) + : basic_string(__sv_wrapper(_S_to_string_view(__t)), __a) { } + + /** + * @brief Only internally used: Construct string from a string view + * wrapper. + * @param __svw string view wrapper. + * @param __a Allocator to use. + */ explicit - basic_string(__sv_type __sv, const _Alloc& __a = _Alloc()) - : basic_string(__sv.data(), __sv.size(), __a) { } + basic_string(__sv_wrapper __svw, const _Alloc& __a) + : basic_string(__svw._M_sv.data(), __svw._M_sv.size(), __a) { } #endif // C++17 /** @@ -3559,12 +3682,12 @@ #if __cplusplus > 201402L /** * @brief Set value to string constructed from a string_view. - * @param __sv A string_view. + * @param __svt An object convertible to string_view. */ template _If_sv<_Tp, basic_string&> - operator=(_Tp __sv) - { return this->assign(__sv); } + operator=(const _Tp& __svt) + { return this->assign(__svt); } /** * @brief Convert to a string_view. @@ -3981,12 +4104,13 @@ #if __cplusplus > 201402L /** * @brief Append a string_view. - * @param __sv The string_view to be appended. + * @param __svt The object convertible to string_view to be appended. * @return Reference to this string. */ - basic_string& - operator+=(__sv_type __sv) - { return this->append(__sv); } + template + _If_sv<_Tp, basic_string&> + operator+=(const _Tp& __svt) + { return this->append(__svt); } #endif // C++17 /** @@ -4072,22 +4196,27 @@ #if __cplusplus > 201402L /** * @brief Append a string_view. - * @param __sv The string_view to be appended. + * @param __svt The object convertible to string_view to be appended. * @return Reference to this string. */ - basic_string& - append(__sv_type __sv) - { return this->append(__sv.data(), __sv.size()); } + template + _If_sv<_Tp, basic_string&> + append(const _Tp& __svt) + { + __sv_type __sv = __svt; + return this->append(__sv.data(), __sv.size()); + } /** * @brief Append a range of characters from a string_view. - * @param __sv The string_view to be appended from. + * @param __svt The object convertible to string_view to be appended + * from. * @param __pos The position in the string_view to append from. * @param __n The number of characters to append from the string_view. * @return Reference to this string. */ - template - _If_sv<_Tp, basic_string&> + template + _If_sv<_Tp, basic_string&> append(const _Tp& __svt, size_type __pos, size_type __n = npos) { __sv_type __sv = __svt; @@ -4225,23 +4354,27 @@ #if __cplusplus > 201402L /** * @brief Set value from a string_view. - * @param __sv The source string_view. + * @param __svt The source object convertible to string_view. * @return Reference to this string. */ - basic_string& - assign(__sv_type __sv) - { return this->assign(__sv.data(), __sv.size()); } + template + _If_sv<_Tp, basic_string&> + assign(const _Tp& __svt) + { + __sv_type __sv = __svt; + return this->assign(__sv.data(), __sv.size()); + } /** * @brief Set value from a range of characters in a string_view. - * @param __sv The source string_view. + * @param __svt The source object convertible to string_view. * @param __pos The position in the string_view to assign from. * @param __n The number of characters to assign. * @return Reference to this string. */ - template - _If_sv<_Tp, basic_string&> - assign(const _Tp& __svt, size_type __pos, size_type __n = npos) + template + _If_sv<_Tp, basic_string&> + assign(const _Tp& __svt, size_type __pos, size_type __n = npos) { __sv_type __sv = __svt; return assign(__sv.data() @@ -4429,25 +4562,29 @@ /** * @brief Insert a string_view. * @param __pos Iterator referencing position in string to insert at. - * @param __sv The string_view to insert. + * @param __svt The object convertible to string_view to insert. * @return Reference to this string. */ - basic_string& - insert(size_type __pos, __sv_type __sv) - { return this->insert(__pos, __sv.data(), __sv.size()); } + template + _If_sv<_Tp, basic_string&> + insert(size_type __pos, const _Tp& __svt) + { + __sv_type __sv = __svt; + return this->insert(__pos, __sv.data(), __sv.size()); + } /** * @brief Insert a string_view. * @param __pos Iterator referencing position in string to insert at. - * @param __sv The string_view to insert from. + * @param __svt The object convertible to string_view to insert from. * @param __pos Iterator referencing position in string_view to insert * from. * @param __n The number of characters to insert. * @return Reference to this string. */ - template - _If_sv<_Tp, basic_string&> - insert(size_type __pos1, const _Tp& __svt, + template + _If_sv<_Tp, basic_string&> + insert(size_type __pos1, const _Tp& __svt, size_type __pos2, size_type __n = npos) { __sv_type __sv = __svt; @@ -4790,7 +4927,7 @@ return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __k1.base(), __k2 - __k1); } - + #if __cplusplus >= 201103L /** * @brief Replace range of characters with initializer_list. @@ -4816,31 +4953,35 @@ * @brief Replace range of characters with string_view. * @param __pos The position to replace at. * @param __n The number of characters to replace. - * @param __sv The string_view to insert. + * @param __svt The object convertible to string_view to insert. * @return Reference to this string. */ - basic_string& - replace(size_type __pos, size_type __n, __sv_type __sv) - { return this->replace(__pos, __n, __sv.data(), __sv.size()); } + template + _If_sv<_Tp, basic_string&> + replace(size_type __pos, size_type __n, const _Tp& __svt) + { + __sv_type __sv = __svt; + return this->replace(__pos, __n, __sv.data(), __sv.size()); + } /** * @brief Replace range of characters with string_view. * @param __pos1 The position to replace at. * @param __n1 The number of characters to replace. - * @param __sv The string_view to insert from. + * @param __svt The object convertible to string_view to insert from. * @param __pos2 The position in the string_view to insert from. * @param __n2 The number of characters to insert. * @return Reference to this string. */ - template - _If_sv<_Tp, basic_string&> - replace(size_type __pos1, size_type __n1, const _Tp& __svt, + template + _If_sv<_Tp, basic_string&> + replace(size_type __pos1, size_type __n1, const _Tp& __svt, size_type __pos2, size_type __n2 = npos) { __sv_type __sv = __svt; - return this->replace(__pos1, __n1, __sv.data() - + __sv._M_check(__pos2, "basic_string::replace"), - __sv._M_limit(__pos2, __n2)); + return this->replace(__pos1, __n1, + __sv.data() + __sv._M_check(__pos2, "basic_string::replace"), + __sv._M_limit(__pos2, __n2)); } /** @@ -4849,12 +4990,16 @@ to replace at. * @param __i2 An iterator referencing the end position for the replace. - * @param __sv The string_view to insert from. + * @param __svt The object convertible to string_view to insert from. * @return Reference to this string. */ - basic_string& - replace(const_iterator __i1, const_iterator __i2, __sv_type __sv) - { return this->replace(__i1 - begin(), __i2 - __i1, __sv); } + template + _If_sv<_Tp, basic_string&> + replace(const_iterator __i1, const_iterator __i2, const _Tp& __svt) + { + __sv_type __sv = __svt; + return this->replace(__i1 - begin(), __i2 - __i1, __sv); + } #endif // C++17 private: @@ -5059,13 +5204,18 @@ #if __cplusplus > 201402L /** * @brief Find position of a string_view. - * @param __sv The string_view to locate. + * @param __svt The object convertible to string_view to locate. * @param __pos Index of character to search from (default 0). * @return Index of start of first occurrence. */ - size_type - find(__sv_type __sv, size_type __pos = 0) const noexcept - { return this->find(__sv.data(), __pos, __sv.size()); } + template + _If_sv<_Tp, size_type> + find(const _Tp& __svt, size_type __pos = 0) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return this->find(__sv.data(), __pos, __sv.size()); + } #endif // C++17 /** @@ -5132,13 +5282,18 @@ #if __cplusplus > 201402L /** * @brief Find last position of a string_view. - * @param __sv The string_view to locate. + * @param __svt The object convertible to string_view to locate. * @param __pos Index of character to search back from (default end). * @return Index of start of last occurrence. */ - size_type - rfind(__sv_type __sv, size_type __pos = npos) const noexcept - { return this->rfind(__sv.data(), __pos, __sv.size()); } + template + _If_sv<_Tp, size_type> + rfind(const _Tp& __svt, size_type __pos = npos) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return this->rfind(__sv.data(), __pos, __sv.size()); + } #endif // C++17 /** @@ -5210,13 +5365,19 @@ #if __cplusplus > 201402L /** * @brief Find position of a character of a string_view. - * @param __sv A string_view containing characters to locate. + * @param __svt An object convertible to string_view containing + * characters to locate. * @param __pos Index of character to search from (default 0). * @return Index of first occurrence. */ - size_type - find_first_of(__sv_type __sv, size_type __pos = 0) const noexcept - { return this->find_first_of(__sv.data(), __pos, __sv.size()); } + template + _If_sv<_Tp, size_type> + find_first_of(const _Tp& __svt, size_type __pos = 0) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return this->find_first_of(__sv.data(), __pos, __sv.size()); + } #endif // C++17 /** @@ -5288,13 +5449,19 @@ #if __cplusplus > 201402L /** * @brief Find last position of a character of string. - * @param __sv A string_view containing characters to locate. + * @param __svt An object convertible to string_view containing + * characters to locate. * @param __pos Index of character to search back from (default end). * @return Index of last occurrence. */ - size_type - find_last_of(__sv_type __sv, size_type __pos = npos) const noexcept - { return this->find_last_of(__sv.data(), __pos, __sv.size()); } + template + _If_sv<_Tp, size_type> + find_last_of(const _Tp& __svt, size_type __pos = npos) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return this->find_last_of(__sv.data(), __pos, __sv.size()); + } #endif // C++17 /** @@ -5363,13 +5530,19 @@ #if __cplusplus > 201402L /** * @brief Find position of a character not in a string_view. - * @param __sv A string_view containing characters to avoid. + * @param __svt An object convertible to string_view containing + * characters to avoid. * @param __pos Index of character to search from (default 0). * @return Index of first occurrence. */ - size_type - find_first_not_of(__sv_type __sv, size_type __pos = 0) const noexcept - { return this->find_first_not_of(__sv.data(), __pos, __sv.size()); } + template + _If_sv<_Tp, size_type> + find_first_not_of(const _Tp& __svt, size_type __pos = 0) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return this->find_first_not_of(__sv.data(), __pos, __sv.size()); + } #endif // C++17 /** @@ -5439,13 +5612,19 @@ #if __cplusplus > 201402L /** * @brief Find last position of a character not in a string_view. - * @param __sv A string_view containing characters to avoid. + * @param __svt An object convertible to string_view containing + * characters to avoid. * @param __pos Index of character to search back from (default end). * @return Index of last occurrence. */ - size_type - find_last_not_of(__sv_type __sv, size_type __pos = npos) const noexcept - { return this->find_last_not_of(__sv.data(), __pos, __sv.size()); } + template + _If_sv<_Tp, size_type> + find_last_not_of(const _Tp& __svt, size_type __pos = npos) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return this->find_last_not_of(__sv.data(), __pos, __sv.size()); + } #endif // C++17 /** @@ -5495,46 +5674,57 @@ #if __cplusplus > 201402L /** * @brief Compare to a string_view. - * @param __sv A string_view to compare against. + * @param __svt An object convertible to string_view to compare against. * @return Integer < 0, 0, or > 0. */ - int - compare(__sv_type __sv) const - { - const size_type __size = this->size(); - const size_type __osize = __sv.size(); - const size_type __len = std::min(__size, __osize); + template + _If_sv<_Tp, int> + compare(const _Tp& __svt) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + const size_type __size = this->size(); + const size_type __osize = __sv.size(); + const size_type __len = std::min(__size, __osize); - int __r = traits_type::compare(_M_data(), __sv.data(), __len); - if (!__r) - __r = _S_compare(__size, __osize); - return __r; - } + int __r = traits_type::compare(_M_data(), __sv.data(), __len); + if (!__r) + __r = _S_compare(__size, __osize); + return __r; + } /** * @brief Compare to a string_view. * @param __pos A position in the string to start comparing from. * @param __n The number of characters to compare. - * @param __sv A string_view to compare against. + * @param __svt An object convertible to string_view to compare + * against. * @return Integer < 0, 0, or > 0. */ - int - compare(size_type __pos, size_type __n, __sv_type __sv) const - { return __sv_type(*this).substr(__pos, __n).compare(__sv); } + template + _If_sv<_Tp, int> + compare(size_type __pos, size_type __n, const _Tp& __svt) const + noexcept(is_same<_Tp, __sv_type>::value) + { + __sv_type __sv = __svt; + return __sv_type(*this).substr(__pos, __n).compare(__sv); + } /** * @brief Compare to a string_view. * @param __pos1 A position in the string to start comparing from. * @param __n1 The number of characters to compare. - * @param __sv A string_view to compare against. + * @param __svt An object convertible to string_view to compare + * against. * @param __pos2 A position in the string_view to start comparing from. * @param __n2 The number of characters to compare. * @return Integer < 0, 0, or > 0. */ - template + template _If_sv<_Tp, int> compare(size_type __pos1, size_type __n1, const _Tp& __svt, size_type __pos2, size_type __n2 = npos) const + noexcept(is_same<_Tp, __sv_type>::value) { __sv_type __sv = __svt; return __sv_type(*this) Index: libstdc++-v3/include/bits/istream.tcc =================================================================== --- libstdc++-v3/include/bits/istream.tcc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/bits/istream.tcc (.../branches/gcc-7-branch) @@ -48,28 +48,36 @@ { ios_base::iostate __err = ios_base::goodbit; if (__in.good()) - { - if (__in.tie()) - __in.tie()->flush(); - if (!__noskip && bool(__in.flags() & ios_base::skipws)) - { - const __int_type __eof = traits_type::eof(); - __streambuf_type* __sb = __in.rdbuf(); - __int_type __c = __sb->sgetc(); + __try + { + if (__in.tie()) + __in.tie()->flush(); + if (!__noskip && bool(__in.flags() & ios_base::skipws)) + { + const __int_type __eof = traits_type::eof(); + __streambuf_type* __sb = __in.rdbuf(); + __int_type __c = __sb->sgetc(); - const __ctype_type& __ct = __check_facet(__in._M_ctype); - while (!traits_type::eq_int_type(__c, __eof) - && __ct.is(ctype_base::space, - traits_type::to_char_type(__c))) - __c = __sb->snextc(); + const __ctype_type& __ct = __check_facet(__in._M_ctype); + while (!traits_type::eq_int_type(__c, __eof) + && __ct.is(ctype_base::space, + traits_type::to_char_type(__c))) + __c = __sb->snextc(); - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 195. Should basic_istream::sentry's constructor ever - // set eofbit? - if (traits_type::eq_int_type(__c, __eof)) - __err |= ios_base::eofbit; - } - } + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 195. Should basic_istream::sentry's constructor ever + // set eofbit? + if (traits_type::eq_int_type(__c, __eof)) + __err |= ios_base::eofbit; + } + } + __catch(__cxxabiv1::__forced_unwind&) + { + __in._M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { __in._M_setstate(ios_base::badbit); } if (__in.good() && __err == ios_base::goodbit) _M_ok = true; Index: libstdc++-v3/include/bits/sstream.tcc =================================================================== --- libstdc++-v3/include/bits/sstream.tcc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/bits/sstream.tcc (.../branches/gcc-7-branch) @@ -88,6 +88,25 @@ return traits_type::not_eof(__c); const __size_type __capacity = _M_string.capacity(); + +#if _GLIBCXX_USE_CXX11_ABI + if ((this->epptr() - this->pbase()) < __capacity) + { + // There is additional capacity in _M_string that can be used. + char_type* __base = const_cast(_M_string.data()); + _M_pbump(__base, __base + __capacity, this->pptr() - this->pbase()); + if (_M_mode & ios_base::in) + { + const __size_type __nget = this->gptr() - this->eback(); + const __size_type __eget = this->egptr() - this->eback(); + this->setg(__base, __base + __nget, __base + __eget + 1); + } + *this->pptr() = traits_type::to_char_type(__c); + this->pbump(1); + return __c; + } +#endif + const __size_type __max_size = _M_string.max_size(); const bool __testput = this->pptr() < this->epptr(); if (__builtin_expect(!__testput && __capacity == __max_size, false)) Index: libstdc++-v3/include/bits/char_traits.h =================================================================== --- libstdc++-v3/include/bits/char_traits.h (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/bits/char_traits.h (.../branches/gcc-7-branch) @@ -40,6 +40,10 @@ #include // For streampos #include // For WEOF, wmemmove, wmemset, etc. +#ifndef _GLIBCXX_ALWAYS_INLINE +#define _GLIBCXX_ALWAYS_INLINE inline __attribute__((__always_inline__)) +#endif + namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -139,7 +143,7 @@ { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } }; -// #define __cpp_lib_constexpr_char_traits 201611 +#define __cpp_lib_constexpr_char_traits 201611 template _GLIBCXX14_CONSTEXPR int @@ -212,6 +216,42 @@ { _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus > 201402 + /** + * @brief Determine whether the characters of a NULL-terminated + * string are known at compile time. + * @param __s The string. + * + * Assumes that _CharT is a built-in character type. + */ + template + static _GLIBCXX_ALWAYS_INLINE constexpr bool + __constant_string_p(const _CharT* __s) + { + while (__builtin_constant_p(*__s) && *__s) + __s++; + return __builtin_constant_p(*__s); + } + + /** + * @brief Determine whether the characters of a character array are + * known at compile time. + * @param __a The character array. + * @param __n Number of characters. + * + * Assumes that _CharT is a built-in character type. + */ + template + static _GLIBCXX_ALWAYS_INLINE constexpr bool + __constant_char_array_p(const _CharT* __a, size_t __n) + { + size_t __i = 0; + while (__builtin_constant_p(__a[__i]) && __i < __n) + __i++; + return __i == __n; + } +#endif + // 21.1 /** * @brief Basis for explicit traits specializations. @@ -256,21 +296,39 @@ < static_cast(__c2)); } - static /* _GLIBCXX17_CONSTEXPR */ int + static _GLIBCXX17_CONSTEXPR int compare(const char_type* __s1, const char_type* __s2, size_t __n) { +#if __cplusplus > 201402 + if (__builtin_constant_p(__n) + && __constant_char_array_p(__s1, __n) + && __constant_char_array_p(__s2, __n)) + return __gnu_cxx::char_traits::compare(__s1, __s2, __n); +#endif if (__n == 0) return 0; return __builtin_memcmp(__s1, __s2, __n); } - static /* _GLIBCXX17_CONSTEXPR */ size_t + static _GLIBCXX17_CONSTEXPR size_t length(const char_type* __s) - { return __builtin_strlen(__s); } + { +#if __cplusplus > 201402 + if (__constant_string_p(__s)) + return __gnu_cxx::char_traits::length(__s); +#endif + return __builtin_strlen(__s); + } - static /* _GLIBCXX17_CONSTEXPR */ const char_type* + static _GLIBCXX17_CONSTEXPR const char_type* find(const char_type* __s, size_t __n, const char_type& __a) { +#if __cplusplus > 201402 + if (__builtin_constant_p(__n) + && __builtin_constant_p(__a) + && __constant_char_array_p(__s, __n)) + return __gnu_cxx::char_traits::find(__s, __n, __a); +#endif if (__n == 0) return 0; return static_cast(__builtin_memchr(__s, __a, __n)); @@ -347,24 +405,45 @@ lt(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT { return __c1 < __c2; } - static /* _GLIBCXX17_CONSTEXPR */ int + static _GLIBCXX17_CONSTEXPR int compare(const char_type* __s1, const char_type* __s2, size_t __n) { +#if __cplusplus > 201402 + if (__builtin_constant_p(__n) + && __constant_char_array_p(__s1, __n) + && __constant_char_array_p(__s2, __n)) + return __gnu_cxx::char_traits::compare(__s1, __s2, __n); +#endif if (__n == 0) return 0; - return wmemcmp(__s1, __s2, __n); + else + return wmemcmp(__s1, __s2, __n); } - static /* _GLIBCXX17_CONSTEXPR */ size_t + static _GLIBCXX17_CONSTEXPR size_t length(const char_type* __s) - { return wcslen(__s); } + { +#if __cplusplus > 201402 + if (__constant_string_p(__s)) + return __gnu_cxx::char_traits::length(__s); + else +#endif + return wcslen(__s); + } - static /* _GLIBCXX17_CONSTEXPR */ const char_type* + static _GLIBCXX17_CONSTEXPR const char_type* find(const char_type* __s, size_t __n, const char_type& __a) { +#if __cplusplus > 201402 + if (__builtin_constant_p(__n) + && __builtin_constant_p(__a) + && __constant_char_array_p(__s, __n)) + return __gnu_cxx::char_traits::find(__s, __n, __a); +#endif if (__n == 0) return 0; - return wmemchr(__s, __a, __n); + else + return wmemchr(__s, __a, __n); } static char_type* Index: libstdc++-v3/include/bits/string_view.tcc =================================================================== --- libstdc++-v3/include/bits/string_view.tcc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/include/bits/string_view.tcc (.../branches/gcc-7-branch) @@ -45,7 +45,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find(const _CharT* __str, size_type __pos, size_type __n) const noexcept { @@ -66,7 +66,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find(_CharT __c, size_type __pos) const noexcept { @@ -82,7 +82,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept { @@ -102,7 +102,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: rfind(_CharT __c, size_type __pos) const noexcept { @@ -119,7 +119,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find_first_of(const _CharT* __str, size_type __pos, size_type __n) const { @@ -135,7 +135,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find_last_of(const _CharT* __str, size_type __pos, size_type __n) const { @@ -156,7 +156,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find_first_not_of(const _CharT* __str, size_type __pos, size_type __n) const { @@ -168,7 +168,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find_first_not_of(_CharT __c, size_type __pos) const noexcept { @@ -179,7 +179,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find_last_not_of(const _CharT* __str, size_type __pos, size_type __n) const { @@ -200,7 +200,7 @@ } template - typename basic_string_view<_CharT, _Traits>::size_type + constexpr typename basic_string_view<_CharT, _Traits>::size_type basic_string_view<_CharT, _Traits>:: find_last_not_of(_CharT __c, size_type __pos) const noexcept { Index: libstdc++-v3/libsupc++/cxxabi.h =================================================================== --- libstdc++-v3/libsupc++/cxxabi.h (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/libsupc++/cxxabi.h (.../branches/gcc-7-branch) @@ -182,7 +182,7 @@ * with GNU extensions. For example, this function is used in * __gnu_cxx::__verbose_terminate_handler. * - * See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt12ch39.html + * See https://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html * for other examples of use. * * @note The same demangling functionality is available via Index: libstdc++-v3/ChangeLog =================================================================== --- libstdc++-v3/ChangeLog (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/ChangeLog (.../branches/gcc-7-branch) @@ -1,3 +1,317 @@ +2017-09-21 Jonathan Wakely + + * testsuite/25_algorithms/clamp/1.cc: Fix order of arguments and + expected results when using predicate defining reverse order. + * testsuite/25_algorithms/clamp/constexpr.cc: Likewise. + +2017-09-20 Jonathan Wakely + + Backport from mainline + 2017-06-14 Jonathan Wakely + + * doc/xml/manual/test.xml: Correct instructions on running tests. + * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Adjust to pass when + -D_GLIBCXX_USE_CXX11_ABI=0 added to RUNTESTFLAGS. + * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise. + * testsuite/27_io/basic_istream/extractors_arithmetic/char/ + exceptions_failbit.cc: Likewise. + * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/ + exceptions_failbit.cc: Likewise. + * testsuite/27_io/basic_istream/extractors_other/char/ + exceptions_null.cc: Likewise. + * testsuite/27_io/basic_istream/extractors_other/wchar_t/ + exceptions_null.cc: Likewise. + * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise. + * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise. + * testsuite/27_io/basic_ostream/inserters_other/char/ + exceptions_null.cc: Likewise. + * testsuite/27_io/basic_ostream/inserters_other/wchar_t/ + exceptions_null.cc: Likewise. + * testsuite/27_io/ios_base/storage/2.cc: Likewise. + + PR libstdc++/79162 + * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI] + (basic_string::_If_sv): Remove from the overload set when the + argument is derived from basic_string. + + PR libstdc++/79162 + * include/bits/basic_string.h (basic_string::_If_sv): Remove from the + overload set when the argument is derived from basic_string. + * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc: New + test. + * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc: + New test. + + * testsuite/24_iterators/range_access_cpp17.cc: Fix order of dg-do + and dg-options directives. Fix invalid test. + + Backport from mainline + 2017-09-20 Jonathan Wakely + + PR libstdc++/82262 + * include/std/optional (__optional_hash_call_base): Add template + parameter for remove_const_t<_Tp> and use it consistently. + * testsuite/20_util/optional/hash.cc: Test optional. + + Backport from mainline + 2017-09-19 Jonathan Wakely + + PR libstdc++/82254 + * include/std/type_traits (__is_invocable): Add partial specialization + for INVOKE case and remove is_void check from partial + specialization for INVOKE case. + (__is_nt_invocable_impl): New helper for is_nothrow_invocable_r. + (is_nothrow_invocable_r): Use __is_nt_invocable_impl. + * testsuite/20_util/is_nothrow_invocable/value.cc: Add tests for + conversions that can throw or fail to convert. Use static assert + strings to explain negative results. + * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Use + is_nothrow_constructible in is_nt_invocable_conv. + +2017-09-13 Jonathan Wakely + + Backport from mainline + 2017-09-04 Daniel Kruegler + + PR libstdc++/79162 + Implement LWG 2946, LWG 2758's resolution missed further corrections + * include/bits/basic_string.h (basic_string::compare): Add missing + required noexcept specifications. + (basic_string): Introduce internal _S_to_string_view and __sv_wrapper + for implicit string_view conversion. + (basic_string::basic_string): Fix explicit string_view conversion by + implicit conversion using _S_to_string_view and __sv_wrapper. + (basic_string): Introduce internal basic_string(__sv_wrapper, Alloc) + constructor. + (basic_string): Fix operator=(T) template by operator=(const T&) + template for uncopyable types (PR 79162). + (basic_string::operator+=, basic_string::append, basic_string::assign) + (basic_string::insert, basic_string::replace, basic_string::find) + (basic_string::rfind, basic_string::find_first_of) + (basic_string::find_last_of, basic_string::find_first_not_of) + (basic_string::find_last_not_of, basic_string::compare): Replace + __sv_type argument by template const T& (LWG 2946) and correct + documentation describing __sv_type argument. + (basic_string::find, basic_string::rfind, basic_string::find_first_of) + (basic_string::find_last_of, basic_string::find_first_not_of) + (basic_string::find_last_not_of, basic_string::compare): Replace + unconditional noexcept specification by conditional noexcept + specification to partially balance the removal of noexcept by LWG 2946. + * testsuite/21_strings/basic_string/79162.cc: New. + * testsuite/21_strings/basic_string/lwg2946.cc: New. + +2017-09-13 Jonathan Wakely + + PR libstdc++/81468 + * include/std/chrono (time_point(const time_point<_Dur2>&)): Add + missing constraint from LWG DR 1177. + * testsuite/20_util/duration/cons/dr1177.cc: New. + * testsuite/20_util/time_point/cons/81468.cc: New. + * testsuite/20_util/duration/literals/range.cc: Update dg-error line. + + * doc/doxygen/mainpage.html: Fix broken URLs. + + PR libstdc++/81835 + * doc/xml/manual/extensions.xml: Replace unstable URL. + * doc/html/manual/ext_demangling.html: Regenerate. + * libsupc++/cxxabi.h (__cxa_demangle): Fix broken URL. + +2017-09-12 Jonathan Wakely + + Backport from mainline + 2017-09-12 Jonathan Wakely + + PR libstdc++/70483 + * include/experimental/bits/string_view.tcc (basic_string_view::find) + (basic_string_view::rfind, basic_string_view::find_first_of) + (basic_string_view::find_last_of, basic_string_view::find_first_not_of) + (basic_string_view::find_last_not_of): Add constexpr specifier. + * include/experimental/string_view (basic_string_view::remove_prefix) + (basic_string_view::remove_suffix, basic_string_view::swap) + (basic_string_view::compare, basic_string_view::find) + (basic_string_view::rfind, basic_string_view::find_first_of) + (basic_string_view::find_last_of, basic_string_view::find_first_not_of) + (basic_string_view::find_last_not_of, operator==, operator!=) + (operator<, operator>, operator<=, operator>=): Likewise. + * testsuite/experimental/string_view/operations/compare/char/70483.cc: + New. + + Backport from mainline + 2017-09-11 Jonathan Wakely + + PR libstdc++/70483 + * include/bits/string_view.tcc (basic_string_view::find) + (basic_string_view::rfind, basic_string_view::find_first_of) + (basic_string_view::find_last_of, basic_string_view::find_first_not_of) + (basic_string_view::find_last_not_of): Add constexpr specifier. + * include/std/string_view (basic_string_view::operator=) + (basic_string_view::rbegin, basic_string_view::rend) + (basic_string_view::crbegin, basic_string_view::crend) + (basic_string_view::remove_prefix, basic_string_view::remove_suffix) + (basic_string_view::swap, basic_string_view::compare) + (basic_string_view::find, basic_string_view::rfind) + (basic_string_view::find_first_of, basic_string_view::find_last_of) + (basic_string_view::find_first_not_of) + (basic_string_view::find_last_not_of, basic_string_view::_M_check) + (basic_string_view::_M_limit, operator==, operator!=, operator<) + (operator>, operator<=, operator>=): Likewise. + * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/ + char/1.cc: Repeat tests in constexpr context. + * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/ + wchar_t/1.cc: Likewise. + * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/ + char/1.cc: Likewise. + * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/ + wchar_t/1.cc: Likewise. + * testsuite/21_strings/basic_string_view/operations/find/char/1.cc: + Likewise. + * testsuite/21_strings/basic_string_view/operations/find/char/2.cc: + Likewise. + * testsuite/21_strings/basic_string_view/operations/find/char/3.cc: + Likewise. + * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc: + Likewise. + * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc: + Likewise. + * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc: + Likewise. + * testsuite/21_strings/basic_string_view/operators/char/2.cc: + Likewise. + * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc: + Likewise. + * testsuite/21_strings/basic_string_view/range_access/char/1.cc: Test + cbegin, cend, rbegin, rend, crbegin and crend. + * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc: + Likewise. + * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc: + Remove trailing whitespace. + * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/ + 1.cc: Likewise. + * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc: + New. + * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc: + New. + * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc: + New. + * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/ + 2.cc: New. + + Backport from mainline + 2017-06-12 Pedro Alves + + * doc/xml/manual/status_cxx2017.xml: Update C++17 constexpr + char_traits status. + * doc/html/*: Regenerate. + + * include/bits/char_traits.h (_GLIBCXX_ALWAYS_INLINE): Define if + not already defined. + (__cpp_lib_constexpr_char_traits): Uncomment. + (__constant_string_p, __constant_char_array_p): New. + (std::char_traits, std::char_traits): Add + _GLIBCXX17_CONSTEXPR on compare, length and find and use + __constant_string_p, __constant_char_array_p and + __builtin_constant_p to defer to __gnu_cxx::char_traits at compile + time. + + * testsuite/21_strings/char_traits/requirements/ + constexpr_functions_c++17.cc: Uncomment + __cpp_lib_constexpr_char_traits tests. Uncomment + test_compare, test_length, test_find, + test_compare, test_length and test_find + static_assert tests. + +2017-09-04 Jonathan Wakely + + Backport from mainline + 2017-08-31 Jonathan Wakely + + PR c++/82039 + * include/ext/new_allocator.h (__gnu_cxx::new_allocator::allocate): + Adjust null pointer constant to avoid warning. + + Backport from mainline + 2017-08-21 Jonathan Wakely + + PR libstdc++/81912 + * include/bits/stl_iterator_base_types.h (__iterator_category): Add + constexpr for C++11 and later. + * testsuite/24_iterators/container_access.cc: Add target selector. + * testsuite/24_iterators/range_access.cc: Fix clause number in + comment. + * testsuite/24_iterators/range_access_cpp14.cc: Likewise. + * testsuite/24_iterators/range_access_cpp17.cc: New. + + Backport from mainline + 2017-08-09 Jonathan Wakely + + * include/std/type_traits (_GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP): + Replace with _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP and use + __is_identifier to set it. + + Backport from mainline + 2017-08-09 Katsuhiko Nishimra + + * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Use + __is_identifier instead of __has_builtin. + + Backport from mainline + 2017-08-18 Jonathan Wakely + + PR libstdc++/81891 + * include/bits/hashtable.h (_Hashtable(_InputIterator, _InputIterator, + size_type, const _H1&, const _H2&, const _Hash&, const _Equal&, + const _ExtractKey&, const allocator_type&)): Let destructor do clean + up if an exception is thrown. + * testsuite/23_containers/unordered_map/cons/81891.cc: New. + + Backport from mainline + 2017-07-31 Marek Polacek + + PR libstdc++/81599 + * include/bits/stl_stack.h: Fix typo. + + Backport from mainline + 2017-07-10 Jonathan Wakely + + PR libstdc++/81338 + * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string): + Declare basic_stringbuf to be a friend. + * include/bits/sstream.tcc (basic_stringbuf::overflow) + [_GLIBCXX_USE_CXX11_ABI]: Use unused capacity before reallocating. + * include/std/sstream (basic_stringbuf::__xfer_bufptrs): Update string + length to buffer length. + * testsuite/27_io/basic_stringstream/assign/81338.cc: New. + +2017-08-20 John David Anglin + + PR testsuite/81056 + * testsuite/17_intro/names.cc: Undef 'd' and 'r' on __hpux__. + +2017-08-14 Jonathan Wakely + + Backport from mainline + 2017-08-09 Jonathan Wakely + + PR libstdc++/79820 + PR libstdc++/81751 + * config/io/basic_file_stdio.cc (sys_open(FILE*, ios_base::openmode)): + Call fflush on the stream instead of calling sync() while _M_cfile is + null. Restore original value of errno. + * testsuite/ext/stdio_filebuf/char/79820.cc: New. + * testsuite/ext/stdio_filebuf/char/81751.cc: New. + + Backport from mainline + 2017-07-25 Jonathan Wakely + + PR libstdc++/53984 + * include/bits/basic_ios.h (basic_ios::_M_setstate): Adjust comment. + * include/bits/istream.tcc (basic_istream::sentry): Handle exceptions + during construction. + * include/std/istream: Adjust comments for formatted input functions + and unformatted input functions. + * testsuite/27_io/basic_fstream/53984.cc: New. + * testsuite/27_io/basic_istream/sentry/char/53984.cc: New. + 2017-08-14 Release Manager * GCC 7.2.0 released. Index: libstdc++-v3/testsuite/25_algorithms/clamp/1.cc =================================================================== --- libstdc++-v3/testsuite/25_algorithms/clamp/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/25_algorithms/clamp/1.cc (.../branches/gcc-7-branch) @@ -30,12 +30,12 @@ VERIFY( y == 3 ); VERIFY( z == 4 ); - const int xc = std::clamp(1, 2, 4, std::greater()); - const int yc = std::clamp(3, 2, 4, std::greater()); - const int zc = std::clamp(5, 2, 4, std::greater()); - VERIFY( xc == 4 ); - VERIFY( yc == 2 ); - VERIFY( zc == 2 ); + const int xc = std::clamp(1, 4, 2, std::greater()); + const int yc = std::clamp(3, 4, 2, std::greater()); + const int zc = std::clamp(5, 4, 2, std::greater()); + VERIFY( xc == 2 ); + VERIFY( yc == 3 ); + VERIFY( zc == 4 ); } int Index: libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc =================================================================== --- libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc (.../branches/gcc-7-branch) @@ -27,5 +27,5 @@ # error "Feature-test macro for clamp has wrong value" #endif -static_assert(std::clamp(2, 0, 1) == 1, ""); -static_assert(std::clamp(2, 0, 1, std::greater()) == 0, ""); +static_assert(std::clamp(2, 0, 1) == 1); +static_assert(std::clamp(2, 1, 0, std::greater()) == 1); Index: libstdc++-v3/testsuite/24_iterators/container_access.cc =================================================================== --- libstdc++-v3/testsuite/24_iterators/container_access.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/24_iterators/container_access.cc (.../branches/gcc-7-branch) @@ -1,4 +1,4 @@ -// { dg-do run } +// { dg-do run { target c++1z } } // { dg-options "-std=gnu++17" } // Copyright (C) 2015-2017 Free Software Foundation, Inc. @@ -62,7 +62,6 @@ static_assert(s == 3); constexpr auto e = std::empty(il3); static_assert(!e); - } void Index: libstdc++-v3/testsuite/24_iterators/range_access.cc =================================================================== --- libstdc++-v3/testsuite/24_iterators/range_access.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/24_iterators/range_access.cc (.../branches/gcc-7-branch) @@ -17,7 +17,7 @@ // with this library; see the file COPYING3. If not see // . -// 24.6.5, range access [iterator.range] +// C++ 2011 24.6.5, range access [iterator.range] #include Index: libstdc++-v3/testsuite/24_iterators/range_access_cpp14.cc =================================================================== --- libstdc++-v3/testsuite/24_iterators/range_access_cpp14.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/24_iterators/range_access_cpp14.cc (.../branches/gcc-7-branch) @@ -17,7 +17,7 @@ // with this library; see the file COPYING3. If not see // . -// 24.6.5, range access [iterator.range] +// C++ 2014 24.7, range access [iterator.range] #include #include Index: libstdc++-v3/testsuite/24_iterators/range_access_cpp17.cc =================================================================== --- libstdc++-v3/testsuite/24_iterators/range_access_cpp17.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/24_iterators/range_access_cpp17.cc (.../branches/gcc-7-branch) @@ -0,0 +1,57 @@ +// { dg-options "-std=gnu++17" } +// { dg-do compile { target c++1z } } + +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// C++ 2017 27.7, range access [iterator.range] + +#include + +void +test01() +{ + using std::reverse_iterator; + static int i[1]; + static_assert(std::cbegin(i) == i); + static_assert(std::cend(i) == i+1); + static_assert(std::rbegin(i) == reverse_iterator(i+1)); + static_assert(std::rend(i) == reverse_iterator(i)); + static_assert(std::crbegin(i) == reverse_iterator(i+1)); + static_assert(std::crend(i) == reverse_iterator(i)); +} + +void +test02() +{ + static int i[] = { 1, 2 }; + static_assert(std::distance(std::begin(i), std::end(i)) == 2); + static_assert(std::distance(std::cbegin(i), std::cend(i)) == 2); +} + +void +test03() +{ + using std::reverse_iterator; + static constexpr std::initializer_list il{1}; + static_assert(std::cbegin(il) == il.begin()); + static_assert(std::cend(il) == il.end()); + static_assert(std::rbegin(il) == reverse_iterator(il.end())); + static_assert(std::rend(il) == reverse_iterator(il.begin())); + static_assert(std::crbegin(il) == reverse_iterator(il.end())); + static_assert(std::crend(il) == reverse_iterator(il.begin())); +} Index: libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc =================================================================== --- libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc (.../branches/gcc-7-branch) @@ -0,0 +1,53 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-require-fileio "" } + +#include +#include +#include +#include + +void +test01() +{ + FILE* out = std::fopen("81751.txt", "w"); + std::fwrite("Some words.", 1, 10, out); + + FILE* in1 = std::fopen("81751.txt", "r"); + __gnu_cxx::stdio_filebuf buf1(in1, std::ios::in, BUFSIZ); + int c = buf1.sgetc(); + VERIFY( c == std::char_traits::eof() ); // PR libstdc++/81751 + + std::fflush(out); + FILE* in2 = std::fopen("81751.txt", "r"); + __gnu_cxx::stdio_filebuf buf2(in2, std::ios::in, BUFSIZ); + c = buf2.sgetc(); + VERIFY( c == 'S' ); + + buf1.close(); + buf2.close(); + std::fclose(in1); + std::fclose(in2); + std::fclose(out); +} + +int +main() +{ + test01(); +} Index: libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc =================================================================== --- libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc (.../branches/gcc-7-branch) @@ -0,0 +1,39 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-require-fileio "" } + +#include +#include +#include +#include + +void +test01() +{ + FILE* f = std::fopen("79820.txt", "w"); + std::fclose(f); + errno = 127; + __gnu_cxx::stdio_filebuf b(f, std::ios::out, BUFSIZ); + VERIFY(errno == 127); // PR libstdc++/79820 +} + +int +main() +{ + test01(); +} Index: libstdc++-v3/testsuite/23_containers/unordered_map/cons/81891.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/unordered_map/cons/81891.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/23_containers/unordered_map/cons/81891.cc (.../branches/gcc-7-branch) @@ -0,0 +1,68 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-do run { target c++11 } } + +#include +#include +#include + +struct fails_on_copy { + fails_on_copy() = default; + fails_on_copy(const fails_on_copy&) { throw 0; }; +}; + +using value_type = std::pair; + +void +test01() +{ + value_type p; + try + { + std::unordered_map umap(&p, &p + 1); + } + catch(...) + { } +} + +void +test02() +{ + using Alloc = __gnu_test::tracker_allocator; + using std::hash; + using std::equal_to; + + value_type p; + try + { + std::unordered_map, equal_to, Alloc> + umap(&p, &p + 1); + } + catch(...) + { } + + using counter = __gnu_test::tracker_allocator_counter; + VERIFY(counter::get_allocation_count() == counter::get_deallocation_count()); +} + +int +main() +{ + test01(); + test02(); +} Index: libstdc++-v3/testsuite/27_io/basic_stringstream/assign/81338.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_stringstream/assign/81338.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/27_io/basic_stringstream/assign/81338.cc (.../branches/gcc-7-branch) @@ -0,0 +1,40 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-do run { target c++11 } } + +#include +#include + +void +test01() +{ + std::stringstream ss; + for (int i = 0; i < 100; ++i) + { + ss << 'a'; + VERIFY( static_cast(ss) ); + VERIFY( ss.str() == "a" ); + ss = std::stringstream(); + } +} + +int +main() +{ + test01(); +} Index: libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc =================================================================== --- libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc (.../branches/gcc-7-branch) @@ -26,11 +26,8 @@ // Skip test at -m64 on Darwin because RLIMITS are not being honored. // Radar 6467883: 10.4/10.5 setrlimits are not honored by memory allocators // Radar 6467884: 10.X systems are not robust when paging space is exceeded -// { dg-skip-if "" { *-*-darwin* && lp64 } { "*" } { "" } } +// { dg-skip-if "" { *-*-darwin* && lp64 } { "*" } { "" } } -// The library throws the new definition of std::ios::failure -// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" } - #include #include #include @@ -52,12 +49,19 @@ // pword ios.pword(1) = v; VERIFY( ios.pword(1) == v ); - - try + + // The library throws the new definition of std::ios::failure +#if _GLIBCXX_USE_CXX11_ABI + typedef std::ios_base::failure exception_type; +#else + typedef std::exception exception_type; +#endif + + try { v = ios.pword(max); } - catch(std::ios_base::failure& obj) + catch(exception_type&) { // Ok. VERIFY( ios.bad() ); @@ -69,7 +73,7 @@ VERIFY( v == 0 ); VERIFY( ios.pword(1) == v ); - + // max is different code path from max-1 v = &test; try @@ -76,7 +80,7 @@ { v = ios.pword(std::numeric_limits::max()); } - catch(std::ios_base::failure& obj) + catch(exception_type&) { // Ok. VERIFY( ios.bad() ); @@ -90,12 +94,12 @@ // iword ios.iword(1) = 1; VERIFY( ios.iword(1) == 1 ); - - try + + try { l = ios.iword(max); } - catch(std::ios_base::failure& obj) + catch(exception_type&) { // Ok. VERIFY( ios.bad() ); @@ -110,11 +114,11 @@ // max is different code path from max-1 l = 1; - try + try { l = ios.iword(std::numeric_limits::max()); } - catch(std::ios_base::failure& obj) + catch(exception_type&) { // Ok. VERIFY( ios.bad() ); Index: libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc (.../branches/gcc-7-branch) @@ -17,9 +17,6 @@ // with this library; see the file COPYING3. If not see // . -// The library throws the new definition of std::ios::failure -// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" } - // 27.4.4.2 basic_ios member functions // NB: Don't include any other headers in this file. @@ -36,13 +33,13 @@ // basic_ios& copyfmt(const basic_ios& rhs) { std::ios ios_01(0); - std::ios ios_02(0); + std::ios ios_02(0); ios_01.exceptions(std::ios_base::eofbit); ios_02.exceptions(std::ios_base::eofbit); - + try { - ios_01.copyfmt(ios_02); - } + ios_01.copyfmt(ios_02); + } catch(...) { VERIFY( false ); } @@ -49,8 +46,15 @@ } { + // The library throws the new definition of std::ios::failure +#if _GLIBCXX_USE_CXX11_ABI + typedef std::ios_base::failure exception_type; +#else + typedef std::exception exception_type; +#endif + std::ios ios_01(0); - std::ios ios_02(0); + std::ios ios_02(0); ios_01.clear(std::ios_base::eofbit); ios_02.exceptions(std::ios_base::eofbit); @@ -57,8 +61,8 @@ try { ios_01.copyfmt(ios_02); VERIFY( false ); - } - catch(std::ios_base::failure& fail) { + } + catch(exception_type&) { VERIFY( true ); } catch(...) { @@ -67,7 +71,7 @@ } } -int main() +int main() { test02(); return 0; Index: libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc (.../branches/gcc-7-branch) @@ -17,9 +17,6 @@ // with this library; see the file COPYING3. If not see // . -// The library throws the new definition of std::ios::failure -// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" } - // 27.4.4.2 basic_ios member functions // NB: Don't include any other headers in this file. @@ -44,7 +41,7 @@ std::ios ios_01(0); try { ios_01.exceptions(std::ios_base::eofbit); - } + } catch(...) { VERIFY( false ); } @@ -53,13 +50,20 @@ } { + // The library throws the new definition of std::ios::failure +#if _GLIBCXX_USE_CXX11_ABI + typedef std::ios_base::failure exception_type; +#else + typedef std::exception exception_type; +#endif + std::ios ios_01(0); ios_01.clear(std::ios_base::eofbit); try { ios_01.exceptions(std::ios_base::eofbit); VERIFY( false ); - } - catch(std::ios_base::failure& fail) { + } + catch(exception_type&) { iostate02 = ios_01.exceptions(); VERIFY( static_cast(iostate02 & std::ios_base::eofbit) ); } @@ -69,7 +73,7 @@ } } -int main() +int main() { test01(); return 0; Index: libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc (.../branches/gcc-7-branch) @@ -0,0 +1,64 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-require-fileio "" } + +// PR libstdc++/53984 + +#include +#include + +void +test01() +{ + std::ifstream in("."); + if (in) + { + char c; + if (in.get(c)) + { + // Reading a directory doesn't produce an error on this target + // so the formatted input functions below wouldn't fail anyway + // (see PR libstdc++/81808). + return; + } + int x; + in.clear(); + // Formatted input function should set badbit, but not throw: + in >> x; + VERIFY( in.bad() ); + + in.clear(); + in.exceptions(std::ios::badbit); + try + { + // Formatted input function should set badbit, and throw: + in >> x; + VERIFY( false ); + } + catch (const std::exception&) + { + VERIFY( in.bad() ); + } + } +} + +int +main() +{ + test01(); +} Index: libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc (.../branches/gcc-7-branch) @@ -15,9 +15,6 @@ // with this library; see the file COPYING3. If not see // . -// The library throws the new definition of std::ios::failure -// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" } - // 27.6.1.1.2 class basic_istream::sentry #include @@ -28,16 +25,23 @@ using namespace std; wistringstream stream; stream.exceptions(ios_base::eofbit); - + + // The library throws the new definition of std::ios::failure +#if _GLIBCXX_USE_CXX11_ABI + typedef std::ios_base::failure exception_type; +#else + typedef std::exception exception_type; +#endif + try { wistream::sentry sentry(stream, false); VERIFY( false ); } - catch (ios_base::failure&) + catch (exception_type&) { VERIFY( stream.rdstate() == (ios_base::eofbit | ios_base::failbit) ); } - + return 0; } Index: libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/53984.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/53984.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/53984.cc (.../branches/gcc-7-branch) @@ -0,0 +1,41 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +#include +#include +#include + +struct SB : std::streambuf +{ + virtual int_type underflow() { throw 1; } +}; + +void +test01() +{ + SB sb; + std::istream is(&sb); + int i; + is >> i; + VERIFY( is.bad() ); +} + +int +main() +{ + test01(); +} Index: libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc (.../branches/gcc-7-branch) @@ -15,12 +15,8 @@ // with this library; see the file COPYING3. If not see // . - // 27.6.1.1.2 class basic_istream::sentry -// The library throws the new definition of std::ios::failure -// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" } - #include #include @@ -29,16 +25,23 @@ using namespace std; istringstream stream; stream.exceptions(ios_base::eofbit); - + + // The library throws the new definition of std::ios::failure +#if _GLIBCXX_USE_CXX11_ABI + typedef std::ios_base::failure exception_type; +#else + typedef std::exception exception_type; +#endif + try { istream::sentry sentry(stream, false); VERIFY( false ); } - catch (ios_base::failure&) + catch (exception_type&) { VERIFY( stream.rdstate() == (ios_base::eofbit | ios_base::failbit) ); } - + return 0; } Index: libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc (.../branches/gcc-7-branch) @@ -15,9 +15,6 @@ // with this library; see the file COPYING3. If not see // . -// The library throws the new definition of std::ios::failure -// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" } - #include #include #include @@ -38,12 +35,19 @@ wistringstream stream; stream.exceptions(ios_base::failbit); + // The library throws the new definition of std::ios::failure +#if _GLIBCXX_USE_CXX11_ABI + typedef std::ios_base::failure exception_type; +#else + typedef std::exception exception_type; +#endif + try { stream >> static_cast(0); VERIFY( false ); } - catch (ios_base::failure&) + catch (exception_type&) { } Index: libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc (.../branches/gcc-7-branch) @@ -15,9 +15,6 @@ // with this library; see the file COPYING3. If not see // . -// The library throws the new definition of std::ios::failure -// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" } - #include #include #include @@ -38,12 +35,19 @@ istringstream stream; stream.exceptions(ios_base::failbit); + // The library throws the new definition of std::ios::failure +#if _GLIBCXX_USE_CXX11_ABI + typedef std::ios_base::failure exception_type; +#else + typedef std::exception exception_type; +#endif + try { stream >> static_cast(0); VERIFY(false); } - catch (ios_base::failure&) + catch (exception_type&) { } Index: libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc (.../branches/gcc-7-branch) @@ -15,9 +15,6 @@ // with this library; see the file COPYING3. If not see // . -// The library throws the new definition of std::ios::failure -// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" } - #include #include @@ -29,7 +26,14 @@ wistringstream stream(L"jaylib - champion sound"); stream.exceptions(ios_base::failbit); - + + // The library throws the new definition of std::ios::failure +#if _GLIBCXX_USE_CXX11_ABI + typedef std::ios_base::failure exception_type; +#else + typedef std::exception exception_type; +#endif + try { T i; @@ -36,13 +40,13 @@ stream >> i; VERIFY( false ); } - catch (const ios_base::failure&) - { + catch (const exception_type&) + { // stream should set failbit and throw ios_base::failure. VERIFY( stream.fail() ); VERIFY( !stream.bad() ); VERIFY( !stream.eof() ); - } + } catch(...) { VERIFY( false ); } } Index: libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc (.../branches/gcc-7-branch) @@ -15,9 +15,6 @@ // with this library; see the file COPYING3. If not see // . -// The library throws the new definition of std::ios::failure -// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" } - #include #include @@ -29,7 +26,14 @@ istringstream stream("jaylib - champion sound"); stream.exceptions(ios_base::failbit); - + + // The library throws the new definition of std::ios::failure +#if _GLIBCXX_USE_CXX11_ABI + typedef std::ios_base::failure exception_type; +#else + typedef std::exception exception_type; +#endif + try { T i; @@ -36,13 +40,13 @@ stream >> i; VERIFY( false ); } - catch (const ios_base::failure&) - { + catch (const exception_type&) + { // stream should set failbit and throw ios_base::failure. VERIFY( stream.fail() ); VERIFY( !stream.bad() ); VERIFY( !stream.eof() ); - } + } catch(...) { VERIFY( false ); } } Index: libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc (.../branches/gcc-7-branch) @@ -15,9 +15,6 @@ // with this library; see the file COPYING3. If not see // . -// The library throws the new definition of std::ios::failure -// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" } - #include #include #include @@ -39,13 +36,20 @@ wostringstream stream; stream.exceptions(ios_base::badbit); - + + // The library throws the new definition of std::ios::failure +#if _GLIBCXX_USE_CXX11_ABI + typedef std::ios_base::failure exception_type; +#else + typedef std::exception exception_type; +#endif + try { stream << static_cast(0); VERIFY( false ); } - catch (ios_base::failure&) + catch (exception_type&) { } Index: libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc =================================================================== --- libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc (.../branches/gcc-7-branch) @@ -15,9 +15,6 @@ // with this library; see the file COPYING3. If not see // . -// The library throws the new definition of std::ios::failure -// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" } - #include #include #include @@ -39,13 +36,20 @@ ostringstream stream; stream.exceptions(ios_base::badbit); - + + // The library throws the new definition of std::ios::failure +#if _GLIBCXX_USE_CXX11_ABI + typedef std::ios_base::failure exception_type; +#else + typedef std::exception exception_type; +#endif + try { stream << static_cast(0); VERIFY( false ); } - catch (ios_base::failure&) + catch (exception_type&) { } Index: libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc (.../branches/gcc-7-branch) @@ -33,10 +33,29 @@ VERIFY( str0 == wstring_view{L"olympus mo"} ); } +constexpr bool +test02() +{ + using std::wstring_view; + + wstring_view str0{L"olympus mons"}; + wstring_view::pointer p = str0.data(); + str0.remove_suffix(2); + if ( str0.data() != p) + return false; + if ( str0.length() != 10 ) + return false; + if ( str0 != wstring_view{L"olympus mo"} ) + return false; + + return true; +} + int main() { test01(); + static_assert( test02() ); return 0; } Index: libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc (.../branches/gcc-7-branch) @@ -33,10 +33,29 @@ VERIFY( str0 == string_view{"olympus mo"} ); } +constexpr bool +test02() +{ + using std::string_view; + + string_view str0{"olympus mons"}; + string_view::pointer p = str0.data(); + str0.remove_suffix(2); + if ( str0.data() != p) + return false; + if ( str0.length() != 10 ) + return false; + if ( str0 != string_view{"olympus mo"} ) + return false; + + return true; +} + int main() { test01(); + static_assert( test02() ); return 0; } Index: libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc (.../branches/gcc-7-branch) @@ -33,10 +33,29 @@ VERIFY( str0 == wstring_view{L"pus mons"} ); } +constexpr bool +test02() +{ + using std::wstring_view; + + wstring_view str0{L"olympus mons"}; + wstring_view::pointer p = str0.data(); + str0.remove_prefix(4); + if ( str0.data() != p + 4) + return false; + if ( str0.length() != 8 ) + return false; + if ( str0 != wstring_view{L"pus mons"} ) + return false; + + return true; +} + int main() { test01(); + static_assert( test02() ); return 0; } Index: libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc (.../branches/gcc-7-branch) @@ -33,10 +33,29 @@ VERIFY( str0 == string_view{"pus mons"} ); } +constexpr bool +test02() +{ + using std::string_view; + + string_view str0{"olympus mons"}; + string_view::pointer p = str0.data(); + str0.remove_prefix(4); + if ( str0.data() != p + 4) + return false; + if ( str0.length() != 8 ) + return false; + if ( str0 != string_view{"pus mons"} ) + return false; + + return true; +} + int main() { test01(); + static_assert( test02() ); return 0; } Index: libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc (.../branches/gcc-7-branch) @@ -0,0 +1,35 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-options "-std=gnu++17" } +// { dg-do compile { target c++1z } } + +#include + +constexpr bool +test01() +{ + using std::wstring_view; + + wstring_view s1{L"last"}; + wstring_view s2{L"first"}; + + s1.swap(s2); + return s1 == L"first" && s2 == L"last"; +} + +static_assert( test01() ); Index: libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc (.../branches/gcc-7-branch) @@ -0,0 +1,35 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-options "-std=gnu++17" } +// { dg-do compile { target c++1z } } + +#include + +constexpr bool +test01() +{ + using std::string_view; + + string_view s1{"last"}; + string_view s2{"first"}; + + s1.swap(s2); + return s1 == "first" && s2 == "last"; +} + +static_assert( test01() ); Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc (.../branches/gcc-7-branch) @@ -61,10 +61,10 @@ csz01 = str01.find(str04, 5); VERIFY( csz01 == 5 ); csz01 = str01.find(str04, str01.size()); - VERIFY( csz01 == str01.size() ); + VERIFY( csz01 == str01.size() ); csz01 = str01.find(str04, str01.size()+1); - VERIFY( csz01 == npos ); - + VERIFY( csz01 == npos ); + // size_type find(const wchar_t* s, size_type pos, size_type n) const; csz01 = str01.find(str_lit01, 0, 3); VERIFY( csz01 == 0 ); @@ -85,10 +85,79 @@ VERIFY( csz01 == npos ); } +constexpr bool +test02() +{ + typedef std::wstring_view::size_type csize_type; + typedef std::wstring_view::const_reference cref; + typedef std::wstring_view::reference ref; + csize_type npos = std::wstring_view::npos; + csize_type csz01 = 0, csz02 = 0; + + const wchar_t str_lit01[] = L"mave"; + const std::wstring_view str01(L"mavericks, santa cruz"); + std::wstring_view str02(str_lit01); + std::wstring_view str03(L"s, s"); + std::wstring_view str04; + +#undef VERIFY +#define VERIFY(x) if(!(x)) return false + + // size_type find(const wstring_view&, size_type pos = 0) const; + csz01 = str01.find(str01); + VERIFY( csz01 == 0 ); + csz01 = str01.find(str01, 4); + VERIFY( csz01 == npos ); + csz01 = str01.find(str02, 0); + VERIFY( csz01 == 0 ); + csz01 = str01.find(str02, 3); + VERIFY( csz01 == npos ); + csz01 = str01.find(str03, 0); + VERIFY( csz01 == 8 ); + csz01 = str01.find(str03, 3); + VERIFY( csz01 == 8 ); + csz01 = str01.find(str03, 12); + VERIFY( csz01 == npos ); + + // An empty string_view consists of no characters + // therefore it should be found at every point in a string_view, + // except beyond the end + csz01 = str01.find(str04, 0); + VERIFY( csz01 == 0 ); + csz01 = str01.find(str04, 5); + VERIFY( csz01 == 5 ); + csz01 = str01.find(str04, str01.size()); + VERIFY( csz01 == str01.size() ); + csz01 = str01.find(str04, str01.size()+1); + VERIFY( csz01 == npos ); + + // size_type find(const wchar_t* s, size_type pos, size_type n) const; + csz01 = str01.find(str_lit01, 0, 3); + VERIFY( csz01 == 0 ); + csz01 = str01.find(str_lit01, 3, 0); + VERIFY( csz01 == 3 ); + + // size_type find(const wchar_t* s, size_type pos = 0) const; + csz01 = str01.find(str_lit01); + VERIFY( csz01 == 0 ); + csz01 = str01.find(str_lit01, 3); + VERIFY( csz01 == npos ); + + // size_type find(wchar_t c, size_type pos = 0) const; + csz01 = str01.find(L'z'); + csz02 = str01.size() - 1; + VERIFY( csz01 == csz02 ); + csz01 = str01.find(L'/'); + VERIFY( csz01 == npos ); + + return true; +} + int main() -{ +{ test01(); + static_assert( test02() ); return 0; } Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc (.../branches/gcc-7-branch) @@ -59,13 +59,13 @@ // An empty string_view consists of no characters // therefore it should be found at every point in a string_view, // except beyond the end - // However, str1.find_first_of(str2,pos) finds the first character in + // However, str1.find_first_of(str2,pos) finds the first character in // str1 (starting at pos) that exists in str2, which is none for empty str2 csz01 = str01.find_first_of(str04, 0); VERIFY( csz01 == npos ); csz01 = str01.find_first_of(str04, 5); VERIFY( csz01 == npos ); - + // size_type find_first_of(const wchar_t* s, size_type pos, size_type n) const; csz01 = str01.find_first_of(str_lit01, 0, 3); VERIFY( csz01 == 0 ); @@ -84,10 +84,78 @@ VERIFY( csz01 == csz02 ); } +constexpr bool +test04() +{ + typedef std::wstring_view::size_type csize_type; + csize_type npos = std::wstring_view::npos; + csize_type csz01 = 0, csz02 = 0; + + const wchar_t str_lit01[] = L"mave"; + const std::wstring_view str01(L"mavericks, santa cruz"); + std::wstring_view str02(str_lit01); + std::wstring_view str03(L"s, s"); + std::wstring_view str04; + +#undef VERIFY +#define VERIFY(x) if(!(x)) return false + + // size_type find_first_of(const wstring_view&, size_type pos = 0) const; + std::wstring_view str05(L"xena rulez"); + csz01 = str01.find_first_of(str01); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_of(str01, 4); + VERIFY( csz01 == 4 ); + csz01 = str01.find_first_of(str02, 0); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_of(str02, 3); + VERIFY( csz01 == 3 ); + csz01 = str01.find_first_of(str03, 0); + VERIFY( csz01 == 8 ); + csz01 = str01.find_first_of(str03, 3); + VERIFY( csz01 == 8 ); + csz01 = str01.find_first_of(str03, 12); + VERIFY( csz01 == 16 ); + csz01 = str01.find_first_of(str05, 0); + VERIFY( csz01 == 1 ); + csz01 = str01.find_first_of(str05, 4); + VERIFY( csz01 == 4 ); + + // An empty string_view consists of no characters + // therefore it should be found at every point in a string_view, + // except beyond the end + // However, str1.find_first_of(str2,pos) finds the first character in + // str1 (starting at pos) that exists in str2, which is none for empty str2 + csz01 = str01.find_first_of(str04, 0); + VERIFY( csz01 == npos ); + csz01 = str01.find_first_of(str04, 5); + VERIFY( csz01 == npos ); + + // size_type find_first_of(const wchar_t* s, size_type pos, size_type n) const; + csz01 = str01.find_first_of(str_lit01, 0, 3); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_of(str_lit01, 3, 0); + VERIFY( csz01 == npos ); + + // size_type find_first_of(const wchar_t* s, size_type pos = 0) const; + csz01 = str01.find_first_of(str_lit01); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_of(str_lit01, 3); + VERIFY( csz01 == 3 ); + + // size_type find_first_of(wchar_t c, size_type pos = 0) const; + csz01 = str01.find_first_of(L'z'); + csz02 = str01.size() - 1; + VERIFY( csz01 == csz02 ); + + return true; +} + int main() -{ +{ test02(); + static_assert( test04() ); return 0; } Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc (.../branches/gcc-7-branch) @@ -84,10 +84,78 @@ VERIFY( csz01 == npos ); } +constexpr bool +test04() +{ + typedef std::wstring_view::size_type csize_type; + csize_type npos = std::wstring_view::npos; + csize_type csz01 = 0; + + const std::wstring_view str01(L"Bob Rock, per me"); + const wchar_t str_lit01[] = L"Bob Rock"; + std::wstring_view str02(L"ovvero Trivi"); + std::wstring_view str03(str_lit01); + std::wstring_view str04; + +#undef VERIFY +#define VERIFY(x) if(!(x)) return false + + // size_type find_first_not_of(const string_view&, size_type pos = 0) const; + csz01 = str01.find_first_not_of(str01); + VERIFY( csz01 == npos ); + csz01 = str01.find_first_not_of(str02, 0); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_not_of(str02, 10); + VERIFY( csz01 == 10 ); + csz01 = str01.find_first_not_of(str02, 12); + VERIFY( csz01 == 14 ); + csz01 = str01.find_first_not_of(str03, 0); + VERIFY( csz01 == 8 ); + csz01 = str01.find_first_not_of(str03, 15); + VERIFY( csz01 == 15 ); + csz01 = str01.find_first_not_of(str03, 16); + VERIFY( csz01 == npos ); + csz01 = str01.find_first_not_of(str04, 0); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_not_of(str04, 12); + VERIFY( csz01 == 12 ); + csz01 = str03.find_first_not_of(str01, 0); + VERIFY( csz01 == npos ); + csz01 = str04.find_first_not_of(str02, 0); + VERIFY( csz01 == npos ); + + // size_type find_first_not_of(const char* s, size_type pos, size_type n) const; + csz01 = str01.find_first_not_of(str_lit01, 0, 0); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_not_of(str_lit01, 0, 8); + VERIFY( csz01 == 8 ); + csz01 = str01.find_first_not_of(str_lit01, 10, 0); + VERIFY( csz01 == 10 ); + + // size_type find_first_not_of(const char* s, size_type pos = 0) const; + csz01 = str01.find_first_not_of(str_lit01); + VERIFY( csz01 == 8 ); + csz01 = str02.find_first_not_of(str_lit01, 2); + VERIFY( csz01 == 2 ); + + // size_type find_first_not_of(char c, size_type pos = 0) const; + csz01 = str01.find_first_not_of(L'B'); + VERIFY( csz01 == 1 ); + csz01 = str01.find_first_not_of(L'o', 1); + VERIFY( csz01 == 2 ); + csz01 = str02.find_first_not_of(L'z'); + VERIFY( csz01 == 0 ); + csz01 = str04.find_first_not_of(L'S'); + VERIFY( csz01 == npos ); + + return true; +} + int main() -{ +{ test03(); + static_assert( test04() ); return 0; } Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc (.../branches/gcc-7-branch) @@ -61,10 +61,10 @@ csz01 = str01.find(str04, 5); VERIFY( csz01 == 5 ); csz01 = str01.find(str04, str01.size()); - VERIFY( csz01 == str01.size() ); + VERIFY( csz01 == str01.size() ); csz01 = str01.find(str04, str01.size()+1); - VERIFY( csz01 == npos ); - + VERIFY( csz01 == npos ); + // size_type find(const char* s, size_type pos, size_type n) const; csz01 = str01.find(str_lit01, 0, 3); VERIFY( csz01 == 0 ); @@ -85,10 +85,80 @@ VERIFY( csz01 == npos ); } +constexpr bool +test02() +{ + typedef std::string_view::size_type csize_type; + typedef std::string_view::const_reference cref; + typedef std::string_view::reference ref; + csize_type npos = std::string_view::npos; + csize_type csz01 = 0, csz02 = 0; + + const char str_lit01[] = "mave"; + const std::string_view str01("mavericks, santa cruz"); + std::string_view str02(str_lit01); + std::string_view str03("s, s"); + std::string_view str04; + +#undef VERIFY +#define VERIFY(x) if(!(x)) return false + + // size_type find(const string_view&, size_type pos = 0) const; + csz01 = str01.find(str01); + VERIFY( csz01 == 0 ); + csz01 = str01.find(str01, 4); + VERIFY( csz01 == npos ); + csz01 = str01.find(str02, 0); + VERIFY( csz01 == 0 ); + csz01 = str01.find(str02, 3); + VERIFY( csz01 == npos ); + csz01 = str01.find(str03, 0); + VERIFY( csz01 == 8 ); + csz01 = str01.find(str03, 3); + VERIFY( csz01 == 8 ); + csz01 = str01.find(str03, 12); + VERIFY( csz01 == npos ); + + // An empty string_view consists of no characters + // therefore it should be found at every point in a string_view, + // except beyond the end + csz01 = str01.find(str04, 0); + VERIFY( csz01 == 0 ); + csz01 = str01.find(str04, 5); + VERIFY( csz01 == 5 ); + csz01 = str01.find(str04, str01.size()); + VERIFY( csz01 == str01.size() ); + csz01 = str01.find(str04, str01.size()+1); + VERIFY( csz01 == npos ); + + // size_type find(const char* s, size_type pos, size_type n) const; + csz01 = str01.find(str_lit01, 0, 3); + VERIFY( csz01 == 0 ); + csz01 = str01.find(str_lit01, 3, 0); + VERIFY( csz01 == 3 ); + + // size_type find(const char* s, size_type pos = 0) const; + csz01 = str01.find(str_lit01); + VERIFY( csz01 == 0 ); + csz01 = str01.find(str_lit01, 3); + VERIFY( csz01 == npos ); + + // size_type find(char c, size_type pos = 0) const; + csz01 = str01.find('z'); + csz02 = str01.size() - 1; + VERIFY( csz01 == csz02 ); + csz01 = str01.find('/'); + VERIFY( csz01 == npos ); + + return true; +} + + int main() -{ +{ test01(); + static_assert( test02() ); return 0; } Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc (.../branches/gcc-7-branch) @@ -59,13 +59,13 @@ // An empty string_view consists of no characters // therefore it should be found at every point in a string_view, // except beyond the end - // However, str1.find_first_of(str2,pos) finds the first character in + // However, str1.find_first_of(str2,pos) finds the first character in // str1 (starting at pos) that exists in str2, which is none for empty str2 csz01 = str01.find_first_of(str04, 0); VERIFY( csz01 == npos ); csz01 = str01.find_first_of(str04, 5); VERIFY( csz01 == npos ); - + // size_type find_first_of(const char* s, size_type pos, size_type n) const; csz01 = str01.find_first_of(str_lit01, 0, 3); VERIFY( csz01 == 0 ); @@ -84,10 +84,78 @@ VERIFY( csz01 == csz02 ); } +constexpr bool +test03() +{ + typedef std::string_view::size_type csize_type; + csize_type npos = std::string_view::npos; + csize_type csz01 = 0, csz02 = 0; + + const char str_lit01[] = "mave"; + const std::string_view str01("mavericks, santa cruz"); + std::string_view str02(str_lit01); + std::string_view str03("s, s"); + std::string_view str04; + +#undef VERIFY +#define VERIFY(x) if(!(x)) return false + + // size_type find_first_of(const string_view&, size_type pos = 0) const; + std::string_view str05("xena rulez"); + csz01 = str01.find_first_of(str01); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_of(str01, 4); + VERIFY( csz01 == 4 ); + csz01 = str01.find_first_of(str02, 0); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_of(str02, 3); + VERIFY( csz01 == 3 ); + csz01 = str01.find_first_of(str03, 0); + VERIFY( csz01 == 8 ); + csz01 = str01.find_first_of(str03, 3); + VERIFY( csz01 == 8 ); + csz01 = str01.find_first_of(str03, 12); + VERIFY( csz01 == 16 ); + csz01 = str01.find_first_of(str05, 0); + VERIFY( csz01 == 1 ); + csz01 = str01.find_first_of(str05, 4); + VERIFY( csz01 == 4 ); + + // An empty string_view consists of no characters + // therefore it should be found at every point in a string_view, + // except beyond the end + // However, str1.find_first_of(str2,pos) finds the first character in + // str1 (starting at pos) that exists in str2, which is none for empty str2 + csz01 = str01.find_first_of(str04, 0); + VERIFY( csz01 == npos ); + csz01 = str01.find_first_of(str04, 5); + VERIFY( csz01 == npos ); + + // size_type find_first_of(const char* s, size_type pos, size_type n) const; + csz01 = str01.find_first_of(str_lit01, 0, 3); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_of(str_lit01, 3, 0); + VERIFY( csz01 == npos ); + + // size_type find_first_of(const char* s, size_type pos = 0) const; + csz01 = str01.find_first_of(str_lit01); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_of(str_lit01, 3); + VERIFY( csz01 == 3 ); + + // size_type find_first_of(char c, size_type pos = 0) const; + csz01 = str01.find_first_of('z'); + csz02 = str01.size() - 1; + VERIFY( csz01 == csz02 ); + + return true; +} + int main() -{ +{ test02(); + static_assert( test03() ); return 0; } Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc (.../branches/gcc-7-branch) @@ -84,10 +84,78 @@ VERIFY( csz01 == npos ); } +constexpr bool +test04() +{ + typedef std::string_view::size_type csize_type; + csize_type npos = std::string_view::npos; + csize_type csz01 = 0; + + const std::string_view str01("Bob Rock, per me"); + const char str_lit01[] = "Bob Rock"; + std::string_view str02("ovvero Trivi"); + std::string_view str03(str_lit01); + std::string_view str04; + +#undef VERIFY +#define VERIFY(x) if(!(x)) return false + + // size_type find_first_not_of(const string_view&, size_type pos = 0) const; + csz01 = str01.find_first_not_of(str01); + VERIFY( csz01 == npos ); + csz01 = str01.find_first_not_of(str02, 0); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_not_of(str02, 10); + VERIFY( csz01 == 10 ); + csz01 = str01.find_first_not_of(str02, 12); + VERIFY( csz01 == 14 ); + csz01 = str01.find_first_not_of(str03, 0); + VERIFY( csz01 == 8 ); + csz01 = str01.find_first_not_of(str03, 15); + VERIFY( csz01 == 15 ); + csz01 = str01.find_first_not_of(str03, 16); + VERIFY( csz01 == npos ); + csz01 = str01.find_first_not_of(str04, 0); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_not_of(str04, 12); + VERIFY( csz01 == 12 ); + csz01 = str03.find_first_not_of(str01, 0); + VERIFY( csz01 == npos ); + csz01 = str04.find_first_not_of(str02, 0); + VERIFY( csz01 == npos ); + + // size_type find_first_not_of(const char* s, size_type pos, size_type n) const; + csz01 = str01.find_first_not_of(str_lit01, 0, 0); + VERIFY( csz01 == 0 ); + csz01 = str01.find_first_not_of(str_lit01, 0, 8); + VERIFY( csz01 == 8 ); + csz01 = str01.find_first_not_of(str_lit01, 10, 0); + VERIFY( csz01 == 10 ); + + // size_type find_first_not_of(const char* s, size_type pos = 0) const; + csz01 = str01.find_first_not_of(str_lit01); + VERIFY( csz01 == 8 ); + csz01 = str02.find_first_not_of(str_lit01, 2); + VERIFY( csz01 == 2 ); + + // size_type find_first_not_of(char c, size_type pos = 0) const; + csz01 = str01.find_first_not_of('B'); + VERIFY( csz01 == 1 ); + csz01 = str01.find_first_not_of('o', 1); + VERIFY( csz01 == 2 ); + csz01 = str02.find_first_not_of('z'); + VERIFY( csz01 == 0 ); + csz01 = str04.find_first_not_of('S'); + VERIFY( csz01 == npos ); + + return true; +} + int main() -{ +{ test03(); + static_assert( test04() ); return 0; } Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc (.../branches/gcc-7-branch) @@ -62,9 +62,9 @@ VERIFY(pass); return 0; } - -int + +int test01() { using std::wstring_view; @@ -74,7 +74,7 @@ wstring_view str_2; //sanity check - test_value(wcscmp(L"costa marbella", L"costa rica"), lt); + test_value(wcscmp(L"costa marbella", L"costa rica"), lt); test_value(wcscmp(L"costa rica", L"costa rica"), z); test_value(wcscmp(str_1.data(), str_0.data()), lt); test_value(wcscmp(str_0.data(), str_1.data()), gt); @@ -100,8 +100,8 @@ test_value(str_1.compare(0, 4, str_2), z); test_value(str_1.compare(0, 5, str_2), gt); - // int compare(size_type pos1, size_type n1, const basic_string_view& str, - // size_type pos2, size_type n2) const; + // int compare(size_type pos1, size_type n1, const basic_string_view& str, + // size_type pos2, size_type n2) const; test_value(str_1.compare(0, 6, str_0, 0, 6), z); test_value(str_1.compare(0, 7, str_0, 0, 7), lt); test_value(str_0.compare(0, 7, str_1, 0, 7), gt); @@ -111,21 +111,21 @@ test_value(str_1.compare(L"costa rica"), lt); str_2 = str_0; test_value(str_2.compare(L"costa rica"), z); - test_value(str_2.compare(L"cost"), gt); - test_value(str_2.compare(L"costa ricans"), lt); + test_value(str_2.compare(L"cost"), gt); + test_value(str_2.compare(L"costa ricans"), lt); // int compare(size_type pos, size_type n1, const charT* str, // size_type n2 = npos) const; - test_value(str_1.compare(0, 6, L"costa rica", 0, 6), z); - test_value(str_1.compare(0, 7, L"costa rica", 0, 7), lt); - test_value(str_0.compare(0, 7, L"costa marbella", 0, 7), gt); + test_value(str_1.compare(0, 6, L"costa rica", 0, 6), z); + test_value(str_1.compare(0, 7, L"costa rica", 0, 7), lt); + test_value(str_0.compare(0, 7, L"costa marbella", 0, 7), gt); return 0; } -int -main() +int +main() { test01(); Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc (.../branches/gcc-7-branch) @@ -0,0 +1,30 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-options "-std=gnu++17" } +// { dg-do compile { target c++1z } } + +#include + +constexpr wchar_t c1[] = L"one"; +constexpr wchar_t c2[] = L"two"; + +constexpr std::wstring_view s1{c1}; +constexpr std::wstring_view s2{c2}; + +constexpr int n1 = s1.compare(s1); +constexpr int n2 = s1.compare(s2); Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc (.../branches/gcc-7-branch) @@ -62,9 +62,8 @@ VERIFY(pass); return 0; } - -int +int test01() { using std::string_view; @@ -74,7 +73,7 @@ string_view str_2; //sanity check - test_value(strcmp("costa marbella", "costa rica"), lt); + test_value(strcmp("costa marbella", "costa rica"), lt); test_value(strcmp("costa rica", "costa rica"), z); test_value(strcmp(str_1.data(), str_0.data()), lt); test_value(strcmp(str_0.data(), str_1.data()), gt); @@ -100,8 +99,8 @@ test_value(str_1.compare(0, 4, str_2), z); test_value(str_1.compare(0, 5, str_2), gt); - // int compare(size_type pos1, size_type n1, const basic_string_view& str, - // size_type pos2, size_type n2) const; + // int compare(size_type pos1, size_type n1, const basic_string_view& str, + // size_type pos2, size_type n2) const; test_value(str_1.compare(0, 6, str_0, 0, 6), z); test_value(str_1.compare(0, 7, str_0, 0, 7), lt); test_value(str_0.compare(0, 7, str_1, 0, 7), gt); @@ -111,21 +110,21 @@ test_value(str_1.compare("costa rica"), lt); str_2 = str_0; test_value(str_2.compare("costa rica"), z); - test_value(str_2.compare("cost"), gt); - test_value(str_2.compare("costa ricans"), lt); + test_value(str_2.compare("cost"), gt); + test_value(str_2.compare("costa ricans"), lt); // int compare(size_type pos, size_type n1, const charT* str, // size_type n2 = npos) const; - test_value(str_1.compare(0, 6, "costa rica", 0, 6), z); - test_value(str_1.compare(0, 7, "costa rica", 0, 7), lt); - test_value(str_0.compare(0, 7, "costa marbella", 0, 7), gt); + test_value(str_1.compare(0, 6, "costa rica", 0, 6), z); + test_value(str_1.compare(0, 7, "costa rica", 0, 7), lt); + test_value(str_0.compare(0, 7, "costa marbella", 0, 7), gt); return 0; } -int -main() +int +main() { test01(); Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc (.../branches/gcc-7-branch) @@ -0,0 +1,30 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-options "-std=gnu++17" } +// { dg-do compile { target c++1z } } + +#include + +constexpr char c1[] = "one"; +constexpr char c2[] = "two"; + +constexpr std::string_view s1{c1}; +constexpr std::string_view s2{c2}; + +constexpr int n1 = s1.compare(s1); +constexpr int n2 = s1.compare(s2); Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc (.../branches/gcc-7-branch) @@ -0,0 +1,89 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-options "-std=gnu++17" } +// { dg-do compile { target c++1z } } + +#include + +struct constexpr_char_traits : std::char_traits +{ + static constexpr size_t + length(const char* val) + { + size_t res = 0; + for (; val[res] != '\0'; ++res) + ; + return res; + } + + static constexpr int + compare(const char* lhs, const char* rhs, std::size_t count) + { + for (size_t pos = 0; pos < count; ++pos) + { + if (lhs[pos] != rhs[pos]) + return lhs[pos] - rhs[pos]; + } + return 0; + } +}; + +using string_view = std::basic_string_view; + +constexpr +string_view get() +{ + string_view res = "x::"; + string_view start_pattern = "x"; + res = res.substr(res.find(start_pattern) + start_pattern.size()); + res = res.substr(0, res.find_first_of(";]")); + res = res.substr(res.rfind("::")); + return res; +} + +static_assert( get() == get() ); + +using std::u16string_view; + +constexpr +u16string_view get16() +{ + u16string_view res = u"x::"; + u16string_view start_pattern = u"x"; + res = res.substr(res.find(start_pattern) + start_pattern.size()); + res = res.substr(0, res.find_first_of(u";]")); + res = res.substr(res.rfind(u"::")); + return res; +} + +static_assert( get16() == get16() ); + +using std::u32string_view; + +constexpr +u32string_view get32() +{ + u32string_view res = U"x::"; + u32string_view start_pattern = U"x"; + res = res.substr(res.find(start_pattern) + start_pattern.size()); + res = res.substr(0, res.find_first_of(U";]")); + res = res.substr(res.rfind(U"::")); + return res; +} + +static_assert( get32() == get32() ); Index: libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc (.../branches/gcc-7-branch) @@ -18,7 +18,7 @@ // with this library; see the file COPYING3. If not see // . -// 24.6.5, range access [iterator.range] +// C++17 27.7, range access [iterator.range] #include @@ -25,9 +25,23 @@ void test01() { -#ifdef _GLIBCXX_USE_WCHAR_T std::wstring_view ws(L"Hello, World!"); std::begin(ws); std::end(ws); -#endif + std::rbegin(ws); + std::rend(ws); } + +void +test02() +{ + constexpr std::wstring_view ws(L"Hello, World!"); + [[maybe_unused]] constexpr auto b = std::begin(ws); + [[maybe_unused]] constexpr auto e = std::end(ws); + [[maybe_unused]] constexpr auto cb = std::cbegin(ws); + [[maybe_unused]] constexpr auto ce = std::cend(ws); + [[maybe_unused]] constexpr auto rb = std::rbegin(ws); + [[maybe_unused]] constexpr auto re = std::rend(ws); + [[maybe_unused]] constexpr auto crb = std::crbegin(ws); + [[maybe_unused]] constexpr auto cre = std::crend(ws); +} Index: libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc (.../branches/gcc-7-branch) @@ -18,7 +18,7 @@ // with this library; see the file COPYING3. If not see // . -// 24.6.5, range access [iterator.range] +// C++17 27.7, range access [iterator.range] #include @@ -28,4 +28,20 @@ std::string_view s("Hello, World!"); std::begin(s); std::end(s); + std::rbegin(s); + std::rend(s); } + +void +test02() +{ + constexpr std::string_view s("Hello, World!"); + [[maybe_unused]] constexpr auto b = std::begin(s); + [[maybe_unused]] constexpr auto e = std::end(s); + [[maybe_unused]] constexpr auto cb = std::cbegin(s); + [[maybe_unused]] constexpr auto ce = std::cend(s); + [[maybe_unused]] constexpr auto rb = std::rbegin(s); + [[maybe_unused]] constexpr auto re = std::rend(s); + [[maybe_unused]] constexpr auto crb = std::crbegin(s); + [[maybe_unused]] constexpr auto cre = std::crend(s); +} Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc (.../branches/gcc-7-branch) @@ -45,7 +45,7 @@ const basic_string_view& rhs); template - bool operator!=(const basic_string_view& lhs, + bool operator!=(const basic_string_view& lhs, const charT* rhs); */ @@ -60,7 +60,7 @@ const charT* rhs); template - bool operator< (const charT* lhs, + bool operator< (const charT* lhs, const basic_string_view& rhs); */ @@ -112,7 +112,7 @@ #include #include -int +void test01() { std::wstring_view str_0(L"costa rica"); @@ -120,7 +120,7 @@ std::wstring_view str_2(L"cost"); std::wstring_view str_3(L"costa ricans"); std::wstring_view str_4; - + str_4 = str_0; //comparisons between string_view objects VERIFY( !(str_0 == str_1) ); @@ -140,7 +140,7 @@ VERIFY( str_3 != str_0 ); VERIFY( !(str_0 != str_4) ); VERIFY( !(str_4 != str_0) ); - + VERIFY( str_0 > str_1 ); //true cuz r>m VERIFY( str_0 > str_2 ); VERIFY( !(str_0 > str_3) ); @@ -231,14 +231,137 @@ VERIFY( !(L"costa ricans" <= str_0) ); VERIFY( L"costa rica" <= str_0 ); VERIFY( str_0 <= L"costa rica" ); +} - return 0; +constexpr bool +test02() +{ + std::wstring_view str_0(L"costa rica"); + std::wstring_view str_1(L"costa marbella"); + std::wstring_view str_2(L"cost"); + std::wstring_view str_3(L"costa ricans"); + std::wstring_view str_4; + +#undef VERIFY +#define VERIFY(x) if (!(x)) return false + + str_4 = str_0; + //comparisons between string_view objects + VERIFY( !(str_0 == str_1) ); + VERIFY( !(str_0 == str_2) ); + VERIFY( !(str_0 == str_3) ); + VERIFY( !(str_1 == str_0) ); + VERIFY( !(str_2 == str_0) ); + VERIFY( !(str_3 == str_0) ); + VERIFY( str_4 == str_0 ); + VERIFY( str_0 == str_4 ); + + VERIFY( str_0 != str_1 ); + VERIFY( str_0 != str_2 ); + VERIFY( str_0 != str_3 ); + VERIFY( str_1 != str_0 ); + VERIFY( str_2 != str_0 ); + VERIFY( str_3 != str_0 ); + VERIFY( !(str_0 != str_4) ); + VERIFY( !(str_4 != str_0) ); + + VERIFY( str_0 > str_1 ); //true cuz r>m + VERIFY( str_0 > str_2 ); + VERIFY( !(str_0 > str_3) ); + VERIFY( !(str_1 > str_0) ); //false cuz m str_0) ); + VERIFY( str_3 > str_0 ); + VERIFY( !(str_0 > str_4) ); + VERIFY( !(str_4 > str_0) ); + + VERIFY( !(str_0 < str_1) ); //false cuz r>m + VERIFY( !(str_0 < str_2) ); + VERIFY( str_0 < str_3 ); + VERIFY( str_1 < str_0 ); //true cuz m= str_1 ); //true cuz r>m + VERIFY( str_0 >= str_2 ); + VERIFY( !(str_0 >= str_3) ); + VERIFY( !(str_1 >= str_0) );//false cuz m= str_0) ); + VERIFY( str_3 >= str_0 ); + VERIFY( str_0 >= str_4 ); + VERIFY( str_4 >= str_0 ); + + VERIFY( !(str_0 <= str_1) );//false cuz r>m + VERIFY( !(str_0 <= str_2) ); + VERIFY( str_0 <= str_3 ); + VERIFY( str_1 <= str_0 );//true cuz m L"costa marbella" ); //true cuz r>m + VERIFY( str_0 > L"cost" ); + VERIFY( !(str_0 > L"costa ricans") ); + VERIFY( !(L"costa marbella" > str_0) );//false cuz m str_0) ); + VERIFY( L"costa ricans" > str_0 ); + VERIFY( !(L"costa rica" > str_0) ); + VERIFY( !(str_0 > L"costa rica") ); + + VERIFY( !(str_0 < L"costa marbella") );//false cuz r>m + VERIFY( !(str_0 < L"cost") ); + VERIFY( str_0 < L"costa ricans" ); + VERIFY( L"costa marbella" < str_0 );//true cuz m= L"costa marbella" );//true cuz r>m + VERIFY( str_0 >= L"cost" ); + VERIFY( !(str_0 >= L"costa ricans") ); + VERIFY( !(L"costa marbella" >= str_0) );//false cuz m= str_0) ); + VERIFY( L"costa ricans" >= str_0 ); + VERIFY( L"costa rica" >= str_0 ); + VERIFY( str_0 >= L"costa rica" ); + + VERIFY( !(str_0 <= L"costa marbella") );//false cuz r>m + VERIFY( !(str_0 <= L"cost") ); + VERIFY( str_0 <= L"costa ricans" ); + VERIFY( L"costa marbella" <= str_0 );//true cuz m #include -int +void test01() { std::string_view str_0("costa rica"); @@ -120,7 +120,7 @@ std::string_view str_2("cost"); std::string_view str_3("costa ricans"); std::string_view str_4; - + str_4 = str_0; //comparisons between string objects VERIFY( !(str_0 == str_1) ); @@ -140,7 +140,7 @@ VERIFY( str_3 != str_0 ); VERIFY( !(str_0 != str_4) ); VERIFY( !(str_4 != str_0) ); - + VERIFY( str_0 > str_1 ); //true cuz r>m VERIFY( str_0 > str_2 ); VERIFY( !(str_0 > str_3) ); @@ -231,14 +231,137 @@ VERIFY( !("costa ricans" <= str_0) ); VERIFY( "costa rica" <= str_0 ); VERIFY( str_0 <= "costa rica" ); +} - return 0; +constexpr bool +test02() +{ + std::string_view str_0("costa rica"); + std::string_view str_1("costa marbella"); + std::string_view str_2("cost"); + std::string_view str_3("costa ricans"); + std::string_view str_4; + +#undef VERIFY +#define VERIFY(x) if (!(x)) return false + + str_4 = str_0; + //comparisons between string objects + VERIFY( !(str_0 == str_1) ); + VERIFY( !(str_0 == str_2) ); + VERIFY( !(str_0 == str_3) ); + VERIFY( !(str_1 == str_0) ); + VERIFY( !(str_2 == str_0) ); + VERIFY( !(str_3 == str_0) ); + VERIFY( str_4 == str_0 ); + VERIFY( str_0 == str_4 ); + + VERIFY( str_0 != str_1 ); + VERIFY( str_0 != str_2 ); + VERIFY( str_0 != str_3 ); + VERIFY( str_1 != str_0 ); + VERIFY( str_2 != str_0 ); + VERIFY( str_3 != str_0 ); + VERIFY( !(str_0 != str_4) ); + VERIFY( !(str_4 != str_0) ); + + VERIFY( str_0 > str_1 ); //true cuz r>m + VERIFY( str_0 > str_2 ); + VERIFY( !(str_0 > str_3) ); + VERIFY( !(str_1 > str_0) ); //false cuz m str_0) ); + VERIFY( str_3 > str_0 ); + VERIFY( !(str_0 > str_4) ); + VERIFY( !(str_4 > str_0) ); + + VERIFY( !(str_0 < str_1) ); //false cuz r>m + VERIFY( !(str_0 < str_2) ); + VERIFY( str_0 < str_3 ); + VERIFY( str_1 < str_0 ); //true cuz m= str_1 ); //true cuz r>m + VERIFY( str_0 >= str_2 ); + VERIFY( !(str_0 >= str_3) ); + VERIFY( !(str_1 >= str_0) );//false cuz m= str_0) ); + VERIFY( str_3 >= str_0 ); + VERIFY( str_0 >= str_4 ); + VERIFY( str_4 >= str_0 ); + + VERIFY( !(str_0 <= str_1) );//false cuz r>m + VERIFY( !(str_0 <= str_2) ); + VERIFY( str_0 <= str_3 ); + VERIFY( str_1 <= str_0 );//true cuz m "costa marbella" ); //true cuz r>m + VERIFY( str_0 > "cost" ); + VERIFY( !(str_0 > "costa ricans") ); + VERIFY( !("costa marbella" > str_0) );//false cuz m str_0) ); + VERIFY( "costa ricans" > str_0 ); + VERIFY( !("costa rica" > str_0) ); + VERIFY( !(str_0 > "costa rica") ); + + VERIFY( !(str_0 < "costa marbella") );//false cuz r>m + VERIFY( !(str_0 < "cost") ); + VERIFY( str_0 < "costa ricans" ); + VERIFY( "costa marbella" < str_0 );//true cuz m= "costa marbella" );//true cuz r>m + VERIFY( str_0 >= "cost" ); + VERIFY( !(str_0 >= "costa ricans") ); + VERIFY( !("costa marbella" >= str_0) );//false cuz m= str_0) ); + VERIFY( "costa ricans" >= str_0 ); + VERIFY( "costa rica" >= str_0 ); + VERIFY( str_0 >= "costa rica" ); + + VERIFY( !(str_0 <= "costa marbella") );//false cuz r>m + VERIFY( !(str_0 <= "cost") ); + VERIFY( str_0 <= "costa ricans" ); + VERIFY( "costa marbella" <= str_0 );//true cuz m>() ); -// static_assert( test_compare>() ); -// static_assert( test_length>() ); -// static_assert( test_find>() ); +static_assert( test_compare>() ); +static_assert( test_length>() ); +static_assert( test_find>() ); #ifdef _GLIBCXX_USE_WCHAR_T static_assert( test_assign>() ); -// static_assert( test_compare>() ); -// static_assert( test_length>() ); -// static_assert( test_find>() ); +static_assert( test_compare>() ); +static_assert( test_length>() ); +static_assert( test_find>() ); #endif static_assert( test_assign>() ); static_assert( test_compare>() ); Index: libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc (.../branches/gcc-7-branch) @@ -0,0 +1,53 @@ +// { dg-options "-std=gnu++17" } +// { dg-do run { target c++1z } } + +// Copyright (C) 2011-2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// NOTE: This makes use of the fact that we know how moveable +// is implemented on string (via swap). If the implementation changed +// this test may begin to fail. + +#include +#include +#include + +class tstring : public std::basic_string +{ +public: + tstring() : std::basic_string() {} + tstring(tstring&& s) : std::basic_string(std::move(s)) {} + tstring& operator=(tstring&& s) = default; +}; + +void test01() +{ + tstring a, b; + a.push_back(L'1'); + b = std::move(a); + VERIFY( b.size() == 1 && b[0] == L'1' && a.size() == 0 ); + + tstring c(std::move(b)); + VERIFY( c.size() == 1 && c[0] == L'1' ); + VERIFY( b.size() == 0 ); +} + +int main() +{ + test01(); + return 0; +} Index: libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc (.../branches/gcc-7-branch) @@ -0,0 +1,53 @@ +// { dg-options "-std=gnu++17" } +// { dg-do run { target c++1z } } + +// Copyright (C) 2011-2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// NOTE: This makes use of the fact that we know how moveable +// is implemented on string (via swap). If the implementation changed +// this test may begin to fail. + +#include +#include +#include + +class tstring : public std::basic_string +{ +public: + tstring() : std::basic_string() {} + tstring(tstring&& s) : std::basic_string(std::move(s)) {} + tstring& operator=(tstring&& s) = default; +}; + +void test01() +{ + tstring a, b; + a.push_back('1'); + b = std::move(a); + VERIFY( b.size() == 1 && b[0] == '1' && a.size() == 0 ); + + tstring c(std::move(b)); + VERIFY( c.size() == 1 && c[0] == '1' ); + VERIFY( b.size() == 0 ); +} + +int main() +{ + test01(); + return 0; +} Index: libstdc++-v3/testsuite/21_strings/basic_string/lwg2946.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string/lwg2946.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/21_strings/basic_string/lwg2946.cc (.../branches/gcc-7-branch) @@ -0,0 +1,41 @@ +// { dg-options "-std=gnu++17" } +// { dg-do compile } + +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +#include + +int main() +{ + std::string s({"abc", 1}); + s = {"abc", 1}; + s += {"abc", 1}; + s.append({"abc", 1}); + s.assign({"abc", 1}); + s.insert(0, {"abc", 1}); + s.replace(0, 1, {"abc", 1}); + s.replace(s.begin(), s.begin(), {"abc", 1}); + s.find({"abc", 1}); + s.rfind({"abc", 1}); + s.find_first_of({"abc", 1}); + s.find_last_of({"abc", 1}); + s.find_first_not_of({"abc", 1}); + s.find_last_not_of({"abc", 1}); + s.compare({"abc", 1}); + s.compare(0, 1, {"abc", 1}); +} Index: libstdc++-v3/testsuite/21_strings/basic_string/79162.cc =================================================================== --- libstdc++-v3/testsuite/21_strings/basic_string/79162.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/21_strings/basic_string/79162.cc (.../branches/gcc-7-branch) @@ -0,0 +1,37 @@ +// { dg-options "-std=gnu++17" } +// { dg-do compile } + +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +#include + +template +class opt : public DataType +{ + opt(const opt &) = delete; + opt &operator=(const opt &) = delete; +public: + opt() {} +}; + +int main() +{ + opt PGOTestProfileFile; + std::string ProfileFileName; + ProfileFileName = PGOTestProfileFile; +} Index: libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/70483.cc =================================================================== --- libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/70483.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/70483.cc (.../branches/gcc-7-branch) @@ -0,0 +1,68 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-do compile { target c++14 } } + +#include + +struct constexpr_char_traits : std::char_traits +{ + static constexpr size_t + length(const char* val) + { + size_t res = 0; + for (; val[res] != '\0'; ++res) + ; + return res; + } + + static constexpr int + compare(const char* lhs, const char* rhs, std::size_t count) + { + for (size_t pos = 0; pos < count; ++pos) + { + if (lhs[pos] != rhs[pos]) + return lhs[pos] - rhs[pos]; + } + return 0; + } + + static constexpr const char* + find(const char* p, std::size_t n, char c) + { + for (size_t pos = 0; pos < n; ++pos) + if (p[pos] == c) + return p + pos; + return nullptr; + } +}; + +using string_view + = std::experimental::basic_string_view; + +constexpr +string_view get() +{ + string_view res = "x::"; + string_view start_pattern = "x"; + res = res.substr(res.find(start_pattern) + start_pattern.size()); + res = res.substr(0, res.find_first_of(";]")); + res = res.substr(res.rfind("::")); + return res; +} + +static_assert( get() == get() ); Index: libstdc++-v3/testsuite/17_intro/names.cc =================================================================== --- libstdc++-v3/testsuite/17_intro/names.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/17_intro/names.cc (.../branches/gcc-7-branch) @@ -107,4 +107,9 @@ #undef y #endif +#ifdef __hpux__ +#undef d +#undef r +#endif + #include Index: libstdc++-v3/testsuite/20_util/duration/literals/range.cc =================================================================== --- libstdc++-v3/testsuite/20_util/duration/literals/range.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/20_util/duration/literals/range.cc (.../branches/gcc-7-branch) @@ -26,6 +26,6 @@ // std::numeric_limits::max() == 9223372036854775807; auto h = 9223372036854775808h; - // { dg-error "cannot be represented" "" { target *-*-* } 892 } + // { dg-error "cannot be represented" "" { target *-*-* } 893 } } // { dg-prune-output "in constexpr expansion" } // needed for -O0 Index: libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc =================================================================== --- libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc (.../branches/gcc-7-branch) @@ -0,0 +1,41 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-do compile { target c++11 } } + +#include +#include + +using namespace std; +using namespace std::chrono; + +// DR 1177 +static_assert(is_constructible, duration>{}, + "can convert duration with one floating point rep to another"); +static_assert(is_constructible, duration>{}, + "can convert duration with integral rep to one with floating point rep"); +static_assert(!is_constructible, duration>{}, + "cannot convert duration with floating point rep to one with integral rep"); +static_assert(is_constructible, duration>{}, + "can convert duration with one integral rep to another"); + +static_assert(!is_constructible, duration>>{}, + "cannot convert duration to one with different period"); +static_assert(is_constructible, duration>>{}, + "unless it has a floating-point representation"); +static_assert(is_constructible, duration>>{}, + "or a period that is an integral multiple of the original"); Index: libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc =================================================================== --- libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc (.../branches/gcc-7-branch) @@ -40,6 +40,10 @@ void test01() { + struct T { T(int) { } }; + struct NT { NT(int) noexcept { } }; + struct Ex { explicit Ex(int) noexcept { } }; + using func_type = void(*)(); static_assert( ! is_nt_invocable< func_type>(), ""); @@ -55,28 +59,46 @@ static_assert( ! is_nt_invocable< mem_type, int >(), ""); static_assert( ! is_nt_invocable< mem_type, int& >(), ""); - static_assert( is_nt_invocable< mem_type, X& >(), ""); - static_assert( is_nt_invocable_r< int, mem_type, X& >(), ""); - static_assert( is_nt_invocable_r< int&, mem_type, X& >(), ""); - static_assert( is_nt_invocable_r< long, mem_type, X& >(), ""); - static_assert( is_nt_invocable_r< int&, mem_type, X* >(), ""); + static_assert( is_nt_invocable< mem_type, X& >(), ""); + static_assert( is_nt_invocable_r< int, mem_type, X& >(), ""); + static_assert( is_nt_invocable_r< int&, mem_type, X& >(), ""); + static_assert( is_nt_invocable_r< long, mem_type, X& >(), ""); + static_assert( ! is_nt_invocable_r< long&, mem_type, X& >(), + "conversion fails, cannot bind long& to int"); + static_assert( is_nt_invocable_r< int&, mem_type, X* >(), ""); + static_assert( ! is_nt_invocable_r< T, mem_type, X& >(), + "conversion throws"); + static_assert( is_nt_invocable_r< NT, mem_type, X& >(), ""); + static_assert( ! is_nt_invocable_r< Ex, mem_type, X& >(), + "conversion fails, would use explicit constructor"); + using memfun_type = int (X::*)(); - static_assert( ! is_nt_invocable< memfun_type >(), ""); - static_assert( ! is_nt_invocable< memfun_type, int >(), ""); - static_assert( ! is_nt_invocable< memfun_type, int& >(), ""); - static_assert( ! is_nt_invocable< memfun_type, X& >(), ""); - static_assert( ! is_nt_invocable< memfun_type, X* >(), ""); + static_assert( ! is_nt_invocable< memfun_type >(), "no object"); + static_assert( ! is_nt_invocable< memfun_type, int >(), "no object"); + static_assert( ! is_nt_invocable< memfun_type, int& >(), "no object"); + static_assert( ! is_nt_invocable< memfun_type, X& >(), "call throws"); + static_assert( ! is_nt_invocable< memfun_type, X* >(), "call throws"); + static_assert( ! is_nt_invocable_r< T, memfun_type, X& >(), "call throws"); + static_assert( ! is_nt_invocable_r< NT, memfun_type, X& >(), "call throws"); + static_assert( ! is_nt_invocable_r< Ex, memfun_type, X& >(), "call throws"); + #if __cpp_noexcept_function_type using memfun_type_nt = int (X::*)() noexcept; - static_assert( ! is_nt_invocable< memfun_type_nt >(), ""); - static_assert( ! is_nt_invocable< memfun_type_nt, int >(), ""); - static_assert( ! is_nt_invocable< memfun_type_nt, int& >(), ""); + static_assert( ! is_nt_invocable< memfun_type_nt >(), "no object"); + static_assert( ! is_nt_invocable< memfun_type_nt, int >(), "no object"); + static_assert( ! is_nt_invocable< memfun_type_nt, int& >(), "no object"); static_assert( is_nt_invocable< memfun_type_nt, X& >(), ""); static_assert( is_nt_invocable< memfun_type_nt, X* >(), ""); + + static_assert( ! is_nt_invocable_r< T, memfun_type_nt, X& >(), + "conversion throws"); + static_assert( is_nt_invocable_r< NT, memfun_type_nt, X& >(), ""); + static_assert( ! is_nt_invocable_r< Ex, memfun_type_nt, X& >(), + "conversion fails, would use explicit constructor"); #endif struct F { @@ -89,12 +111,44 @@ }; using CF = const F; - static_assert( ! is_nt_invocable_r< int&, F >(), ""); - static_assert( is_nt_invocable_r< long&, CF >(), ""); - static_assert( ! is_nt_invocable_r< short&, F, int >(), "" ); - static_assert( is_nt_invocable_r< char&, F&, int >(), "" ); - static_assert( is_nt_invocable_r< char&, CF, int >(), "" ); - static_assert( is_nt_invocable_r< char&, CF&, int >(), "" ); + static_assert( ! is_nt_invocable< F >(), "call throws"); + static_assert( is_nt_invocable< CF >(), ""); - static_assert( ! is_nt_invocable< F, int, int >(), ""); + static_assert( ! is_nt_invocable_r< int&, F >(), "call throws"); + static_assert( is_nt_invocable_r< long&, CF >(), ""); + static_assert( ! is_nt_invocable_r< T, F >(), "call throws"); + static_assert( ! is_nt_invocable_r< NT, F >(), "call throws"); + static_assert( ! is_nt_invocable_r< Ex, F >(), "call throws"); + static_assert( ! is_nt_invocable_r< T, CF >(), "conversion throws"); + static_assert( is_nt_invocable_r< NT, CF >(), "" ); + static_assert( ! is_nt_invocable_r< Ex, CF >(), "conversion fails"); + + static_assert( ! is_nt_invocable< F, int >(), "call throws"); + static_assert( is_nt_invocable< F&, int >(), ""); + + static_assert( ! is_nt_invocable_r< short&, F, int >(), + "call throws" ); + static_assert( is_nt_invocable_r< char&, F&, int >(), ""); + static_assert( ! is_nt_invocable_r< T, F&, int >(), + "conversion throws"); + static_assert( is_nt_invocable_r< NT, F&, int >(), ""); + static_assert( ! is_nt_invocable_r< Ex, F&, int >(), + "conversion fails, would use explicit constructor"); + + static_assert( is_nt_invocable< CF, int >(), ""); + static_assert( is_nt_invocable< CF&, int >(), ""); + + static_assert( is_nt_invocable_r< char&, CF, int >(), ""); + static_assert( is_nt_invocable_r< char&, CF&, int >(), ""); + + static_assert( ! is_nt_invocable_r< T, CF&, int >(), + "conversion throws"); + static_assert( is_nt_invocable_r< NT, CF&, int >(), ""); + static_assert( ! is_nt_invocable_r< Ex, CF&, int >(), + "conversion fails, would use explicit constructor"); + + static_assert( ! is_nt_invocable< F, int, int >(), + "would call private member"); + static_assert( ! is_nt_invocable_r(), + "would call private member"); } Index: libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc =================================================================== --- libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc (.../branches/gcc-7-branch) @@ -27,7 +27,9 @@ constexpr bool is_nt_invocable_conv(std::true_type) { using result_type = typename std::__invoke_result::type; - return std::is_void::value || std::is_convertible::value; + return std::is_void::value + || (std::is_convertible::value + && std::is_nothrow_constructible::value); } template Index: libstdc++-v3/testsuite/20_util/optional/hash.cc =================================================================== --- libstdc++-v3/testsuite/20_util/optional/hash.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/testsuite/20_util/optional/hash.cc (.../branches/gcc-7-branch) @@ -29,14 +29,23 @@ auto f(...) -> decltype(std::false_type()); static_assert(!decltype(f(0))::value, ""); -static_assert(!std::is_invocable_v< - std::hash>&, std::optional const&> ); -static_assert(std::is_invocable_v< - std::hash>&, std::optional const&> ); +template +constexpr bool hashable() +{ return std::is_invocable_v&, const T&>; } + +static_assert(!hashable>()); +static_assert(!hashable>()); +static_assert(hashable>()); +static_assert(hashable>()); + int main() { int x = 42; std::optional x2 = 42; VERIFY(std::hash()(x) == std::hash>()(x2)); + + // PR libstdc++/82262 + std::optional x3 = x2; + VERIFY(std::hash()(x) == std::hash>()(x3)); } Index: libstdc++-v3/testsuite/20_util/time_point/cons/81468.cc =================================================================== --- libstdc++-v3/testsuite/20_util/time_point/cons/81468.cc (.../tags/gcc_7_2_0_release) (nonexistent) +++ libstdc++-v3/testsuite/20_util/time_point/cons/81468.cc (.../branches/gcc-7-branch) @@ -0,0 +1,34 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-do compile { target c++11 } } + +#include +#include + +using namespace std; +using namespace std::chrono; + +template + using sys_time = time_point; + +static_assert(is_constructible, sys_time>{}, + "Can construct time_point from one with lower precision duration"); + +// PR libstdc++/81468 - DR 1177 +static_assert(!is_constructible, sys_time>{}, + "Cannot construct time_point from one with higher precision duration"); Index: libstdc++-v3/config/io/basic_file_stdio.cc =================================================================== --- libstdc++-v3/config/io/basic_file_stdio.cc (.../tags/gcc_7_2_0_release) +++ libstdc++-v3/config/io/basic_file_stdio.cc (.../branches/gcc-7-branch) @@ -195,11 +195,13 @@ __basic_file* __ret = NULL; if (!this->is_open() && __file) { - int __err; + int __err, __save_errno = errno; + // POSIX guarantees that fflush sets errno on error, but C doesn't. errno = 0; do - __err = this->sync(); + __err = fflush(__file); while (__err && errno == EINTR); + errno = __save_errno; if (!__err) { _M_cfile = __file; Index: contrib/ChangeLog =================================================================== --- contrib/ChangeLog (.../tags/gcc_7_2_0_release) +++ contrib/ChangeLog (.../branches/gcc-7-branch) @@ -1,3 +1,7 @@ +2017-10-02 Thomas Schwinge + + * gcc_update (files_and_dependencies): Handle libbacktrace. + 2017-08-14 Release Manager * GCC 7.2.0 released. Index: contrib/gcc_update =================================================================== --- contrib/gcc_update (.../tags/gcc_7_2_0_release) +++ contrib/gcc_update (.../branches/gcc-7-branch) @@ -172,6 +172,10 @@ liboffloadmic/plugin/aclocal.m4: liboffloadmic/plugin/configure.ac liboffloadmic/plugin/Makefile.in: liboffloadmic/plugin/Makefile.am liboffloadmic/plugin/configure: liboffloadmic/plugin/configure.ac +libbacktrace/aclocal.m4: libbacktrace/configure.ac +libbacktrace/Makefile.in: libbacktrace/Makefile.am libbacktrace/aclocal.m4 +libbacktrace/configure: libbacktrace/configure.ac libbacktrace/aclocal.m4 +libbacktrace/config.h.in: libbacktrace/configure.ac libbacktrace/aclocal.m4 # Top level Makefile.in: Makefile.tpl Makefile.def configure: configure.ac config/acx.m4 Index: libgcc/config.host =================================================================== --- libgcc/config.host (.../tags/gcc_7_2_0_release) +++ libgcc/config.host (.../branches/gcc-7-branch) @@ -245,6 +245,7 @@ *-*-netbsd*) tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip" tmake_file="$tmake_file t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver" + tmake_file="$tmake_file t-slibgcc-libgcc" # NetBSD 1.7 and later are set up to use GCC's crtstuff for # ELF configurations. We will clear extra_parts in the # a.out configurations. Index: libgcc/ChangeLog =================================================================== --- libgcc/ChangeLog (.../tags/gcc_7_2_0_release) +++ libgcc/ChangeLog (.../branches/gcc-7-branch) @@ -1,3 +1,11 @@ +2017-09-28 Krister Walfridsson + + Backport from mainline + 2017-05-14 Krister Walfridsson + + PR target/80600 + * config.host (*-*-netbsd*): Add t-slibgcc-libgcc to tmake_file. + 2017-08-14 Release Manager * GCC 7.2.0 released. Index: gcc/is-a.h =================================================================== --- gcc/is-a.h (.../tags/gcc_7_2_0_release) +++ gcc/is-a.h (.../branches/gcc-7-branch) @@ -103,7 +103,12 @@ Note that we have converted two sets of assertions in the calls to varpool into safe and efficient use of a variable. +TYPE safe_dyn_cast (pointer) + Like dyn_cast (pointer), except that it accepts null pointers + and returns null results for them. + + If you use these functions and get a 'inline function not defined' or a 'missing symbol' error message for 'is_a_helper<....>::test', it means that the connection between the types has not been made. See below. @@ -222,4 +227,13 @@ return static_cast (0); } +/* Similar to dyn_cast, except that the pointer may be null. */ + +template +inline T +safe_dyn_cast (U *p) +{ + return p ? dyn_cast (p) : 0; +} + #endif /* GCC_IS_A_H */ Index: gcc/tree-vrp.c =================================================================== --- gcc/tree-vrp.c (.../tags/gcc_7_2_0_release) +++ gcc/tree-vrp.c (.../branches/gcc-7-branch) @@ -4897,7 +4897,12 @@ operand of the ASSERT_EXPR. Create it so the new name and the old one are registered in the replacement table so that we can fix the SSA web after adding all the ASSERT_EXPRs. */ - create_new_def_for (v, assertion, NULL); + tree new_def = create_new_def_for (v, assertion, NULL); + /* Make sure we preserve abnormalness throughout an ASSERT_EXPR chain + given we have to be able to fully propagate those out to re-create + valid SSA when removing the asserts. */ + if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (v)) + SSA_NAME_OCCURS_IN_ABNORMAL_PHI (new_def) = 1; return assertion; } Index: gcc/doc/sourcebuild.texi =================================================================== --- gcc/doc/sourcebuild.texi (.../tags/gcc_7_2_0_release) +++ gcc/doc/sourcebuild.texi (.../branches/gcc-7-branch) @@ -1570,6 +1570,12 @@ ARM Target supports @code{-mfpu=neon -mfloat-abi=softfp} or compatible options. Some multilibs may be incompatible with these options. +@item arm_neon_ok_no_float_abi +@anchor{arm_neon_ok_no_float_abi} +ARM Target supports NEON with @code{-mfpu=neon}, but without any +-mfloat-abi= option. Some multilibs may be incompatible with this +option. + @item arm_neonv2_ok @anchor{arm_neonv2_ok} ARM Target supports @code{-mfpu=neon-vfpv4 -mfloat-abi=softfp} or compatible Index: gcc/doc/extend.texi =================================================================== --- gcc/doc/extend.texi (.../tags/gcc_7_2_0_release) +++ gcc/doc/extend.texi (.../branches/gcc-7-branch) @@ -19476,8 +19476,11 @@ @item btver2 AMD Family 16h CPU. +@item amdfam17h +AMD Family 17h CPU. + @item znver1 -AMD Family 17h CPU. +AMD Family 17h Zen version 1. @end table Here is an example: @@ -20635,7 +20638,7 @@ The following built-in functions are available when @option{-mlzcnt} is used. All of them generate the machine instruction that is part of the name. @smallexample -unsigned short __builtin_ia32_lzcnt_16(unsigned short); +unsigned short __builtin_ia32_lzcnt_u16(unsigned short); unsigned int __builtin_ia32_lzcnt_u32(unsigned int); unsigned long long __builtin_ia32_lzcnt_u64 (unsigned long long); @end smallexample Index: gcc/ipa-visibility.c =================================================================== --- gcc/ipa-visibility.c (.../tags/gcc_7_2_0_release) +++ gcc/ipa-visibility.c (.../branches/gcc-7-branch) @@ -97,7 +97,8 @@ && !DECL_EXTERNAL (node->decl) && !node->externally_visible && !node->used_from_other_partition - && !node->in_other_partition); + && !node->in_other_partition + && node->get_availability () >= AVAIL_AVAILABLE); } /* Return true when function can be marked local. */ Index: gcc/tree-chkp.c =================================================================== --- gcc/tree-chkp.c (.../tags/gcc_7_2_0_release) +++ gcc/tree-chkp.c (.../branches/gcc-7-branch) @@ -3277,7 +3277,7 @@ return DECL_SIZE (field) && TREE_CODE (DECL_SIZE (field)) == INTEGER_CST && tree_to_uhwi (DECL_SIZE (field)) != 0 && !(flag_chkp_flexible_struct_trailing_arrays - && array_at_struct_end_p (ref, true)) + && array_at_struct_end_p (ref)) && (!DECL_FIELD_OFFSET (field) || TREE_CODE (DECL_FIELD_OFFSET (field)) == INTEGER_CST) && (!DECL_FIELD_BIT_OFFSET (field) Index: gcc/ipa-icf-gimple.c =================================================================== --- gcc/ipa-icf-gimple.c (.../tags/gcc_7_2_0_release) +++ gcc/ipa-icf-gimple.c (.../branches/gcc-7-branch) @@ -361,10 +361,14 @@ } case LABEL_DECL: { + if (t1 == t2) + return true; + int *bb1 = m_label_bb_map.get (t1); int *bb2 = m_label_bb_map.get (t2); - return return_with_debug (*bb1 == *bb2); + /* Labels can point to another function (non-local GOTOs). */ + return return_with_debug (bb1 != NULL && bb2 != NULL && *bb1 == *bb2); } case PARM_DECL: case RESULT_DECL: @@ -539,11 +543,8 @@ } } -/* Compares two tree list operands T1 and T2 and returns true if these - two trees are semantically equivalent. */ - bool -func_checker::compare_tree_list_operand (tree t1, tree t2) +func_checker::compare_asm_inputs_outputs (tree t1, tree t2) { gcc_assert (TREE_CODE (t1) == TREE_LIST); gcc_assert (TREE_CODE (t2) == TREE_LIST); @@ -556,6 +557,16 @@ if (!compare_operand (TREE_VALUE (t1), TREE_VALUE (t2))) return return_false (); + tree p1 = TREE_PURPOSE (t1); + tree p2 = TREE_PURPOSE (t2); + + gcc_assert (TREE_CODE (p1) == TREE_LIST); + gcc_assert (TREE_CODE (p2) == TREE_LIST); + + if (strcmp (TREE_STRING_POINTER (TREE_VALUE (p1)), + TREE_STRING_POINTER (TREE_VALUE (p2))) != 0) + return return_false (); + t2 = TREE_CHAIN (t2); } @@ -1004,7 +1015,7 @@ tree input1 = gimple_asm_input_op (g1, i); tree input2 = gimple_asm_input_op (g2, i); - if (!compare_tree_list_operand (input1, input2)) + if (!compare_asm_inputs_outputs (input1, input2)) return return_false_with_msg ("ASM input is different"); } @@ -1013,7 +1024,7 @@ tree output1 = gimple_asm_output_op (g1, i); tree output2 = gimple_asm_output_op (g2, i); - if (!compare_tree_list_operand (output1, output2)) + if (!compare_asm_inputs_outputs (output1, output2)) return return_false_with_msg ("ASM output is different"); } Index: gcc/ipa-icf-gimple.h =================================================================== --- gcc/ipa-icf-gimple.h (.../tags/gcc_7_2_0_release) +++ gcc/ipa-icf-gimple.h (.../branches/gcc-7-branch) @@ -215,9 +215,9 @@ is returned. */ bool compare_operand (tree t1, tree t2); - /* Compares two tree list operands T1 and T2 and returns true if these - two trees are semantically equivalent. */ - bool compare_tree_list_operand (tree t1, tree t2); + /* Compares GIMPLE ASM inputs (or outputs) where we iterate tree chain + and compare both TREE_PURPOSEs and TREE_VALUEs. */ + bool compare_asm_inputs_outputs (tree t1, tree t2); /* Verifies that trees T1 and T2, representing function declarations are equivalent from perspective of ICF. */ Index: gcc/opts-common.c =================================================================== --- gcc/opts-common.c (.../tags/gcc_7_2_0_release) +++ gcc/opts-common.c (.../branches/gcc-7-branch) @@ -988,7 +988,8 @@ { if (!handlers->handlers[i].handler (opts, opts_set, decoded, lang_mask, kind, loc, - handlers, dc)) + handlers, dc, + handlers->target_option_override_hook)) return false; } Index: gcc/c-family/c-cppbuiltin.c =================================================================== --- gcc/c-family/c-cppbuiltin.c (.../tags/gcc_7_2_0_release) +++ gcc/c-family/c-cppbuiltin.c (.../branches/gcc-7-branch) @@ -987,6 +987,8 @@ } if (flag_new_ttp) cpp_define (pfile, "__cpp_template_template_args=201611"); + if (flag_threadsafe_statics) + cpp_define (pfile, "__cpp_threadsafe_static_init=200806"); } /* Note that we define this for C as well, so that we know if __attribute__((cleanup)) will interface with EH. */ Index: gcc/c-family/ChangeLog =================================================================== --- gcc/c-family/ChangeLog (.../tags/gcc_7_2_0_release) +++ gcc/c-family/ChangeLog (.../branches/gcc-7-branch) @@ -1,3 +1,49 @@ +2017-09-15 Jakub Jelinek + + Backported from mainline + 2017-09-12 Jakub Jelinek + + PR target/82112 + * c-common.c (sync_resolve_size): Instead of c_dialect_cxx () + assertion check that in the condition. + (get_atomic_generic_size): Likewise. Before testing if parameter + has pointer type, if it has array type, call for C++ + default_conversion to perform array-to-pointer conversion. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-08-29 Martin Liska + + PR other/39851 + * c-common.c (parse_optimize_options): Add argument to function + call. + * c-pragma.c (handle_pragma_diagnostic): Likewise. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-06-28 Martin Liska + + PR ipa/81128 + * c-attribs.c (handle_alias_ifunc_attribute): Append ifunc alias + to a function declaration. + +2017-09-10 Jonathan Wakely + + PR c++/81852 + * c-cppbuiltin.c (c_cpp_builtins): Define __cpp_threadsafe_static_init. + +2017-09-07 Jakub Jelinek + + Backported from mainline + 2017-07-27 Jakub Jelinek + + PR c/45784 + * c-omp.c (c_finish_omp_for): If the condition is wrapped in + rhs of COMPOUND_EXPR(s), skip them and readd their lhs into + new COMPOUND_EXPRs around the rhs of the comparison. + 2017-08-14 Release Manager * GCC 7.2.0 released. Index: gcc/c-family/c-common.c =================================================================== --- gcc/c-family/c-common.c (.../tags/gcc_7_2_0_release) +++ gcc/c-family/c-common.c (.../branches/gcc-7-branch) @@ -5597,7 +5597,7 @@ /* And apply them. */ decode_options (&global_options, &global_options_set, decoded_options, decoded_options_count, - input_location, global_dc); + input_location, global_dc, NULL); targetm.override_options_after_change(); @@ -6576,10 +6576,9 @@ } argtype = type = TREE_TYPE ((*params)[0]); - if (TREE_CODE (type) == ARRAY_TYPE) + if (TREE_CODE (type) == ARRAY_TYPE && c_dialect_cxx ()) { /* Force array-to-pointer decay for C++. */ - gcc_assert (c_dialect_cxx()); (*params)[0] = default_conversion ((*params)[0]); type = TREE_TYPE ((*params)[0]); } @@ -6741,10 +6740,9 @@ /* Get type of first parameter, and determine its size. */ type_0 = TREE_TYPE ((*params)[0]); - if (TREE_CODE (type_0) == ARRAY_TYPE) + if (TREE_CODE (type_0) == ARRAY_TYPE && c_dialect_cxx ()) { /* Force array-to-pointer decay for C++. */ - gcc_assert (c_dialect_cxx()); (*params)[0] = default_conversion ((*params)[0]); type_0 = TREE_TYPE ((*params)[0]); } @@ -6783,6 +6781,12 @@ /* __atomic_compare_exchange has a bool in the 4th position, skip it. */ if (n_param == 6 && x == 3) continue; + if (TREE_CODE (type) == ARRAY_TYPE && c_dialect_cxx ()) + { + /* Force array-to-pointer decay for C++. */ + (*params)[x] = default_conversion ((*params)[x]); + type = TREE_TYPE ((*params)[x]); + } if (!POINTER_TYPE_P (type)) { error_at (loc, "argument %d of %qE must be a pointer type", x + 1, Index: gcc/c-family/c-omp.c =================================================================== --- gcc/c-family/c-omp.c (.../tags/gcc_7_2_0_release) +++ gcc/c-family/c-omp.c (.../branches/gcc-7-branch) @@ -531,6 +531,12 @@ { bool cond_ok = false; + /* E.g. C sizeof (vla) could add COMPOUND_EXPRs with + evaluation of the vla VAR_DECL. We need to readd + them to the non-decl operand. See PR45784. */ + while (TREE_CODE (cond) == COMPOUND_EXPR) + cond = TREE_OPERAND (cond, 1); + if (EXPR_HAS_LOCATION (cond)) elocus = EXPR_LOCATION (cond); @@ -605,6 +611,21 @@ else if (code != CILK_SIMD && code != CILK_FOR) cond_ok = false; } + + if (cond_ok && TREE_VEC_ELT (condv, i) != cond) + { + tree ce = NULL_TREE, *pce = &ce; + tree type = TREE_TYPE (TREE_OPERAND (cond, 1)); + for (tree c = TREE_VEC_ELT (condv, i); c != cond; + c = TREE_OPERAND (c, 1)) + { + *pce = build2 (COMPOUND_EXPR, type, TREE_OPERAND (c, 0), + TREE_OPERAND (cond, 1)); + pce = &TREE_OPERAND (*pce, 1); + } + TREE_OPERAND (cond, 1) = ce; + TREE_VEC_ELT (condv, i) = cond; + } } if (!cond_ok) Index: gcc/c-family/c-pragma.c =================================================================== --- gcc/c-family/c-pragma.c (.../tags/gcc_7_2_0_release) +++ gcc/c-family/c-pragma.c (.../branches/gcc-7-branch) @@ -815,7 +815,7 @@ } struct cl_option_handlers handlers; - set_default_handlers (&handlers); + set_default_handlers (&handlers, NULL); const char *arg = NULL; if (cl_options[option_index].flags & CL_JOINED) arg = option_string + 1 + cl_options[option_index].opt_len; Index: gcc/c-family/c-attribs.c =================================================================== --- gcc/c-family/c-attribs.c (.../tags/gcc_7_2_0_release) +++ gcc/c-family/c-attribs.c (.../branches/gcc-7-branch) @@ -1764,9 +1764,14 @@ TREE_STATIC (decl) = 1; if (!is_alias) - /* ifuncs are also aliases, so set that attribute too. */ - DECL_ATTRIBUTES (decl) - = tree_cons (get_identifier ("alias"), args, DECL_ATTRIBUTES (decl)); + { + /* ifuncs are also aliases, so set that attribute too. */ + DECL_ATTRIBUTES (decl) + = tree_cons (get_identifier ("alias"), args, + DECL_ATTRIBUTES (decl)); + DECL_ATTRIBUTES (decl) = tree_cons (get_identifier ("ifunc"), + NULL, DECL_ATTRIBUTES (decl)); + } } else { Index: gcc/c/ChangeLog =================================================================== --- gcc/c/ChangeLog (.../tags/gcc_7_2_0_release) +++ gcc/c/ChangeLog (.../branches/gcc-7-branch) @@ -1,3 +1,12 @@ +2017-09-30 Jakub Jelinek + + Backported from mainline + 2017-09-29 Jakub Jelinek + + PR c/82340 + * c-decl.c (build_compound_literal): Use c_apply_type_quals_to_decl + instead of trying to set just TREE_READONLY manually. + 2017-08-14 Release Manager * GCC 7.2.0 released. Index: gcc/c/c-decl.c =================================================================== --- gcc/c/c-decl.c (.../tags/gcc_7_2_0_release) +++ gcc/c/c-decl.c (.../branches/gcc-7-branch) @@ -5264,9 +5264,7 @@ DECL_ARTIFICIAL (decl) = 1; DECL_IGNORED_P (decl) = 1; TREE_TYPE (decl) = type; - TREE_READONLY (decl) = (TYPE_READONLY (type) - || (TREE_CODE (type) == ARRAY_TYPE - && TYPE_READONLY (TREE_TYPE (type)))); + c_apply_type_quals_to_decl (TYPE_QUALS (strip_array_types (type)), decl); store_init_value (loc, decl, init, NULL_TREE); if (TREE_CODE (type) == ARRAY_TYPE && !COMPLETE_TYPE_P (type)) Index: gcc/DATESTAMP =================================================================== --- gcc/DATESTAMP (.../tags/gcc_7_2_0_release) +++ gcc/DATESTAMP (.../branches/gcc-7-branch) @@ -1 +1 @@ -20170814 +20171009 Index: gcc/tree.c =================================================================== --- gcc/tree.c (.../tags/gcc_7_2_0_release) +++ gcc/tree.c (.../branches/gcc-7-branch) @@ -4810,8 +4810,9 @@ Record such modified types already made so we don't make duplicates. */ tree -build_type_attribute_qual_variant (tree ttype, tree attribute, int quals) +build_type_attribute_qual_variant (tree otype, tree attribute, int quals) { + tree ttype = otype; if (! attribute_list_equal (TYPE_ATTRIBUTES (ttype), attribute)) { inchash::hash hstate; @@ -4838,6 +4839,11 @@ } ttype = build_qualified_type (ttype, TYPE_UNQUALIFIED); + if (lang_hooks.types.copy_lang_qualifiers + && otype != TYPE_MAIN_VARIANT (otype)) + ttype = (lang_hooks.types.copy_lang_qualifiers + (ttype, TYPE_MAIN_VARIANT (otype))); + ntype = build_distinct_type_copy (ttype); TYPE_ATTRIBUTES (ntype) = attribute; @@ -4884,6 +4890,9 @@ TYPE_CANONICAL (ntype) = TYPE_CANONICAL (ttype); ttype = build_qualified_type (ntype, quals); + if (lang_hooks.types.copy_lang_qualifiers + && otype != TYPE_MAIN_VARIANT (otype)) + ttype = lang_hooks.types.copy_lang_qualifiers (ttype, otype); } else if (TYPE_QUALS (ttype) != quals) ttype = build_qualified_type (ttype, quals); @@ -13219,18 +13228,26 @@ return NULL_TREE; } -/* Returns true if REF is an array reference to an array at the end of - a structure. If this is the case, the array may be allocated larger - than its upper bound implies. When ALLOW_COMPREF is true considers - REF when it's a COMPONENT_REF in addition ARRAY_REF and - ARRAY_RANGE_REF. */ +/* Returns true if REF is an array reference or a component reference + to an array at the end of a structure. + If this is the case, the array may be allocated larger + than its upper bound implies. */ bool -array_at_struct_end_p (tree ref, bool allow_compref) +array_at_struct_end_p (tree ref) { - if (TREE_CODE (ref) != ARRAY_REF - && TREE_CODE (ref) != ARRAY_RANGE_REF - && (!allow_compref || TREE_CODE (ref) != COMPONENT_REF)) + tree atype; + + if (TREE_CODE (ref) == ARRAY_REF + || TREE_CODE (ref) == ARRAY_RANGE_REF) + { + atype = TREE_TYPE (TREE_OPERAND (ref, 0)); + ref = TREE_OPERAND (ref, 0); + } + else if (TREE_CODE (ref) == COMPONENT_REF + && TREE_CODE (TREE_TYPE (TREE_OPERAND (ref, 1))) == ARRAY_TYPE) + atype = TREE_TYPE (TREE_OPERAND (ref, 1)); + else return false; while (handled_component_p (ref)) @@ -13238,19 +13255,42 @@ /* If the reference chain contains a component reference to a non-union type and there follows another field the reference is not at the end of a structure. */ - if (TREE_CODE (ref) == COMPONENT_REF - && TREE_CODE (TREE_TYPE (TREE_OPERAND (ref, 0))) == RECORD_TYPE) + if (TREE_CODE (ref) == COMPONENT_REF) { - tree nextf = DECL_CHAIN (TREE_OPERAND (ref, 1)); - while (nextf && TREE_CODE (nextf) != FIELD_DECL) - nextf = DECL_CHAIN (nextf); - if (nextf) - return false; + if (TREE_CODE (TREE_TYPE (TREE_OPERAND (ref, 0))) == RECORD_TYPE) + { + tree nextf = DECL_CHAIN (TREE_OPERAND (ref, 1)); + while (nextf && TREE_CODE (nextf) != FIELD_DECL) + nextf = DECL_CHAIN (nextf); + if (nextf) + return false; + } } + /* If we have a multi-dimensional array we do not consider + a non-innermost dimension as flex array if the whole + multi-dimensional array is at struct end. + Same for an array of aggregates with a trailing array + member. */ + else if (TREE_CODE (ref) == ARRAY_REF) + return false; + else if (TREE_CODE (ref) == ARRAY_RANGE_REF) + ; + /* If we view an underlying object as sth else then what we + gathered up to now is what we have to rely on. */ + else if (TREE_CODE (ref) == VIEW_CONVERT_EXPR) + break; + else + gcc_unreachable (); ref = TREE_OPERAND (ref, 0); } + /* The array now is at struct end. Treat flexible arrays as + always subject to extend, even into just padding constrained by + an underlying decl. */ + if (! TYPE_SIZE (atype)) + return true; + tree size = NULL; if (TREE_CODE (ref) == MEM_REF Index: gcc/tree.h =================================================================== --- gcc/tree.h (.../tags/gcc_7_2_0_release) +++ gcc/tree.h (.../branches/gcc-7-branch) @@ -4870,12 +4870,10 @@ EXP, an ARRAY_REF or an ARRAY_RANGE_REF. */ extern tree array_ref_low_bound (tree); -/* Returns true if REF is an array reference to an array at the end of - a structure. If this is the case, the array may be allocated larger - than its upper bound implies. When second argument is true considers - REF when it's a COMPONENT_REF in addition ARRAY_REF and - ARRAY_RANGE_REF. */ -extern bool array_at_struct_end_p (tree, bool = false); +/* Returns true if REF is an array reference or a component reference + to an array at the end of a structure. If this is the case, the array + may be allocated larger than its upper bound implies. */ +extern bool array_at_struct_end_p (tree); /* Return a tree representing the offset, in bytes, of the field referenced by EXP. This does not include any offset in DECL_FIELD_BIT_OFFSET. */ Index: gcc/gcc.c =================================================================== --- gcc/gcc.c (.../tags/gcc_7_2_0_release) +++ gcc/gcc.c (.../branches/gcc-7-branch) @@ -872,8 +872,7 @@ #endif #ifdef ENABLE_DEFAULT_PIE -#define NO_PIE_SPEC "no-pie|static" -#define PIE_SPEC NO_PIE_SPEC "|r|shared:;" +#define PIE_SPEC "!no-pie" #define NO_FPIE1_SPEC "fno-pie" #define FPIE1_SPEC NO_FPIE1_SPEC ":;" #define NO_FPIE2_SPEC "fno-PIE" @@ -894,7 +893,6 @@ #define FPIE_OR_FPIC_SPEC NO_FPIE_AND_FPIC_SPEC ":;" #else #define PIE_SPEC "pie" -#define NO_PIE_SPEC PIE_SPEC "|r|shared:;" #define FPIE1_SPEC "fpie" #define NO_FPIE1_SPEC FPIE1_SPEC ":;" #define FPIE2_SPEC "fPIE" @@ -923,7 +921,7 @@ #else #define LD_PIE_SPEC "" #endif -#define LINK_PIE_SPEC "%{no-pie:} " "%{" PIE_SPEC ":" LD_PIE_SPEC "} " +#define LINK_PIE_SPEC "%{static|shared|r:;" PIE_SPEC ":" LD_PIE_SPEC "} " #endif #ifndef LINK_BUILDID_SPEC @@ -1011,8 +1009,10 @@ #endif /* -u* was put back because both BSD and SysV seem to support it. */ -/* %{static:} simply prevents an error message if the target machine - doesn't handle -static. */ +/* %{static|no-pie:} simply prevents an error message: + 1. If the target machine doesn't handle -static. + 2. If PIE isn't enabled by default. + */ /* We want %{T*} after %{L*} and %D so that it can be used to specify linker scripts which exist in user specified directories, or in standard directories. */ @@ -1029,7 +1029,7 @@ "%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \ "%X %{o*} %{e*} %{N} %{n} %{r}\ %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} \ - %{static:} %{L*} %(mfwrap) %(link_libgcc) " \ + %{static|no-pie:} %{L*} %(mfwrap) %(link_libgcc) " \ VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o " CHKP_SPEC " \ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\ %:include(libgomp.spec)%(link_gomp)}\ @@ -3742,7 +3742,8 @@ unsigned int lang_mask ATTRIBUTE_UNUSED, int kind, location_t loc, const struct cl_option_handlers *handlers ATTRIBUTE_UNUSED, - diagnostic_context *dc) + diagnostic_context *dc, + void (*) (void)) { size_t opt_index = decoded->opt_index; const char *arg = decoded->arg; Index: gcc/fold-const.c =================================================================== --- gcc/fold-const.c (.../tags/gcc_7_2_0_release) +++ gcc/fold-const.c (.../branches/gcc-7-branch) @@ -877,6 +877,13 @@ } } + if (*litp + && TREE_OVERFLOW_P (*litp)) + *litp = drop_tree_overflow (*litp); + if (*minus_litp + && TREE_OVERFLOW_P (*minus_litp)) + *minus_litp = drop_tree_overflow (*minus_litp); + return var; } @@ -6175,6 +6182,7 @@ t1 = extract_muldiv (op0, c, code, wide_type, &sub_strict_overflow_p); t2 = extract_muldiv (op1, c, code, wide_type, &sub_strict_overflow_p); if (t1 != 0 && t2 != 0 + && TYPE_OVERFLOW_WRAPS (ctype) && (code == MULT_EXPR /* If not multiplication, we can only do this if both operands are divisible by c. */ @@ -6237,11 +6245,6 @@ if (TYPE_UNSIGNED (ctype) && ctype != type) break; - /* If we were able to eliminate our operation from the first side, - apply our operation to the second side and reform the PLUS. */ - if (t1 != 0 && (TREE_CODE (t1) != code || code == MULT_EXPR)) - return fold_build2 (tcode, ctype, fold_convert (ctype, t1), op1); - /* The last case is if we are a multiply. In that case, we can apply the distributive law to commute the multiply and addition if the multiplication of the constants doesn't overflow @@ -7200,15 +7203,10 @@ static int native_encode_string (const_tree expr, unsigned char *ptr, int len, int off) { - tree type = TREE_TYPE (expr); - HOST_WIDE_INT total_bytes; + if (! can_native_encode_string_p (expr)) + return 0; - if (TREE_CODE (type) != ARRAY_TYPE - || TREE_CODE (TREE_TYPE (type)) != INTEGER_TYPE - || GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (type))) != BITS_PER_UNIT - || !tree_fits_shwi_p (TYPE_SIZE_UNIT (type))) - return 0; - total_bytes = tree_to_shwi (TYPE_SIZE_UNIT (type)); + HOST_WIDE_INT total_bytes = tree_to_shwi (TYPE_SIZE_UNIT (TREE_TYPE (expr))); if ((off == -1 && total_bytes > len) || off >= total_bytes) return 0; @@ -7502,6 +7500,22 @@ } } +/* Return true iff a STRING_CST S is accepted by + native_encode_expr. */ + +bool +can_native_encode_string_p (const_tree expr) +{ + tree type = TREE_TYPE (expr); + + if (TREE_CODE (type) != ARRAY_TYPE + || TREE_CODE (TREE_TYPE (type)) != INTEGER_TYPE + || (GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (type))) != BITS_PER_UNIT) + || !tree_fits_shwi_p (TYPE_SIZE_UNIT (type))) + return false; + return true; +} + /* Fold a VIEW_CONVERT_EXPR of a constant expression EXPR to type TYPE at compile-time. If we're unable to perform the conversion return NULL_TREE. */ @@ -8879,7 +8893,7 @@ tree op0 = fold_convert_loc (loc, type, TREE_OPERAND (aref0, 1)); tree op1 = fold_convert_loc (loc, type, TREE_OPERAND (aref1, 1)); tree esz = fold_convert_loc (loc, type, array_ref_element_size (aref0)); - tree diff = build2 (MINUS_EXPR, type, op0, op1); + tree diff = fold_build2_loc (loc, MINUS_EXPR, type, op0, op1); return fold_build2_loc (loc, PLUS_EXPR, type, base_offset, fold_build2_loc (loc, MULT_EXPR, type, @@ -9638,11 +9652,6 @@ + (lit0 != 0) + (lit1 != 0) + (minus_lit0 != 0) + (minus_lit1 != 0)))) { - bool any_overflows = false; - if (lit0) any_overflows |= TREE_OVERFLOW (lit0); - if (lit1) any_overflows |= TREE_OVERFLOW (lit1); - if (minus_lit0) any_overflows |= TREE_OVERFLOW (minus_lit0); - if (minus_lit1) any_overflows |= TREE_OVERFLOW (minus_lit1); var0 = associate_trees (loc, var0, var1, code, atype); con0 = associate_trees (loc, con0, con1, code, atype); lit0 = associate_trees (loc, lit0, lit1, code, atype); @@ -9673,9 +9682,8 @@ } /* Don't introduce overflows through reassociation. */ - if (!any_overflows - && ((lit0 && TREE_OVERFLOW_P (lit0)) - || (minus_lit0 && TREE_OVERFLOW_P (minus_lit0)))) + if ((lit0 && TREE_OVERFLOW_P (lit0)) + || (minus_lit0 && TREE_OVERFLOW_P (minus_lit0))) return NULL_TREE; if (minus_lit0) Index: gcc/fold-const.h =================================================================== --- gcc/fold-const.h (.../tags/gcc_7_2_0_release) +++ gcc/fold-const.h (.../branches/gcc-7-branch) @@ -28,6 +28,7 @@ extern int native_encode_expr (const_tree, unsigned char *, int, int off = -1); extern tree native_interpret_expr (tree, const unsigned char *, int); extern bool can_native_encode_type_p (tree); +extern bool can_native_encode_string_p (const_tree); /* Fold constants as much as possible in an expression. Returns the simplified expression. Index: gcc/omp-low.c =================================================================== --- gcc/omp-low.c (.../tags/gcc_7_2_0_release) +++ gcc/omp-low.c (.../branches/gcc-7-branch) @@ -800,6 +800,8 @@ if (TREE_CODE (var) == LABEL_DECL) { + if (FORCED_LABEL (var) || DECL_NONLOCAL (var)) + return var; new_var = create_artificial_label (DECL_SOURCE_LOCATION (var)); DECL_CONTEXT (new_var) = current_function_decl; insert_decl_map (&ctx->cb, var, new_var); @@ -6925,10 +6927,14 @@ rhs_p = gimple_omp_for_initial_ptr (stmt, i); if (!is_gimple_min_invariant (*rhs_p)) *rhs_p = get_formal_tmp_var (*rhs_p, &body); + else if (TREE_CODE (*rhs_p) == ADDR_EXPR) + recompute_tree_invariant_for_addr_expr (*rhs_p); rhs_p = gimple_omp_for_final_ptr (stmt, i); if (!is_gimple_min_invariant (*rhs_p)) *rhs_p = get_formal_tmp_var (*rhs_p, &body); + else if (TREE_CODE (*rhs_p) == ADDR_EXPR) + recompute_tree_invariant_for_addr_expr (*rhs_p); rhs_p = &TREE_OPERAND (gimple_omp_for_incr (stmt, i), 1); if (!is_gimple_min_invariant (*rhs_p)) @@ -9089,7 +9095,7 @@ } if (kind == NULL) { - gcc_checking_assert (flag_openmp); + gcc_checking_assert (flag_openmp || flag_openmp_simd); kind = "OpenMP"; } @@ -9349,7 +9355,7 @@ /* opt_pass methods: */ virtual bool gate (function *) { - return flag_cilkplus || flag_openacc || flag_openmp; + return flag_cilkplus || flag_openacc || flag_openmp || flag_openmp_simd; } virtual unsigned int execute (function *) { Index: gcc/toplev.c =================================================================== --- gcc/toplev.c (.../tags/gcc_7_2_0_release) +++ gcc/toplev.c (.../branches/gcc-7-branch) @@ -2115,7 +2115,8 @@ enough to default flags appropriately. */ decode_options (&global_options, &global_options_set, save_decoded_options, save_decoded_options_count, - UNKNOWN_LOCATION, global_dc); + UNKNOWN_LOCATION, global_dc, + targetm.target_option.override); handle_common_deferred_options (); Index: gcc/tree-ssa-sccvn.c =================================================================== --- gcc/tree-ssa-sccvn.c (.../tags/gcc_7_2_0_release) +++ gcc/tree-ssa-sccvn.c (.../branches/gcc-7-branch) @@ -2304,7 +2304,7 @@ memset (&op, 0, sizeof (op)); op.type = vr->type; op.opcode = MEM_REF; - op.op0 = build_int_cst (ptr_type_node, at - rhs_offset); + op.op0 = build_int_cst (ptr_type_node, at - lhs_offset + rhs_offset); op.off = at - lhs_offset + rhs_offset; vr->operands[0] = op; op.type = TREE_TYPE (rhs); @@ -2990,16 +2990,13 @@ return false; /* Verify the controlling stmt is the same. */ - gimple *last1 = last_stmt (idom1); - gimple *last2 = last_stmt (idom2); - if (gimple_code (last1) != GIMPLE_COND - || gimple_code (last2) != GIMPLE_COND) + gcond *last1 = safe_dyn_cast (last_stmt (idom1)); + gcond *last2 = safe_dyn_cast (last_stmt (idom2)); + if (! last1 || ! last2) return false; bool inverted_p; - if (! cond_stmts_equal_p (as_a (last1), - vp1->cclhs, vp1->ccrhs, - as_a (last2), - vp2->cclhs, vp2->ccrhs, + if (! cond_stmts_equal_p (last1, vp1->cclhs, vp1->ccrhs, + last2, vp2->cclhs, vp2->ccrhs, &inverted_p)) return false; @@ -3084,7 +3081,7 @@ vp1.ccrhs = NULL_TREE; basic_block idom1 = get_immediate_dominator (CDI_DOMINATORS, vp1.block); if (EDGE_COUNT (idom1->succs) == 2) - if (gcond *last1 = dyn_cast (last_stmt (idom1))) + if (gcond *last1 = safe_dyn_cast (last_stmt (idom1))) { vp1.cclhs = vn_valueize (gimple_cond_lhs (last1)); vp1.ccrhs = vn_valueize (gimple_cond_rhs (last1)); @@ -3130,7 +3127,7 @@ vp1->ccrhs = NULL_TREE; basic_block idom1 = get_immediate_dominator (CDI_DOMINATORS, vp1->block); if (EDGE_COUNT (idom1->succs) == 2) - if (gcond *last1 = dyn_cast (last_stmt (idom1))) + if (gcond *last1 = safe_dyn_cast (last_stmt (idom1))) { vp1->cclhs = vn_valueize (gimple_cond_lhs (last1)); vp1->ccrhs = vn_valueize (gimple_cond_rhs (last1)); Index: gcc/ChangeLog =================================================================== --- gcc/ChangeLog (.../tags/gcc_7_2_0_release) +++ gcc/ChangeLog (.../branches/gcc-7-branch) @@ -1,3 +1,623 @@ +2017-10-06 Christophe Lyon + + Backport from mainline r253242. + 2017-09-27 Christophe Lyon + + PR target/71727 + * config/aarch64/aarch64.c + (aarch64_builtin_support_vector_misalignment): Always return false + when misalignment is unknown. + +2017-10-04 Jason Merrill + + PR c++/82406 - C++ error with noexcept function type + PR c++/70029 - ICE with ref-qualifier and -flto + * langhooks.h (struct lang_hooks_for_types): Add + copy_lang_qualifiers. + * attribs.c (build_type_attribute_qual_variant): Use it. + * langhooks-def.h (LANG_HOOKS_COPY_LANG_QUALIFIERS): Default to + NULL. + (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it. + * tree.c (verify_type): Re-enable TYPE_CANONICAL main variant check. + +2017-10-02 Bill Schmidt + + Backport from mainline + 2017-09-29 Bill Schmidt + + PR tree-optimization/82337 + * gimple-ssa-strength-reduction.c (find_phi_def): Don't record a + phi definition if the PHI result appears in an abnormal PHI. + (find_basis_for_base_expr): Don't record a basis if the LHS of the + basis appears in an abnormal PHI. + +2017-09-30 Jakub Jelinek + + * config/i386/i386.c (ix86_split_idivmod): Use mode instead of + always SImode for DIV and MOD in REG_EQUAL notes. + + Backported from mainline + 2017-09-27 Jakub Jelinek + + PR c++/82159 + * gimplify.c (gimplify_modify_expr): Don't optimize away zero sized + lhs from calls if the lhs has addressable type. + +2017-09-29 Krister Walfridsson + + Backport from mainline + 2017-06-29 Maya Rashish + + PR target/77480 + * config/netbsd.h (NETBSD_LIB_SPEC): Add -lc when creating shared + objects. + +2017-09-29 Krister Walfridsson + + Backport from mainline + 2017-09-26 Krister Walfridsson + + PR target/39570 + * gcc/config/netbsd-protos.h: New file. + * gcc/config/netbsd.c: New file. + * gcc/config/netbsd.h (SUBTARGET_INIT_BUILTINS): Define. + * gcc/config/t-netbsd: New file. + * gcc/config.gcc (tm_p_file): Add netbsd-protos.h. + (tmake_file) Add t-netbsd. + (extra_objs) Add netbsd.o. + +2017-09-28 Krister Walfridsson + + Backport from mainline + 2017-05-14 Krister Walfridsson + + PR target/80600 + * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always add -lgcc. + +2017-09-27 Christophe Lyon + + Backport from trunk r249639. + 2017-06-26 Christophe Lyon + + * doc/sourcebuild.texi (ARM-specific attributes): Document new + arm_neon_ok_no_float_abi effective target. + +2017-09-26 Richard Biener + + Backport from mainline + 2017-09-19 Richard Biener + + PR tree-optimization/82244 + * tree-vrp.c (remove_range_assertions): Do not propagate + a constant to abnormals but replace the assert with a copy. + + 2017-09-21 Richard Biener + + PR tree-optimization/82276 + PR tree-optimization/82244 + * tree-vrp.c (build_assert_expr_for): Set + SSA_NAME_OCCURS_IN_ABNORMAL_PHI if the variable we assert on + has it set. + (remove_range_assertions): Revert earlier change. + + 2017-09-20 Richard Biener + + PR tree-optimization/82264 + * tree-ssa-sccvn.c (vn_phi_eq): Use safe_dyn_cast to check + for GIMPLE_CONDs. + (vn_phi_lookup): Likewise. + (vn_phi_insert): Likewise. + * is-a.h (safe_dyn_cast): New. + + 2017-09-25 Richard Biener + + PR tree-optimization/82285 + * tree-vect-patterns.c (vect_recog_bool_pattern): Also handle + enumeral types. + + 2017-09-22 Richard Biener + + PR tree-optimization/82291 + * tree-if-conv.c (predicate_mem_writes): Make sure to + remove writes in blocks predicated with false. + +2017-09-21 Alan Modra + + PR target/81996 + * gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use + stack_pointer_rtx for count 0. Update comments. Break up + large rtl expression. + +2017-09-21 Wilco Dijkstra + + PR target/71951 + * config/aarch64/aarch64.h (LIBGCC2_UNWIND_ATTRIBUTE): Define. + +2017-09-19 Uros Bizjak + + * config/i386/i386.c (fold_builtin_cpu): Add M_AMDFAM17H + to processor_model and "amdfam17h" to arch_names_table. + * doc/extend.texi (__builtin_cpu_is): Document amdfam17h CPU name. + +2017-09-19 Martin Liska + + PR c++/81355 + * config/i386/i386.c (sorted_attr_string): Skip empty strings. + +2017-09-19 Martin Liska + + Revert backport: + 2017-08-10 Martin Liska + + PR c++/81355 + * c-attribs.c (handle_target_attribute): + Report warning for an empty string argument of target attribute. + +2017-09-18 Richard Biener + + Backport from mainline + 2017-09-04 Richard Biener + + PR tree-optimization/82084 + * fold-const.h (can_native_encode_string_p): Declare. + * fold-const.c (can_native_encode_string_p): Factor out from ... + (native_encode_string): ... here. + * tree-vect-stmts.c (vectorizable_store): Call it to avoid + vectorizing stores from constants we later cannot handle. + + 2017-09-06 Richard Biener + + PR tree-optimization/82108 + * tree-vect-stmts.c (vectorizable_load): Fix pointer adjustment + for gap in the non-permutation SLP case. + +2017-09-15 Jakub Jelinek + + Backported from mainline + 2017-09-14 Jakub Jelinek + + PR target/81325 + * cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions + if and where to split a bb, except for splitting before debug insn + sequences followed by non-label real insn. Delete debug insns + in between basic blocks. + + 2017-09-12 Jakub Jelinek + + PR target/82112 + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For + ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion + on it early, rather than manual conversion late. For + ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion + instead of performing manual conversion. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-09-14 Martin Liska + + * gimple-ssa-strength-reduction.c (create_add_on_incoming_edge): + Add proper printf format. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-08-30 Martin Liska + + PR inline-asm/82001 + * ipa-icf-gimple.c (func_checker::compare_tree_list_operand): + Rename to ... + (func_checker::compare_asm_inputs_outputs): ... this function. + (func_checker::compare_gimple_asm): Use the function to compare + also ASM constrains. + * ipa-icf-gimple.h: Rename the function. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-08-29 Martin Liska + + PR other/39851 + * gcc.c (driver_handle_option): Add new argument. + * opts-common.c (handle_option): Pass + target_option_override_hook. + * opts-global.c (lang_handle_option): Add new option. + (set_default_handlers): Add new argument. + (decode_options): Likewise. + * opts.c (target_handle_option): Likewise. + (common_handle_option): Call target_option_override_hook. + * opts.h (struct cl_option_handler_func): Add hook for + target option override. + (struct cl_option_handlers): Likewise. + (set_default_handlers): Add new argument. + (decode_options): Likewise. + (common_handle_option): Likewise. + (target_handle_option): Likewise. + * toplev.c (toplev::main): Pass targetm.target_option.override + hook. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-08-10 Martin Liska + + PR c++/81355 + * c-attribs.c (handle_target_attribute): + Report warning for an empty string argument of target attribute. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-08-08 Martin Liska + + PR tree-opt/81696 + * ipa-icf-gimple.c (func_checker::compare_cst_or_decl): Consider + LABEL_DECLs that can be from a different function. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-06-28 Martin Liska + + PR ipa/81128 + * ipa-visibility.c (non_local_p): Handle visibility. + +2017-09-12 Bill Schmidt + + Backport from mainline + 2017-09-05 Bill Schmidt + + PR target/81833 + * config/rs6000/altivec.md (altivec_vsum2sws): Convert from a + define_insn to a define_expand. + (altivec_vsum2sws_direct): New define_insn. + (altivec_vsumsws): Convert from a define_insn to a define_expand. + +2017-09-11 Max Filippov + + Backport from mainline + PR target/82181 + * config/xtensa/xtensa.c (xtensa_mem_offset): Check that both + words of DImode object are reachable by xtensa_uimm8x4 access. + +2017-09-10 Bill Schmidt + + Backport from mainline + 2017-05-11 Bill Schmidt + + PR target/80695 + * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): + Account for direct move costs for vec_construct of integer + vectors. + + Backport from mainline + 2017-07-23 Bill Schmidt + + PR target/80695 + * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): + Reduce cost estimate for direct moves. + +2017-09-08 Eric Botcazou + + PR target/81988 + * config/sparc/sparc.md (mulsi3): Rename into *mulsi3_sp32. + (*mulsi3_sp64): New instruction. + (mulsi3): New expander. + +2017-09-07 Jakub Jelinek + + Backported from mainline + 2017-09-05 Jakub Jelinek + + PR middle-end/81768 + * omp-low.c (lower_omp_for): Recompute tree invariant if + gimple_omp_for_initial/final is ADDR_EXPR. + + PR middle-end/81768 + * omp-expand.c (expand_omp_simd): Force second operands of COND_EXPR + into gimple val before gimplification fo the COND_EXPR. + + 2017-09-04 Jakub Jelinek + + * lra-remat.c (reg_overlap_for_remat_p): Fix a pasto. + + 2017-09-01 Jakub Jelinek + + PR sanitizer/81923 + * asan.c (create_odr_indicator): Strip name encoding from assembler + name before appending it after __odr_asan_. + + 2017-08-09 Jakub Jelinek + + PR c/81687 + * omp-low.c (omp_copy_decl): Don't remap FORCED_LABEL or DECL_NONLOCAL + LABEL_DECLs. + * tree-cfg.c (move_stmt_op): Don't adjust DECL_CONTEXT of FORCED_LABEL + or DECL_NONLOCAL labels. + (move_stmt_r) : Adjust DECL_CONTEXT of FORCED_LABEL + or DECL_NONLOCAL labels here. + + 2017-08-03 Jakub Jelinek + + PR target/81621 + * bb-reorder.c (pass_partition_blocks::execute): Return TODO_df_finish + after setting changeable df flags. + + PR driver/81650 + * calls.c (alloc_max_size): Use HOST_WIDE_INT_UC (10??) + instead of 10??LU, perform unit multiplication in wide_int, + don't change alloc_object_size_limit if the limit is larger + than SSIZE_MAX. + + PR middle-end/81052 + * omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp. + (pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd. + +2017-09-06 Bill Schmidt + + Backport from mainline: + 2017-08-30 Bill Schmidt + + PR tree-optimization/81987 + * gimple-ssa-strength-reduction.c (insert_initializers): Don't + insert an initializer in a location not dominated by the stride + definition. + +2017-09-05 Bill Schmidt + + Backport from mainline + 2017-08-29 Bill Schmidt + Jakub Jelinek + Richard Biener + + PR tree-optimization/81503 + * gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure + folded constant fits in the target type; reorder tests for clarity. + +2017-09-05 Pierre-Marie de Rodat + + Backport from trunk + PR ada/79542 + * dwarf2out.c (modified_type_die): For C typedef types that have + an ultimate origin, process the ultimate origin instead of the + input type. + (gen_typedef_die): Assert that input DECLs have no ultimate + origin. + (gen_type_die_with_usage): For typedef variants that have an + ultimate origin, just call gen_decl_die on the original DECL. + (process_scope_var): Avoid creating DIEs for local typedefs and + concrete static variables. + +2017-08-31 Bill Schmidt + + Backport from mainline + 2017-08-25 Bill Schmidt + + PR target/81504 + * config/rs6000/rs6000.c (find_alignment_op): Add reference + parameter and_insn and return it. + (recombine_lvx_pattern): Insert a copy to ensure availability of + the base register of the copied masking operation at the point of + the instruction replacement. + (recombine_stvx_pattern): Likewise. + +2017-08-29 Michael Meissner + + Back port from trunk + 2017-08-07 Michael Meissner + + PR target/81593 + * config/rs6000/vsx.md (vsx_concat__1): New combiner insns + to recognize inserting into a vector from a double word element + that was extracted from another vector, and eliminate extra + XXPERMDI instructions. + (vsx_concat__2): Likewise. + (vsx_concat__3): Likewise. + (vsx_set_, VSX_D): Rewrite vector set in terms of vector + concat to allow optimizing inserts from previous extracts. + +2017-08-29 Alan Modra + + Apply from mainline + 2017-08-12 Alan Modra + PR target/81170 + PR target/81295 + * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Upgrade to + match gnu-user.h startfile. + (ENDFILE_LINUX_SPEC): Similarly. + + 2017-08-08 Alan Modra + H.J. Lu + PR target/81170 + PR target/81295 + PR driver/81523 + * gcc.c (NO_PIE_SPEC): Delete. + (PIE_SPEC): Define as !no-pie/pie. Move static|shared|r + exclusion.. + (LINK_PIE_SPEC): ..to here. + (LINK_COMMAND_SPEC): Support -no-pie. + * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Correct + chain of crtbegin*.o selection, update for PIE_SPEC changes and + format. + (GNU_USER_TARGET_ENDFILE_SPEC): Similarly. + * config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Similarly. + (ENDFILE_CRTEND_SPEC): Similarly. + +2017-08-29 Richard Biener + + Backport from mainline + 2017-08-28 Richard Biener + + PR tree-optimization/81977 + * tree-ssa-sccvn.c (vn_reference_lookup_3): Fix look through + memcpy. + + 2017-08-28 Richard Biener + + PR debug/81993 + * dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes): + Do nothing for removed DIEs. + +2017-08-28 Richard Biener + + Backport from mainline + 2017-06-14 Richard Biener + + PR middle-end/81088 + * fold-const.c (split_tree): Drop TREE_OVERFLOW flag from + literal constants. + (fold_binary_loc): When associating do not treat pre-existing + TREE_OVERFLOW on literal constants as a reason to allow + TREE_OVERFLOW on associated literal constants. + + 2017-06-13 Richard Biener + + PR middle-end/81065 + * fold-const.c (extract_muldiv_1): Remove bogus distribution + case of C * (x * C2 + C3). + (fold_addr_of_array_ref_difference): Properly fold index difference. + + 2017-06-07 Marek Polacek + + PR sanitizer/80932 + * fold-const.c (extract_muldiv_1) : Add + TYPE_OVERFLOW_WRAPS check. + +2017-08-28 Richard Biener + + Backport from mainline + 2017-08-21 Richard Biener + + PR middle-end/81884 + * tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses + at struct end conservatively when comparing common bases. + + 2017-05-04 Richard Biener + + * tree.c (array_at_struct_end_p): Handle arrays at struct + end with flexarrays more conservatively. Refactor and treat + arrays of arrays or aggregates more strict. Fix + VIEW_CONVERT_EXPR handling. Remove allow_compref argument. + * tree.h (array_at_struct_end_p): Adjust prototype. + * gimple-fold.c (get_range_strlen): Likewise. + * tree-chkp.c (chkp_may_narrow_to_field): Likewise. + +2017-08-28 Richard Biener + + Backport from mainline + 2017-08-01 Richard Biener + + PR tree-optimization/81181 + * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ... + (compute_antic): ... end of iteration here. + + 2017-08-08 Richard Biener + + PR tree-optimization/81723 + * tree-vect-slp.c (struct bst_traits): New hash traits. + (bst_fail): New global. + (vect_build_slp_tree_2): New worker, split out from ... + (vect_build_slp_tree): ... this now wrapping it with using + bst_fail set to cache SLP tree build fails. Properly handle + max_tree_size. + (vect_analyze_slp_instance): Allocate and free bst_fail. + + 2017-08-24 Richard Biener + + PR target/81921 + * config/i386/i386.c: Include symbol-summary.h, ipa-prop.h + and ipa-inline.h. + (ix86_can_inline_p): When ix86_fpmath flags do not match + check whether the callee uses FP math at all. + +2017-08-23 Peter Bergner + + Backport from mainline + 2017-08-17 Peter Bergner + + PR target/72804 + * config/rs6000/vsx.md (*vsx_le_permute_): Add support for + operands residing in integer registers. + (*vsx_le_perm_load_): Likewise. + (*vsx_le_perm_store_): Likewise. + (define_peephole2): Add peepholes to optimize the above. + +2017-08-22 Peter Bergner + + Backport from mainline + 2017-08-17 Peter Bergner + + PR target/80210 + * config/rs6000/rs6000.c (rs6000_activate_target_options): New function. + (rs6000_set_current_function): Rewrite function to use it. + +2017-08-22 Sebastian Huber + + Backport from mainline + 2017-08-22 Sebastian Huber + + * config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt. + * config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define. + (DOT_SYMBOLS): Likewise. + (MINIMAL_TOC_SECTION_ASM_OP): Likewise. + (RELOCATABLE_NEEDS_FIXUP): Likewise. + (RS6000_ABI_NAME): Likewise. + (TARGET_CMODEL): Likewise. + (TOC_SECTION_ASM_OP): Likewise. + (SET_CMODEL): New macro. + (SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options. + +2017-08-22 Georg-Johann Lay + + Backport from 2017-08-22 trunk r251256. + + PR target/81910 + * config/avr/avr.c (avr_handle_addr_attribute): Early return if + not VAR_P. Filter attribute warnings with OPT_Wattributes. + (avr_attribute_table) : Initialize + .decl_required with true. + +2017-08-21 Georg-Johann Lay + + PR target/79883 + * config/avr/avr.c (avr_set_current_function): Typo in diagnostic. + +2017-08-19 Uros Bizjak + + PR target/81894 + * doc/extend.texi (x86 Built-in Functions): Correct the name of + __builtin_ia32_lzcnt_u16. + +2017-08-17 Uros Bizjak + + Backport from mainline + 2017-08-17 Maxim Ostapenko + + PR target/81861 + * config/i386/i386.c (ix86_option_override_internal): Save target + specific options after ix86_stack_protector_guard_reg was changed. + +2017-08-16 Bill Schmidt + + Backport from mainline + 2017-08-08 Bill Schmidt + + PR tree-optimization/81354 + * gimple-ssa-strength-reduction.c (create_add_on_incoming_edge): + Insert on edges rather than explicitly creating landing pads. + (analyze_candidates_and_replace): Commit edge inserts. + +2017-08-15 Joseph Myers + + PR target/78460 + PR target/67712 + * config/sh/sh-mem.cc (sh_expand_cmpnstr): Only unroll for + constant count if that count is less than 32. + +2017-08-14 Richard Biener + + * BASE-VER: Set to 7.2.1. + 2017-08-14 Release Manager * GCC 7.2.0 released. Index: gcc/testsuite/gcc.target/powerpc/pr81833-1.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/pr81833-1.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/pr81833-1.c (.../branches/gcc-7-branch) @@ -0,0 +1,59 @@ +/* PR81833: This used to fail due to improper implementation of vec_msum. */ +/* Test case relies on -mcpu=power7 or later. Currently we don't have + machinery to express that, so we have two separate tests for -mcpu=power7 + and -mcpu=power8 to catch 32-bit BE on P7 and 64-bit BE/LE on P8. */ + +/* { dg-do run } */ +/* { dg-require-effective-target p8vector_hw } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ +/* { dg-options "-mcpu=power8 -O2" } */ + +#include + +#define vec_u8 vector unsigned char +#define vec_s8 vector signed char +#define vec_u16 vector unsigned short +#define vec_s16 vector signed short +#define vec_u32 vector unsigned int +#define vec_s32 vector signed int +#define vec_f vector float + +#define LOAD_ZERO const vec_u8 zerov = vec_splat_u8 (0) + +#define zero_u8v (vec_u8) zerov +#define zero_s8v (vec_s8) zerov +#define zero_u16v (vec_u16) zerov +#define zero_s16v (vec_s16) zerov +#define zero_u32v (vec_u32) zerov +#define zero_s32v (vec_s32) zerov + +signed int __attribute__((noinline)) +scalarproduct_int16_vsx (const signed short *v1, const signed short *v2, + int order) +{ + int i; + LOAD_ZERO; + register vec_s16 vec1; + register vec_s32 res = vec_splat_s32 (0), t; + signed int ires; + + for (i = 0; i < order; i += 8) { + vec1 = vec_vsx_ld (0, v1); + t = vec_msum (vec1, vec_vsx_ld (0, v2), zero_s32v); + res = vec_sums (t, res); + v1 += 8; + v2 += 8; + } + res = vec_splat (res, 3); + vec_ste (res, 0, &ires); + + return ires; +} + +int main(void) +{ + const signed short test_vec[] = { 1, 1, 1, 1, 1, 1, 1, 1 }; + if (scalarproduct_int16_vsx (test_vec, test_vec, 8) != 8) + __builtin_abort (); + return 0; +} Index: gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/vec-setup-be-long.c (.../branches/gcc-7-branch) @@ -0,0 +1,11 @@ +/* { dg-do run { target { powerpc64le*-*-linux* } } } */ +/* { dg-require-effective-target vsx_hw } */ +/* { dg-options "-O2 -mvsx -maltivec=be" } */ + +/* Test various ways of creating vectors with 2 double words and accessing the + elements. This test uses the long (on 64-bit systems) or long long datatype + (on 32-bit systems). + + This test explicitly tests -maltivec=be to make sure things are correct. */ + +#include "vec-setup.h" Index: gcc/testsuite/gcc.target/powerpc/pr81833-2.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/pr81833-2.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/pr81833-2.c (.../branches/gcc-7-branch) @@ -0,0 +1,59 @@ +/* PR81833: This used to fail due to improper implementation of vec_msum. */ +/* Test case relies on -mcpu=power7 or later. Currently we don't have + machinery to express that, so we have two separate tests for -mcpu=power7 + and -mcpu=power8 to catch 32-bit BE on P7 and 64-bit BE/LE on P8. */ + +/* { dg-do run } */ +/* { dg-require-effective-target vsx_hw } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */ +/* { dg-options "-mcpu=power7 -O2" } */ + +#include + +#define vec_u8 vector unsigned char +#define vec_s8 vector signed char +#define vec_u16 vector unsigned short +#define vec_s16 vector signed short +#define vec_u32 vector unsigned int +#define vec_s32 vector signed int +#define vec_f vector float + +#define LOAD_ZERO const vec_u8 zerov = vec_splat_u8 (0) + +#define zero_u8v (vec_u8) zerov +#define zero_s8v (vec_s8) zerov +#define zero_u16v (vec_u16) zerov +#define zero_s16v (vec_s16) zerov +#define zero_u32v (vec_u32) zerov +#define zero_s32v (vec_s32) zerov + +signed int __attribute__((noinline)) +scalarproduct_int16_vsx (const signed short *v1, const signed short *v2, + int order) +{ + int i; + LOAD_ZERO; + register vec_s16 vec1; + register vec_s32 res = vec_splat_s32 (0), t; + signed int ires; + + for (i = 0; i < order; i += 8) { + vec1 = vec_vsx_ld (0, v1); + t = vec_msum (vec1, vec_vsx_ld (0, v2), zero_s32v); + res = vec_sums (t, res); + v1 += 8; + v2 += 8; + } + res = vec_splat (res, 3); + vec_ste (res, 0, &ires); + + return ires; +} + +int main(void) +{ + const signed short test_vec[] = { 1, 1, 1, 1, 1, 1, 1, 1 }; + if (scalarproduct_int16_vsx (test_vec, test_vec, 8) != 8) + __builtin_abort (); + return 0; +} Index: gcc/testsuite/gcc.target/powerpc/pr82112.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/pr82112.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/pr82112.c (.../branches/gcc-7-branch) @@ -0,0 +1,16 @@ +/* PR target/82112 */ +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec -std=gnu90" } */ + +#include + +struct __attribute__((aligned (16))) S { unsigned char c[64]; } bar (void); +vector unsigned char v; + +void +foo (void) +{ + vec_ld (0, bar ().c); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ + vec_st (v, 0, bar ().c); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */ +} Index: gcc/testsuite/gcc.target/powerpc/vec-setup.h =================================================================== --- gcc/testsuite/gcc.target/powerpc/vec-setup.h (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/vec-setup.h (.../branches/gcc-7-branch) @@ -0,0 +1,366 @@ +#include + +/* Test various ways of creating vectors with 2 double words and accessing the + elements. This include files supports: + + testing double + testing long on 64-bit systems + testing long long on 32-bit systems. + + The endian support is: + + big endian + little endian with little endian element ordering + little endian with big endian element ordering. */ + +#ifdef DEBUG +#include +#define DEBUG0(STR) fputs (STR, stdout) +#define DEBUG2(STR,A,B) printf (STR, A, B) + +static int errors = 0; + +#else +#include +#define DEBUG0(STR) +#define DEBUG2(STR,A,B) +#endif + +#if defined(DO_DOUBLE) +#define TYPE double +#define STYPE "double" +#define ZERO 0.0 +#define ONE 1.0 +#define TWO 2.0 +#define THREE 3.0 +#define FOUR 4.0 +#define FIVE 5.0 +#define SIX 6.0 +#define FMT "g" + +#elif defined(_ARCH_PPC64) +#define TYPE long +#define STYPE "long" +#define ZERO 0L +#define ONE 1L +#define TWO 2L +#define THREE 3L +#define FOUR 4L +#define FIVE 5L +#define SIX 6L +#define FMT "ld" + +#else +#define TYPE long long +#define STYPE "long long" +#define ZERO 0LL +#define ONE 1LL +#define TWO 2LL +#define THREE 3LL +#define FOUR 4LL +#define FIVE 5LL +#define SIX 6LL +#define FMT "lld" +#endif + +/* Macros to order the left/right values correctly. Note, -maltivec=be does + not change the order for static initializations, so we have to handle it + specially. */ + +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define INIT_ORDER(A, B) (TYPE) A, (TYPE) B +#define ELEMENT_ORDER(A, B) (TYPE) A, (TYPE) B +#define ENDIAN "-mbig" + +#elif __VEC_ELEMENT_REG_ORDER__ == __ORDER_BIG_ENDIAN__ +#define NO_ARRAY +#define INIT_ORDER(A, B) (TYPE) B, (TYPE) A +#define ELEMENT_ORDER(A, B) (TYPE) A, (TYPE) B +#define ENDIAN "-mlittle -maltivec=be" + +#else +#define INIT_ORDER(A, B) (TYPE) B, (TYPE) A +#define ELEMENT_ORDER(A, B) (TYPE) B, (TYPE) A +#define ENDIAN "-mlittle" +#endif + +static volatile TYPE five = FIVE; +static volatile TYPE six = SIX; +static volatile vector TYPE s_v12 = { ONE, TWO }; +static volatile vector TYPE g_v34 = { THREE, FOUR }; + + +__attribute__((__noinline__)) +static void +vector_check (vector TYPE v, TYPE expect_hi, TYPE expect_lo) +{ + TYPE actual_hi, actual_lo; +#ifdef DEBUG + const char *pass_fail; +#endif + + __asm__ ("xxlor %x0,%x1,%x1" : "=&wa" (actual_hi) : "wa" (v)); + __asm__ ("xxpermdi %x0,%x1,%x1,3" : "=&wa" (actual_lo) : "wa" (v)); + +#ifdef DEBUG + if ((actual_hi == expect_hi) && (actual_lo == expect_lo)) + pass_fail = ", pass"; + else + { + pass_fail = ", fail"; + errors++; + } + + printf ("Expected %" FMT ", %" FMT ", got %" FMT ", %" FMT "%s\n", + expect_hi, expect_lo, + actual_hi, actual_lo, + pass_fail); +#else + if ((actual_hi != expect_hi) || (actual_lo != expect_lo)) + abort (); +#endif +} + +__attribute__((__noinline__)) +static vector TYPE +combine (TYPE op0, TYPE op1) +{ + return (vector TYPE) { op0, op1 }; +} + +__attribute__((__noinline__)) +static vector TYPE +combine_insert (TYPE op0, TYPE op1) +{ + vector TYPE ret = (vector TYPE) { ZERO, ZERO }; + ret = vec_insert (op0, ret, 0); + ret = vec_insert (op1, ret, 1); + return ret; +} + +__attribute__((__noinline__)) +static vector TYPE +concat_extract_00 (vector TYPE a, vector TYPE b) +{ + return (vector TYPE) { vec_extract (a, 0), vec_extract (b, 0) }; +} + +__attribute__((__noinline__)) +static vector TYPE +concat_extract_01 (vector TYPE a, vector TYPE b) +{ + return (vector TYPE) { vec_extract (a, 0), vec_extract (b, 1) }; +} + +__attribute__((__noinline__)) +static vector TYPE +concat_extract_10 (vector TYPE a, vector TYPE b) +{ + return (vector TYPE) { vec_extract (a, 1), vec_extract (b, 0) }; +} + +__attribute__((__noinline__)) +static vector TYPE +concat_extract_11 (vector TYPE a, vector TYPE b) +{ + return (vector TYPE) { vec_extract (a, 1), vec_extract (b, 1) }; +} + +__attribute__((__noinline__)) +static vector TYPE +concat_extract2_0s (vector TYPE a, TYPE b) +{ + return (vector TYPE) { vec_extract (a, 0), b }; +} + +__attribute__((__noinline__)) +static vector TYPE +concat_extract2_1s (vector TYPE a, TYPE b) +{ + return (vector TYPE) { vec_extract (a, 1), b }; +} + +__attribute__((__noinline__)) +static vector TYPE +concat_extract2_s0 (TYPE a, vector TYPE b) +{ + return (vector TYPE) { a, vec_extract (b, 0) }; +} + +__attribute__((__noinline__)) +static vector TYPE +concat_extract2_s1 (TYPE a, vector TYPE b) +{ + return (vector TYPE) { a, vec_extract (b, 1) }; +} + +__attribute__((__noinline__)) +static vector TYPE +concat_extract_nn (vector TYPE a, vector TYPE b, size_t i, size_t j) +{ + return (vector TYPE) { vec_extract (a, i), vec_extract (b, j) }; +} + +#ifndef NO_ARRAY +__attribute__((__noinline__)) +static vector TYPE +array_0 (vector TYPE v, TYPE a) +{ + v[0] = a; + return v; +} + +__attribute__((__noinline__)) +static vector TYPE +array_1 (vector TYPE v, TYPE a) +{ + v[1] = a; + return v; +} + +__attribute__((__noinline__)) +static vector TYPE +array_01 (vector TYPE v, TYPE a, TYPE b) +{ + v[0] = a; + v[1] = b; + return v; +} + +__attribute__((__noinline__)) +static vector TYPE +array_01b (TYPE a, TYPE b) +{ + vector TYPE v = (vector TYPE) { 0, 0 }; + v[0] = a; + v[1] = b; + return v; +} +#endif + +int +main (void) +{ + vector TYPE a = (vector TYPE) { ONE, TWO }; + vector TYPE b = (vector TYPE) { THREE, FOUR }; + size_t i, j; + +#ifndef NO_ARRAY + vector TYPE z = (vector TYPE) { ZERO, ZERO }; +#endif + + DEBUG2 ("Endian: %s, type: %s\n", ENDIAN, STYPE); + DEBUG0 ("\nStatic/global initialization\n"); + vector_check (s_v12, INIT_ORDER (1, 2)); + vector_check (g_v34, INIT_ORDER (3, 4)); + + DEBUG0 ("\nVector via constant runtime intiialization\n"); + vector_check (a, INIT_ORDER (1, 2)); + vector_check (b, INIT_ORDER (3, 4)); + + DEBUG0 ("\nCombine scalars using vector initialization\n"); + vector_check (combine (1, 2), INIT_ORDER (1, 2)); + vector_check (combine (3, 4), INIT_ORDER (3, 4)); + + DEBUG0 ("\nSetup with vec_insert\n"); + a = combine_insert (1, 2); + b = combine_insert (3, 4); + vector_check (a, ELEMENT_ORDER (1, 2)); + vector_check (b, ELEMENT_ORDER (3, 4)); + +#ifndef NO_ARRAY + DEBUG0 ("\nTesting array syntax\n"); + vector_check (array_0 (a, FIVE), ELEMENT_ORDER (5, 2)); + vector_check (array_1 (b, SIX), ELEMENT_ORDER (3, 6)); + vector_check (array_01 (z, FIVE, SIX), ELEMENT_ORDER (5, 6)); + vector_check (array_01b (FIVE, SIX), ELEMENT_ORDER (5, 6)); + + vector_check (array_0 (a, five), ELEMENT_ORDER (5, 2)); + vector_check (array_1 (b, six), ELEMENT_ORDER (3, 6)); + vector_check (array_01 (z, five, six), ELEMENT_ORDER (5, 6)); + vector_check (array_01b (five, six), ELEMENT_ORDER (5, 6)); +#else + DEBUG0 ("\nSkipping array syntax on -maltivec=be\n"); +#endif + + DEBUG0 ("\nTesting concat and extract\n"); + vector_check (concat_extract_00 (a, b), INIT_ORDER (1, 3)); + vector_check (concat_extract_01 (a, b), INIT_ORDER (1, 4)); + vector_check (concat_extract_10 (a, b), INIT_ORDER (2, 3)); + vector_check (concat_extract_11 (a, b), INIT_ORDER (2, 4)); + + DEBUG0 ("\nTesting concat and extract #2\n"); + vector_check (concat_extract2_0s (a, FIVE), INIT_ORDER (1, 5)); + vector_check (concat_extract2_1s (a, FIVE), INIT_ORDER (2, 5)); + vector_check (concat_extract2_s0 (SIX, a), INIT_ORDER (6, 1)); + vector_check (concat_extract2_s1 (SIX, a), INIT_ORDER (6, 2)); + + DEBUG0 ("\nTesting variable concat and extract\n"); + for (i = 0; i < 2; i++) + { + for (j = 0; j < 2; j++) + { + static struct { + TYPE hi; + TYPE lo; + } hilo[2][2] = + { { { ONE, THREE }, { ONE, FOUR } }, + { { TWO, THREE }, { TWO, FOUR } } }; + + vector_check (concat_extract_nn (a, b, i, j), + INIT_ORDER (hilo[i][j].hi, hilo[i][j].lo)); + } + } + + DEBUG0 ("\nTesting separate function\n"); + vector_check (combine (vec_extract (a, 0), vec_extract (b, 0)), + INIT_ORDER (1, 3)); + + vector_check (combine (vec_extract (a, 0), vec_extract (b, 1)), + INIT_ORDER (1, 4)); + + vector_check (combine (vec_extract (a, 1), vec_extract (b, 0)), + INIT_ORDER (2, 3)); + + vector_check (combine (vec_extract (a, 1), vec_extract (b, 1)), + INIT_ORDER (2, 4)); + + vector_check (combine_insert (vec_extract (a, 0), vec_extract (b, 0)), + ELEMENT_ORDER (1, 3)); + + vector_check (combine_insert (vec_extract (a, 0), vec_extract (b, 1)), + ELEMENT_ORDER (1, 4)); + + vector_check (combine_insert (vec_extract (a, 1), vec_extract (b, 0)), + ELEMENT_ORDER (2, 3)); + + vector_check (combine_insert (vec_extract (a, 1), vec_extract (b, 1)), + ELEMENT_ORDER (2, 4)); + + +#if defined(DO_DOUBLE) + DEBUG0 ("\nTesting explicit 2df concat\n"); + vector_check (__builtin_vsx_concat_2df (FIVE, SIX), INIT_ORDER (5, 6)); + vector_check (__builtin_vsx_concat_2df (five, six), INIT_ORDER (5, 6)); + +#elif defined(_ARCH_PPC64) + DEBUG0 ("\nTesting explicit 2di concat\n"); + vector_check (__builtin_vsx_concat_2di (FIVE, SIX), INIT_ORDER (5, 6)); + vector_check (__builtin_vsx_concat_2di (five, six), INIT_ORDER (5, 6)); + +#else + DEBUG0 ("\nSkip explicit 2di concat on 32-bit\n"); +#endif + +#ifdef DEBUG + if (errors) + printf ("\n%d error%s were found", errors, (errors == 1) ? "" : "s"); + else + printf ("\nNo errors were found.\n"); + + return errors; + +#else + return 0; +#endif +} Index: gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/vec-setup-be-double.c (.../branches/gcc-7-branch) @@ -0,0 +1,12 @@ +/* { dg-do run { target { powerpc*-*-linux* } } } */ +/* { dg-require-effective-target vsx_hw } */ +/* { dg-options "-O2 -mvsx" } */ + +/* Test various ways of creating vectors with 2 double words and accessing the + elements. This test uses the double datatype. + + This test explicitly tests -maltivec=be to make sure things are correct. */ + +#define DO_DOUBLE + +#include "vec-setup.h" Index: gcc/testsuite/gcc.target/powerpc/pr80695-p8.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/pr80695-p8.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/pr80695-p8.c (.../branches/gcc-7-branch) @@ -0,0 +1,18 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-options "-mcpu=power8 -O3 -fdump-tree-slp-details" } */ + +/* PR80695: Verify cost model for vec_construct on POWER8. */ + +long a[10] __attribute__((aligned(16))); + +void foo (long i, long j, long k, long l) +{ + a[6] = i; + a[7] = j; + a[8] = k; + a[9] = l; +} + +/* { dg-final { scan-tree-dump-times "vectorization is not profitable" 1 "slp2" } } */ Index: gcc/testsuite/gcc.target/powerpc/pr80695-p9.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/pr80695-p9.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/pr80695-p9.c (.../branches/gcc-7-branch) @@ -0,0 +1,18 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-options "-mcpu=power9 -O3 -fdump-tree-slp-details" } */ + +/* PR80695: Verify cost model for vec_construct on POWER9. */ + +long a[10] __attribute__((aligned(16))); + +void foo (long i, long j, long k, long l) +{ + a[6] = i; + a[7] = j; + a[8] = k; + a[9] = l; +} + +/* { dg-final { scan-tree-dump-times "vectorization is not profitable" 1 "slp2" } } */ Index: gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/vsx-extract-6.c (.../branches/gcc-7-branch) @@ -0,0 +1,25 @@ +/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O2 -mvsx" } */ + +vector unsigned long +test_vpasted (vector unsigned long high, vector unsigned long low) +{ + vector unsigned long res; + res[1] = high[1]; + res[0] = low[0]; + return res; +} + +/* { dg-final { scan-assembler-times {\mxxpermdi\M} 1 } } */ +/* { dg-final { scan-assembler-not {\mvspltisw\M} } } */ +/* { dg-final { scan-assembler-not {\mxxlor\M} } } */ +/* { dg-final { scan-assembler-not {\mxxlxor\M} } } */ +/* { dg-final { scan-assembler-not {\mxxspltib\M} } } */ +/* { dg-final { scan-assembler-not {\mlxvx?\M} } } */ +/* { dg-final { scan-assembler-not {\mlxv[dw][24]x\M} } } */ +/* { dg-final { scan-assembler-not {\mlvx\M} } } */ +/* { dg-final { scan-assembler-not {\mstxvx?\M} } } */ +/* { dg-final { scan-assembler-not {\mstxv[dw][24]x\M} } } */ +/* { dg-final { scan-assembler-not {\mstvx\M} } } */ Index: gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/vsx-extract-7.c (.../branches/gcc-7-branch) @@ -0,0 +1,25 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O2 -mvsx" } */ + +vector double +test_vpasted (vector double high, vector double low) +{ + vector double res; + res[1] = high[1]; + res[0] = low[0]; + return res; +} + +/* { dg-final { scan-assembler-times {\mxxpermdi\M} 1 } } */ +/* { dg-final { scan-assembler-not {\mvspltisw\M} } } */ +/* { dg-final { scan-assembler-not {\mxxlor\M} } } */ +/* { dg-final { scan-assembler-not {\mxxlxor\M} } } */ +/* { dg-final { scan-assembler-not {\mxxspltib\M} } } */ +/* { dg-final { scan-assembler-not {\mlxvx?\M} } } */ +/* { dg-final { scan-assembler-not {\mlxv[dw][24]x\M} } } */ +/* { dg-final { scan-assembler-not {\mlvx\M} } } */ +/* { dg-final { scan-assembler-not {\mstxvx?\M} } } */ +/* { dg-final { scan-assembler-not {\mstxv[dw][24]x\M} } } */ +/* { dg-final { scan-assembler-not {\mstvx\M} } } */ Index: gcc/testsuite/gcc.target/powerpc/pr80210.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/pr80210.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/pr80210.c (.../branches/gcc-7-branch) @@ -0,0 +1,10 @@ +/* Test for ICE arising from GCC target pragma. */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +double +foo (double a) +{ + return __builtin_sqrt (a); +} +#pragma GCC target "no-powerpc-gpopt" Index: gcc/testsuite/gcc.target/powerpc/vec-setup-double.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/vec-setup-double.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/vec-setup-double.c (.../branches/gcc-7-branch) @@ -0,0 +1,11 @@ +/* { dg-do run { target { powerpc*-*-linux* } } } */ +/* { dg-require-effective-target vsx_hw } */ +/* { dg-options "-O2 -mvsx" } */ + +/* Test various ways of creating vectors with 2 double words and accessing the + elements. This test uses the double datatype and the default endian + order. */ + +#define DO_DOUBLE + +#include "vec-setup.h" Index: gcc/testsuite/gcc.target/powerpc/pr72804.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/pr72804.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/pr72804.c (.../branches/gcc-7-branch) @@ -0,0 +1,25 @@ +/* { dg-do compile { target { lp64 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O2 -mvsx" } */ + +__int128_t +foo (__int128_t *src) +{ + return ~*src; +} + +void +bar (__int128_t *dst, __int128_t src) +{ + *dst = ~src; +} + +/* { dg-final { scan-assembler-times "not " 4 } } */ +/* { dg-final { scan-assembler-times "std " 2 } } */ +/* { dg-final { scan-assembler-times "ld " 2 } } */ +/* { dg-final { scan-assembler-not "lxvd2x" } } */ +/* { dg-final { scan-assembler-not "stxvd2x" } } */ +/* { dg-final { scan-assembler-not "xxpermdi" } } */ +/* { dg-final { scan-assembler-not "mfvsrd" } } */ +/* { dg-final { scan-assembler-not "mfvsrd" } } */ Index: gcc/testsuite/gcc.target/powerpc/vec-setup-long.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/vec-setup-long.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/powerpc/vec-setup-long.c (.../branches/gcc-7-branch) @@ -0,0 +1,9 @@ +/* { dg-do run { target { powerpc*-*-linux* } } } */ +/* { dg-require-effective-target vsx_hw } */ +/* { dg-options "-O2 -mvsx" } */ + +/* Test various ways of creating vectors with 2 double words and accessing the + elements. This test uses the long (on 64-bit systems) or long long datatype + (on 32-bit systems). The default endian order is used. */ + +#include "vec-setup.h" Index: gcc/testsuite/gcc.target/arm/lto/pr65837-attr_0.c =================================================================== --- gcc/testsuite/gcc.target/arm/lto/pr65837-attr_0.c (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gcc.target/arm/lto/pr65837-attr_0.c (.../branches/gcc-7-branch) @@ -1,6 +1,7 @@ /* { dg-lto-do run } */ /* { dg-require-effective-target arm_neon_hw } */ -/* { dg-lto-options {{-flto}} } */ +/* { dg-require-effective-target arm_neon_ok_no_float_abi } */ +/* { dg-lto-options {{-flto -mfpu=neon}} } */ #include "arm_neon.h" Index: gcc/testsuite/gcc.target/arm/lto/pr65837_0.c =================================================================== --- gcc/testsuite/gcc.target/arm/lto/pr65837_0.c (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gcc.target/arm/lto/pr65837_0.c (.../branches/gcc-7-branch) @@ -1,7 +1,7 @@ /* { dg-lto-do run } */ /* { dg-require-effective-target arm_neon_hw } */ +/* { dg-require-effective-target arm_neon_ok_no_float_abi } */ /* { dg-lto-options {{-flto -mfpu=neon}} } */ -/* { dg-suppress-ld-options {-mfpu=neon} } */ #include "arm_neon.h" Index: gcc/testsuite/gcc.target/aarch64/pr71727-2.c =================================================================== --- gcc/testsuite/gcc.target/aarch64/pr71727-2.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/aarch64/pr71727-2.c (.../branches/gcc-7-branch) @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mstrict-align -O3" } */ + +unsigned char foo(const unsigned char *buffer, unsigned int length) +{ + unsigned char sum; + unsigned int count; + + for (sum = 0, count = 0; count < length; count++) { + sum = (unsigned char) (sum + *(buffer + count)); + } + + return sum; +} + +/* { dg-final { scan-assembler-times "and\tw\[0-9\]+, w\[0-9\]+, 15" 1 } } */ Index: gcc/testsuite/gcc.target/i386/pr81921.c =================================================================== --- gcc/testsuite/gcc.target/i386/pr81921.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/i386/pr81921.c (.../branches/gcc-7-branch) @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target lto } */ +/* { dg-options "-flto -march=x86-64" } */ + +extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__, target("sse2"))) +_mm_loadu_si128 (int const *__P) +{ + return *__P; +} + +void __attribute__((target("ssse3"))) foo (void *p) +{ + volatile int x = _mm_loadu_si128 (p); +} Index: gcc/testsuite/gcc.target/i386/pr81128.c =================================================================== --- gcc/testsuite/gcc.target/i386/pr81128.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/i386/pr81128.c (.../branches/gcc-7-branch) @@ -0,0 +1,65 @@ +/* PR ipa/81128 */ +/* { dg-do run } */ +/* { dg-options "-O3" } */ +/* { dg-require-ifunc "" } */ + + +#include +#include +#include + +int resolver_fn = 0; +int resolved_fn = 0; + +static inline void +do_it_right_at_runtime_A () +{ + resolved_fn++; +} + +static inline void +do_it_right_at_runtime_B () +{ + resolved_fn++; +} + +static inline void do_it_right_at_runtime (void); + +void do_it_right_at_runtime (void) + __attribute__ ((ifunc ("resolve_do_it_right_at_runtime"))); + +static void (*resolve_do_it_right_at_runtime (void)) (void) +{ + srand (time (NULL)); + int r = rand (); + resolver_fn++; + + /* Use intermediate variable to get a warning for non-matching + * prototype. */ + typeof(do_it_right_at_runtime) *func; + if (r & 1) + func = do_it_right_at_runtime_A; + else + func = do_it_right_at_runtime_B; + + return (void *) func; +} + +int +main (void) +{ + const unsigned int ITERS = 10; + + for (int i = ITERS; i > 0; i--) + { + do_it_right_at_runtime (); + } + + if (resolver_fn != 1) + __builtin_abort (); + + if (resolved_fn != 10) + __builtin_abort (); + + return 0; +} Index: gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-1-nov.c =================================================================== --- gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-1-nov.c (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-1-nov.c (.../branches/gcc-7-branch) @@ -25,7 +25,7 @@ static __attribute__((always_inline)) int foo1 (int *p1, ...) { - return foo2 (10, p1, __va_arg_pack ()); + return foo2 (10, p1, __builtin_va_arg_pack ()); } int prebuf[100]; Index: gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-1-lbv.c =================================================================== --- gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-1-lbv.c (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-1-lbv.c (.../branches/gcc-7-branch) @@ -28,7 +28,7 @@ static __attribute__((always_inline)) int foo1 (int *p1, ...) { - return foo2 (10, p1, __va_arg_pack ()); + return foo2 (10, p1, __builtin_va_arg_pack ()); } int prebuf[100]; Index: gcc/testsuite/gcc.target/i386/mpx/mpx-os-support.h =================================================================== --- gcc/testsuite/gcc.target/i386/mpx/mpx-os-support.h (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.target/i386/mpx/mpx-os-support.h (.../branches/gcc-7-branch) @@ -0,0 +1,16 @@ +/* Check if the OS supports executing MPX instructions. */ + +#define XCR_XFEATURE_ENABLED_MASK 0x0 + +#define XSTATE_BNDREGS 0x8 + +static int +mpx_os_support (void) +{ + unsigned int eax, edx; + unsigned int ecx = XCR_XFEATURE_ENABLED_MASK; + + __asm__ ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (ecx)); + + return (eax & XSTATE_BNDREGS) != 0; +} Index: gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-1-ubv.c =================================================================== --- gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-1-ubv.c (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-1-ubv.c (.../branches/gcc-7-branch) @@ -28,7 +28,7 @@ static __attribute__((always_inline)) int foo1 (int *p1, ...) { - return foo2 (10, p1, __va_arg_pack ()); + return foo2 (10, p1, __builtin_va_arg_pack ()); } int prebuf[100]; Index: gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-2-nov.c =================================================================== --- gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-2-nov.c (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-2-nov.c (.../branches/gcc-7-branch) @@ -27,7 +27,7 @@ static __attribute__((always_inline)) int foo1 (int *p1, ...) { - return foo2 (10, p1, __va_arg_pack ()); + return foo2 (10, p1, __builtin_va_arg_pack ()); } int prebuf[100]; Index: gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-2-lbv.c =================================================================== --- gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-2-lbv.c (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-2-lbv.c (.../branches/gcc-7-branch) @@ -30,7 +30,7 @@ static __attribute__((always_inline)) int foo1 (int *p1, ...) { - return foo2 (10, p1, __va_arg_pack ()); + return foo2 (10, p1, __builtin_va_arg_pack ()); } int prebuf[100]; Index: gcc/testsuite/gcc.target/i386/mpx/mpx-check.h =================================================================== --- gcc/testsuite/gcc.target/i386/mpx/mpx-check.h (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gcc.target/i386/mpx/mpx-check.h (.../branches/gcc-7-branch) @@ -1,8 +1,8 @@ #include #include #include - #include "cpuid.h" +#include "mpx-os-support.h" static int __attribute__ ((noinline)) @@ -16,14 +16,13 @@ #define DEBUG -#define XSTATE_BNDREGS (1 << 3) +static int +check_osxsave (void) +{ + unsigned int eax, ebx, ecx, edx; -/* This should be an intrinsic, but isn't. */ -static int xgetbv (unsigned x) -{ - unsigned eax, edx; - asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (x)); - return eax; + __cpuid (1, eax, ebx, ecx, edx); + return (ecx & bit_OSXSAVE) != 0; } int @@ -31,13 +30,11 @@ { unsigned int eax, ebx, ecx, edx; - if (__get_cpuid_max (0, NULL) < 7) - return 0; + if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx)) + return NORUNRES; - __cpuid_count (7, 0, eax, ebx, ecx, edx); - /* Run MPX test only if host has MPX support. */ - if ((ebx & bit_MPX) && (xgetbv (0) & XSTATE_BNDREGS)) + if (check_osxsave () && (ebx & bit_MPX) && mpx_os_support ()) mpx_test (argc, argv); else { Index: gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-2-ubv.c =================================================================== --- gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-2-ubv.c (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gcc.target/i386/mpx/va-arg-pack-2-ubv.c (.../branches/gcc-7-branch) @@ -30,7 +30,7 @@ static __attribute__((always_inline)) int foo1 (int *p1, ...) { - return foo2 (10, p1, __va_arg_pack ()); + return foo2 (10, p1, __builtin_va_arg_pack ()); } int prebuf[100]; Index: gcc/testsuite/lib/target-supports.exp =================================================================== --- gcc/testsuite/lib/target-supports.exp (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/lib/target-supports.exp (.../branches/gcc-7-branch) @@ -1777,6 +1777,7 @@ expr 0 } else { check_runtime_nocache avx2_hw_available { + #include #include "cpuid.h" int main () { @@ -3427,8 +3428,9 @@ global et_arm_neon_flags set et_arm_neon_flags "" if { [check_effective_target_arm32] } { - foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon" "-mfpu=neon -mfloat-abi=softfp" "-mfpu=neon -mfloat-abi=softfp -march=armv7-a"} { + foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon" "-mfpu=neon -mfloat-abi=softfp" "-mfpu=neon -mfloat-abi=softfp -march=armv7-a" "-mfloat-abi=hard" "-mfpu=neon -mfloat-abi=hard" "-mfpu=neon -mfloat-abi=hard -march=armv7-a"} { if { [check_no_compiler_messages_nocache arm_neon_ok object { + #include int dummy; #ifndef __ARM_NEON__ #error not NEON @@ -3453,6 +3455,38 @@ check_effective_target_arm_neon_ok_nocache] } +# Return 1 if this is an ARM target supporting -mfpu=neon without any +# -mfloat-abi= option. Useful in tests where add_options is not +# supported (such as lto tests). + +proc check_effective_target_arm_neon_ok_no_float_abi_nocache { } { + if { [check_effective_target_arm32] } { + foreach flags {"-mfpu=neon"} { + if { [check_no_compiler_messages_nocache arm_neon_ok_no_float_abi object { + #include + int dummy; + #ifndef __ARM_NEON__ + #error not NEON + #endif + /* Avoid the case where a test adds -mfpu=neon, but the toolchain is + configured for -mcpu=arm926ej-s, for example. */ + #if __ARM_ARCH < 7 || __ARM_ARCH_PROFILE == 'M' + #error Architecture does not support NEON. + #endif + } "$flags"] } { + return 1 + } + } + } + + return 0 +} + +proc check_effective_target_arm_neon_ok_no_float_abi { } { + return [check_cached_effective_target arm_neon_ok_no_float_abi \ + check_effective_target_arm_neon_ok_no_float_abi_nocache] +} + proc check_effective_target_arm_crc_ok_nocache { } { global et_arm_crc_flags set et_arm_crc_flags "-march=armv8-a+crc" Index: gcc/testsuite/gfortran.dg/dtio_12.f90 =================================================================== --- gcc/testsuite/gfortran.dg/dtio_12.f90 (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gfortran.dg/dtio_12.f90 (.../branches/gcc-7-branch) @@ -70,5 +70,11 @@ rewind (10) read (10, *) msg if (trim (msg) .ne. "77") call abort + rewind (10) + write (10,40) child (77) ! Modified using format label +40 format(DT) + rewind (10) + read (10, *) msg + if (trim (msg) .ne. "77") call abort close(10) end Index: gcc/testsuite/gfortran.dg/warn_target_lifetime_3.f90 =================================================================== --- gcc/testsuite/gfortran.dg/warn_target_lifetime_3.f90 (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gfortran.dg/warn_target_lifetime_3.f90 (.../branches/gcc-7-branch) @@ -3,7 +3,7 @@ ! ! PR fortran/55476 ! -! Contribued by Janus Weil +! Contributed by Janus Weil ! subroutine test integer, pointer :: p Index: gcc/testsuite/gfortran.dg/array_temporaries_4.f90 =================================================================== --- gcc/testsuite/gfortran.dg/array_temporaries_4.f90 (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gfortran.dg/array_temporaries_4.f90 (.../branches/gcc-7-branch) @@ -0,0 +1,59 @@ +! { dg-do compile } +! { dg-options "-Warray-temporaries" } +! Tests the fix for PR80164, in which the compiler segfaulted on this +! when using -Warray-temporaries +! +!****************************************************************************** +module global + type :: a + integer :: b + character(8):: c + end type a + interface assignment(=) + module procedure a_to_a, c_to_a, a_to_c + end interface + interface operator(.ne.) + module procedure a_ne_a + end interface + + type(a) :: x(4), y(4) + logical :: l1(4), t = .true., f= .false. +contains +!****************************************************************************** + elemental subroutine a_to_a (m, n) + type(a), intent(in) :: n + type(a), intent(out) :: m + m%b = len ( trim(n%c)) + m%c = n%c + end subroutine a_to_a + elemental subroutine c_to_a (m, n) + character(8), intent(in) :: n + type(a), intent(out) :: m + m%b = m%b + 1 + m%c = n + end subroutine c_to_a + elemental subroutine a_to_c (m, n) + type(a), intent(in) :: n + character(8), intent(out) :: m + m = n%c + end subroutine a_to_c +!****************************************************************************** + elemental logical function a_ne_a (m, n) + type(a), intent(in) :: n + type(a), intent(in) :: m + a_ne_a = (m%b .ne. n%b) .or. (m%c .ne. n%c) + end function a_ne_a +!****************************************************************************** + elemental function foo (m) + type(a) :: foo + type(a), intent(in) :: m + foo%b = 0 + foo%c = m%c + end function foo +end module global +!****************************************************************************** +program test + use global + x = (/a (0, "one"),a (0, "two"),a (0, "three"),a (0, "four")/) ! { dg-warning "Creating array temporary" } + y = x +end program test Index: gcc/testsuite/gfortran.dg/zero_sized_7.f90 =================================================================== --- gcc/testsuite/gfortran.dg/zero_sized_7.f90 (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gfortran.dg/zero_sized_7.f90 (.../branches/gcc-7-branch) @@ -0,0 +1,18 @@ +! { dg-do compile } +! PR 80118 - this used to ICE +! Original test case by Marco Restelli +module m +implicit none + + integer, parameter :: not_empty(1) = 0 + integer, parameter :: empty1(0) = (/integer :: /) + integer, parameter :: empty2(0) = 0 + +contains + + subroutine sub(v) + integer, allocatable, intent(out) :: v(:) + v = 2*empty2 ! internal compiler error + end subroutine sub + +end module m Index: gcc/testsuite/gfortran.dg/pr81723.f =================================================================== --- gcc/testsuite/gfortran.dg/pr81723.f (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gfortran.dg/pr81723.f (.../branches/gcc-7-branch) @@ -0,0 +1,56 @@ +! { dg-do compile } +! { dg-options "-O3 -fno-automatic" } + + FUNCTION WWERF(Z) + + IMPLICIT DOUBLE PRECISION (A-H,O-Z) + COMPLEX*16 WWERF + COMPLEX*16 Z,ZH,R(37),S,T,V,W + + PARAMETER (Z1 = 1, HF = Z1/2, Z10 = 10) + PARAMETER (C1 = 74/Z10, C2 = 83/Z10, C3 = Z10/32, C4 = 16/Z10) + PARAMETER (C = 1.12837 91670 95512 57D0, P = (2*C4)**33) + + DOUBLE PRECISION GREAL,GIMAG,XARG,YARG + COMPLEX*16 ZARG,GCONJG,GCMPLX + GREAL( ZARG)=DREAL( ZARG) + GIMAG( ZARG)=DIMAG( ZARG) + GCONJG(ZARG)=DCONJG(ZARG) + GCMPLX(XARG,YARG)=DCMPLX(XARG,YARG) + + X=Z + Y=GIMAG(Z) + XA=ABS(X) + YA=ABS(Y) + IF(YA .LT. C1 .AND. XA .LT. C2) THEN + ZH=GCMPLX(YA+C4,XA) + R(37)=0 + DO 1 N = 36,1,-1 + T=ZH+N*GCONJG(R(N+1)) + 1 R(N)=HF*T/(GREAL(T)**2+GIMAG(T)**2) + XL=P + S=0 + DO 2 N = 33,1,-1 + XL=C3*XL + 2 S=R(N)*(S+XL) + V=C*S + ELSE + ZH=GCMPLX(YA,XA) + R(1)=0 + DO 3 N = 9,1,-1 + T=ZH+N*GCONJG(R(1)) + 3 R(1)=HF*T/(GREAL(T)**2+GIMAG(T)**2) + V=C*R(1) + END IF + IF(YA .EQ. 0) V=GCMPLX(EXP(-XA**2),GIMAG(V)) + IF(Y .LT. 0) THEN + V=2*EXP(-GCMPLX(XA,YA)**2)-V + IF(X .GT. 0) V=GCONJG(V) + ELSE + IF(X .LT. 0) V=GCONJG(V) + END IF + + WWERF=V + + RETURN + END Index: gcc/testsuite/gfortran.dg/warn_target_lifetime_4.f90 =================================================================== --- gcc/testsuite/gfortran.dg/warn_target_lifetime_4.f90 (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gfortran.dg/warn_target_lifetime_4.f90 (.../branches/gcc-7-branch) @@ -0,0 +1,28 @@ +! { dg-do compile } +! { dg-options "-Wtarget-lifetime" } +! +! PR fortran/81770: [5/6/7 Regression] Bogus warning: Pointer in pointer assignment might outlive the pointer target +! +! Contributed by Janus Weil + +module m + + type t + integer, allocatable :: l + end type + +contains + + subroutine sub(c_in, list) + type(t), target, intent(in) :: c_in + integer, pointer, intent(out) :: list + + type(t), pointer :: container + + container => c_in + + list => container%l + + end subroutine + +end Index: gcc/testsuite/gcc.c-torture/execute/pr81503.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr81503.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.c-torture/execute/pr81503.c (.../branches/gcc-7-branch) @@ -0,0 +1,15 @@ +unsigned short a = 41461; +unsigned short b = 3419; +int c = 0; + +void foo() { + if (a + b * ~(0 != 5)) + c = -~(b * ~(0 != 5)) + 2147483647; +} + +int main() { + foo(); + if (c != 2147476810) + return -1; + return 0; +} Index: gcc/testsuite/gcc.c-torture/compile/string-large-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/string-large-1.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.c-torture/compile/string-large-1.c (.../branches/gcc-7-branch) @@ -0,0 +1,119 @@ +/* Test built-in string functions with large sizes. PR 78460. */ + +typedef __SIZE_TYPE__ size_t; + +#define SIZE1 ((size_t) -1) +#define SIZE2 (SIZE1 >> 1) +#define SIZE3 ((unsigned int) -1) +#define SIZE4 (SIZE3 >> 1) + +volatile int v1, v2, v3, v4; +void *volatile vp1, *volatile vp2, *volatile vp3, *volatile vp4; + +void +test_memchr (const void *a, int b) +{ + vp1 = __builtin_memchr (a, b, SIZE1); + vp2 = __builtin_memchr (a, b, SIZE2); + vp3 = __builtin_memchr (a, b, SIZE3); + vp4 = __builtin_memchr (a, b, SIZE4); +} + +void +test_memcmp (const void *a, const void *b) +{ + v1 = __builtin_memcmp (a, b, SIZE1); + v2 = __builtin_memcmp (a, b, SIZE2); + v3 = __builtin_memcmp (a, b, SIZE3); + v4 = __builtin_memcmp (a, b, SIZE4); +} + +void +test_memcpy (void *a, const void *b) +{ + vp1 = __builtin_memcpy (a, b, SIZE1); + vp2 = __builtin_memcpy (a, b, SIZE2); + vp3 = __builtin_memcpy (a, b, SIZE3); + vp4 = __builtin_memcpy (a, b, SIZE4); +} + +void +test_memmove (void *a, const void *b) +{ + vp1 = __builtin_memmove (a, b, SIZE1); + vp2 = __builtin_memmove (a, b, SIZE2); + vp3 = __builtin_memmove (a, b, SIZE3); + vp4 = __builtin_memmove (a, b, SIZE4); +} + +void +test_mempcpy (void *a, const void *b) +{ + vp1 = __builtin_mempcpy (a, b, SIZE1); + vp2 = __builtin_mempcpy (a, b, SIZE2); + vp3 = __builtin_mempcpy (a, b, SIZE3); + vp4 = __builtin_mempcpy (a, b, SIZE4); +} + +void +test_memset (void *a, int b) +{ + vp1 = __builtin_memset (a, b, SIZE1); + vp2 = __builtin_memset (a, b, SIZE2); + vp3 = __builtin_memset (a, b, SIZE3); + vp4 = __builtin_memset (a, b, SIZE4); +} + +void +test_stpncpy (char *a, const char *b) +{ + vp1 = __builtin_stpncpy (a, b, SIZE1); + vp2 = __builtin_stpncpy (a, b, SIZE2); + vp3 = __builtin_stpncpy (a, b, SIZE3); + vp4 = __builtin_stpncpy (a, b, SIZE4); +} + +void +test_strndup (const char *a) +{ + vp1 = __builtin_strndup (a, SIZE1); + vp2 = __builtin_strndup (a, SIZE2); + vp3 = __builtin_strndup (a, SIZE3); + vp4 = __builtin_strndup (a, SIZE4); +} + +void +test_strncasecmp (const char *a, const char *b) +{ + v1 = __builtin_strncasecmp (a, b, SIZE1); + v2 = __builtin_strncasecmp (a, b, SIZE2); + v3 = __builtin_strncasecmp (a, b, SIZE3); + v4 = __builtin_strncasecmp (a, b, SIZE4); +} + +void +test_strncat (char *a, const char *b) +{ + vp1 = __builtin_strncat (a, b, SIZE1); + vp2 = __builtin_strncat (a, b, SIZE2); + vp3 = __builtin_strncat (a, b, SIZE3); + vp4 = __builtin_strncat (a, b, SIZE4); +} + +void +test_strncmp (const char *a, const char *b) +{ + v1 = __builtin_strncmp (a, b, SIZE1); + v2 = __builtin_strncmp (a, b, SIZE2); + v3 = __builtin_strncmp (a, b, SIZE3); + v4 = __builtin_strncmp (a, b, SIZE4); +} + +void +test_strncpy (char *a, const char *b) +{ + vp1 = __builtin_strncpy (a, b, SIZE1); + vp2 = __builtin_strncpy (a, b, SIZE2); + vp3 = __builtin_strncpy (a, b, SIZE3); + vp4 = __builtin_strncpy (a, b, SIZE4); +} Index: gcc/testsuite/gcc.c-torture/compile/pr82337.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr82337.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.c-torture/compile/pr82337.c (.../branches/gcc-7-branch) @@ -0,0 +1,25 @@ +/* PR82337: SLSR needs to prevent abnormal SSA names from + serving as a basis. */ +char *a, *b, *c; + +struct d { + short e; + char f[]; +}; + +extern void j (void); + +void +g() { + struct d *h; + char *i; + int d; + do { + i = h->f + d; + 20 ? j() : 0; + i = c; + if (__builtin_setjmp (h)) + b = h->f + d; + d = (int)(*i); + } while (a); +} Index: gcc/testsuite/gnat.dg/incomplete5_pkg.adb =================================================================== --- gcc/testsuite/gnat.dg/incomplete5_pkg.adb (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gnat.dg/incomplete5_pkg.adb (.../branches/gcc-7-branch) @@ -0,0 +1,13 @@ +package body Incomplete5_Pkg is + + function Get_Handle (Object: Base_Object) return Access_Type is + begin + return Object.Handle; + end; + + function From_Handle (Handle: Access_Type) return Base_Object is + begin + return (Handle=>Handle); + end; + +end Incomplete5_Pkg; Index: gcc/testsuite/gnat.dg/incomplete5_pkg.ads =================================================================== --- gcc/testsuite/gnat.dg/incomplete5_pkg.ads (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gnat.dg/incomplete5_pkg.ads (.../branches/gcc-7-branch) @@ -0,0 +1,15 @@ +generic + type Record_Type; +package Incomplete5_Pkg is + + type Access_Type is access Record_Type; + + type Base_Object is tagged record + Handle: Access_Type; + end record; + + function Get_Handle(Object: Base_Object) return Access_Type; + + function From_Handle(Handle: Access_Type) return Base_Object; + +end Incomplete5_Pkg; Index: gcc/testsuite/gnat.dg/array29.adb =================================================================== --- gcc/testsuite/gnat.dg/array29.adb (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gnat.dg/array29.adb (.../branches/gcc-7-branch) @@ -0,0 +1,26 @@ +-- { dg-do compile } +-- { dg-options "-O" } + +package body Array29 is + + procedure Copy (Src : in Matrix; Dst : out Matrix) is + begin + for I in Src'Range (1) loop + for J in Src'Range (2) loop + Dst (I, J) := Src (I, J); + end loop; + end loop; + end; + + procedure Proc is + N : constant := 2; + FM1 : constant Matrix (1 .. N, 1 .. N) := ((1.0, 2.0), (3.0, 4.0)); + FM2 : constant Matrix (1 .. N, 1 .. N) := ((1.0, 2.0), (3.0, 4.0)); + A : constant array (1 .. 2) of Matrix (1 .. N, 1 .. N) + := (Matrix (FM1), Matrix (FM2)); + Final : Matrix (1 .. N, 1 .. N); + begin + Copy (Src => A (1), Dst => Final); + end; + +end Array29; Index: gcc/testsuite/gnat.dg/array29.ads =================================================================== --- gcc/testsuite/gnat.dg/array29.ads (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gnat.dg/array29.ads (.../branches/gcc-7-branch) @@ -0,0 +1,7 @@ +package Array29 is + + type Matrix is array (Integer range <>, Integer range <>) of Long_Float; + + procedure Proc; + +end Array29; Index: gcc/testsuite/gnat.dg/debug13.adb =================================================================== --- gcc/testsuite/gnat.dg/debug13.adb (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gnat.dg/debug13.adb (.../branches/gcc-7-branch) @@ -0,0 +1,38 @@ +-- { dg-options "-cargs -O2 -g -margs" } + +package body Debug13 is + + procedure Compile (P : Natural) + is + Max_Pos : constant Natural := P; + type Position_Set is array (1 .. Max_Pos) of Boolean; + + Empty : constant Position_Set := (others => False); + + type Position_Set_Array is array (1 .. Max_Pos) of Position_Set; + + Follow : Position_Set_Array := (others => Empty); + + function Get_Follows return Position_Set; + + procedure Make_DFA; + + function Get_Follows return Position_Set is + Result : Position_Set := Empty; + begin + Result := Result or Follow (1); + + return Result; + end Get_Follows; + + procedure Make_DFA is + Next : constant Position_Set := Get_Follows; + begin + null; + end Make_DFA; + + begin + Make_DFA; + end Compile; + +end Debug13; Index: gcc/testsuite/gnat.dg/debug13.ads =================================================================== --- gcc/testsuite/gnat.dg/debug13.ads (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gnat.dg/debug13.ads (.../branches/gcc-7-branch) @@ -0,0 +1,5 @@ +package Debug13 is + + procedure Compile (P : Natural); + +end Debug13; Index: gcc/testsuite/gnat.dg/incomplete5.adb =================================================================== --- gcc/testsuite/gnat.dg/incomplete5.adb (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gnat.dg/incomplete5.adb (.../branches/gcc-7-branch) @@ -0,0 +1,10 @@ +-- { dg-do compile } + +package body Incomplete5 is + + function Get (O: Base_Object) return Integer is + begin + return Get_Handle(O).I; + end; + +end Incomplete5; Index: gcc/testsuite/gnat.dg/incomplete5.ads =================================================================== --- gcc/testsuite/gnat.dg/incomplete5.ads (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gnat.dg/incomplete5.ads (.../branches/gcc-7-branch) @@ -0,0 +1,25 @@ +with Incomplete5_Pkg; + +package Incomplete5 is + + type Rec1 is private; + + type Rec2 is private; + + package My_G is new Incomplete5_Pkg (Rec1); + + use My_G; + + function Get (O: Base_Object) return Integer; + +private + + type Rec1 is record + I : Integer; + end record; + + type Rec2 is record + A : Access_Type; + end record; + +end Incomplete5; Index: gcc/testsuite/gnat.dg/pack9.adb =================================================================== --- gcc/testsuite/gnat.dg/pack9.adb (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gnat.dg/pack9.adb (.../branches/gcc-7-branch) @@ -1,7 +1,8 @@ -- { dg-do compile } -- { dg-options "-O2 -gnatp -fdump-tree-optimized" } --- See PR tree-optimization/46801 for the expected failure +pragma Optimize_Alignment (Space); + package body Pack9 is procedure Copy (X, Y : R2_Ptr) is Index: gcc/testsuite/gnat.dg/specs/vfa.ads =================================================================== --- gcc/testsuite/gnat.dg/specs/vfa.ads (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gnat.dg/specs/vfa.ads (.../branches/gcc-7-branch) (nonexistent) @@ -1,14 +0,0 @@ --- { dg-do compile } --- { dg-options "-g" } - -package VFA is - - type Rec is record - A : Short_Integer; - B : Short_Integer; - end record; - - type Rec_VFA is new Rec; - pragma Volatile_Full_Access (Rec_VFA); - -end VFA; Index: gcc/testsuite/gnat.dg/specs/uc2.ads =================================================================== --- gcc/testsuite/gnat.dg/specs/uc2.ads (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gnat.dg/specs/uc2.ads (.../branches/gcc-7-branch) @@ -0,0 +1,18 @@ +-- { dg-do compile } +-- { dg-options "-O" } + +with Ada.Unchecked_Conversion; + +package UC2 is + + subtype Word_Type is Integer range 0 .. 0; + type Arr is array (1 .. Word_Type'Size) of Boolean; + pragma Pack(Arr); + + function Conv is + new Ada.Unchecked_Conversion (Source => Arr, Target => Word_Type); + + A : Arr; + W : Word_Type := Conv(A); + +end UC2; Index: gcc/testsuite/gnat.dg/specs/vfa2.ads =================================================================== --- gcc/testsuite/gnat.dg/specs/vfa2.ads (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gnat.dg/specs/vfa2.ads (.../branches/gcc-7-branch) @@ -0,0 +1,110 @@ +-- { dg-do compile } +-- { dg-options "-O" } + +package VFA2 is + + type Bit is mod 2**1 + with Size => 1; + type UInt2 is mod 2**2 + with Size => 2; + type UInt22 is mod 2**22 + with Size => 22; + + type MODE_ENUM is + ( + Function_0_Default, + Function_1, + Function_2, + Function_3, + Function_4, + Function_5, + Function_6, + Function_7) + with Size => 3; + + type EPD_ENUM is + ( + Disable_Pull_Down, + Enable_Pull_Down) + with Size => 1; + + type EPUN_ENUM is + ( + Enable_Pull_Up, + Disable_Pull_Up) + with Size => 1; + + type EHS_ENUM is + ( + Slow_Low_Noise_With, + Fast_Medium_Noise_W) + with Size => 1; + + type EZI_ENUM is + ( + Disable_Input_Buffer, + Enable_Input_Buffer) + with Size => 1; + + type ZIF_ENUM is + ( + Enable_Input_Glitch, + Disable_Input_Glitch) + with Size => 1; + + type EHD_ENUM is + ( + Normal_Drive_4_Ma_D, + Medium_Drive_8_Ma_D, + High_Drive_14_Ma_Dr, + Ultra_High_Drive_20) + with Size => 2; + + type Pin_Type is (Normal_Drive, High_Drive, High_Speed); + + type SFS_Register(Pin : Pin_Type := Normal_Drive) is record + MODE : MODE_ENUM; + EPD : EPD_ENUM; + EPUN : EPUN_ENUM; + EZI : EZI_ENUM; + ZIF : ZIF_ENUM; + RESERVED : UInt22; + + case Pin is + when Normal_Drive => + + ND_EHS_RESERVED : Bit; + ND_EHD_RESERVED : UInt2; + + when High_Drive => + + EHD : EHD_ENUM; + HD_EHS_RESERVED : Bit; + + when High_Speed => + EHS : EHS_ENUM; + HS_EHD_RESERVED : UInt2; + + end case; + end record + with Unchecked_Union, Size => 32, Volatile_Full_Access; + + for SFS_Register use record + MODE at 0 range 0 .. 2; + EPD at 0 range 3 .. 3; + EPUN at 0 range 4 .. 4; + ND_EHS_RESERVED at 0 range 5 .. 5; + HD_EHS_RESERVED at 0 range 5 .. 5; + EHS at 0 range 5 .. 5; + EZI at 0 range 6 .. 6; + ZIF at 0 range 7 .. 7; + ND_EHD_RESERVED at 0 range 8 .. 9; + EHD at 0 range 8 .. 9; + HS_EHD_RESERVED at 0 range 8 .. 9; + RESERVED at 0 range 10 .. 31; + end record; + + type Normal_Drive_Pins is array (Integer range <>) + of SFS_Register(Normal_Drive) with Volatile; + +end VFA2; Index: gcc/testsuite/gnat.dg/specs/atomic3.ads =================================================================== --- gcc/testsuite/gnat.dg/specs/atomic3.ads (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gnat.dg/specs/atomic3.ads (.../branches/gcc-7-branch) @@ -0,0 +1,33 @@ +-- { dg-do compile } + +package Atomic3 is + + type Four_Bits is mod 2**4; + type Fourteen_Bits is mod 2**14; + type Twenty_Eight_Bits is mod 2**28; + + type Rec1 (Mode : Boolean := True) is record + Reserved : Four_Bits; + case Mode is + when True => + High_Part : Fourteen_Bits; + Low_Part : Fourteen_Bits; + when False => + Data : Twenty_Eight_Bits; + end case; + end record; + for Rec1 use record + Reserved at 0 range 28 .. 31; + High_Part at 0 range 14 .. 27; + Low_Part at 0 range 0 .. 13; + Data at 0 range 0 .. 27; + end record; + for Rec1'Size use 32; + pragma Unchecked_Union (Rec1); + + type Rec2 is record + A : Rec1; + pragma Atomic (A); + end record; + +end Atomic3; Index: gcc/testsuite/gnat.dg/specs/vfa1.ads =================================================================== --- gcc/testsuite/gnat.dg/specs/vfa1.ads (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gnat.dg/specs/vfa1.ads (.../branches/gcc-7-branch) @@ -0,0 +1,14 @@ +-- { dg-do compile } +-- { dg-options "-g" } + +package VFA1 is + + type Rec is record + A : Short_Integer; + B : Short_Integer; + end record; + + type Rec_VFA is new Rec; + pragma Volatile_Full_Access (Rec_VFA); + +end VFA1; Index: gcc/testsuite/gcc.dg/pr82112.c =================================================================== --- gcc/testsuite/gcc.dg/pr82112.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/pr82112.c (.../branches/gcc-7-branch) @@ -0,0 +1,21 @@ +/* PR target/82112 */ +/* { dg-do compile } */ +/* { dg-options "-std=gnu90" } */ + +struct S { int a[10]; } bar (void); +int b, c; + +void +foo (void) +{ + __atomic_load (bar ().a, &b, __ATOMIC_ACQUIRE); /* { dg-error "argument 1 of .__atomic_load. must be a non-void pointer type" } */ + __atomic_load (&b, bar ().a, __ATOMIC_ACQUIRE); /* { dg-error "argument 2 of .__atomic_load. must be a pointer type" } */ + __atomic_store (bar ().a, &b, __ATOMIC_SEQ_CST); /* { dg-error "argument 1 of .__atomic_store. must be a non-void pointer type" } */ + __atomic_store (&b, bar ().a, __ATOMIC_SEQ_CST); /* { dg-error "argument 2 of .__atomic_store. must be a pointer type" } */ + __atomic_exchange (bar ().a, &b, &c, __ATOMIC_RELAXED); /* { dg-error "argument 1 of .__atomic_exchange. must be a non-void pointer type" } */ + __atomic_exchange (&b, bar ().a, &c, __ATOMIC_RELAXED); /* { dg-error "argument 2 of .__atomic_exchange. must be a pointer type" } */ + __atomic_exchange (&b, &c, bar ().a, __ATOMIC_RELAXED); /* { dg-error "argument 3 of .__atomic_exchange. must be a pointer type" } */ + __atomic_compare_exchange (bar ().a, &b, &c, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); /* { dg-error "argument 1 of .__atomic_compare_exchange. must be a non-void pointer type" } */ + __atomic_compare_exchange (&b, bar ().a, &c, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); /* { dg-error "argument 2 of .__atomic_compare_exchange. must be a pointer type" } */ + __atomic_compare_exchange (&b, &c, bar ().a, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); /* { dg-error "argument 3 of .__atomic_compare_exchange. must be a pointer type" } */ +} Index: gcc/testsuite/gcc.dg/gimplefe-14.c =================================================================== --- gcc/testsuite/gcc.dg/gimplefe-14.c (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gcc.dg/gimplefe-14.c (.../branches/gcc-7-branch) @@ -7,7 +7,9 @@ int a; bb_2: - switch (argc_2(D)) {default: L2; case 1: L0; case 2: L1; } + /* Because of PR82114 we need to handle also 0 as base metal can have + argc == 0. */ + switch (argc_2(D)) {default: L2; case 0: L0; case 1: L0; case 2: L1; } L0: a_4 = 0; Index: gcc/testsuite/gcc.dg/gomp/pr81768-2.c =================================================================== --- gcc/testsuite/gcc.dg/gomp/pr81768-2.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/gomp/pr81768-2.c (.../branches/gcc-7-branch) @@ -0,0 +1,15 @@ +/* PR middle-end/81768 */ +/* { dg-do compile } */ + +float b[10][15][10]; + +void +foo (void) +{ + float *i; +#pragma omp target parallel for schedule(static, 32) collapse(3) + for (i = &b[0][0][0]; i < &b[0][0][10]; i++) + for (float *j = &b[0][15][0]; j > &b[0][0][0]; j -= 10) + for (float *k = &b[0][0][10]; k > &b[0][0][0]; --k) + b[i - &b[0][0][0]][(j - &b[0][0][0]) / 10 - 1][(k - &b[0][0][0]) - 1] -= 3.5; +} Index: gcc/testsuite/gcc.dg/gomp/pr81768-1.c =================================================================== --- gcc/testsuite/gcc.dg/gomp/pr81768-1.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/gomp/pr81768-1.c (.../branches/gcc-7-branch) @@ -0,0 +1,15 @@ +/* PR middle-end/81768 */ +/* { dg-do compile } */ + +float b[10][15][10]; + +void +foo (void) +{ + float *i; +#pragma omp target parallel for simd schedule(static, 32) collapse(3) + for (i = &b[0][0][0]; i < &b[0][0][10]; i++) + for (float *j = &b[0][15][0]; j > &b[0][0][0]; j -= 10) + for (float *k = &b[0][0][10]; k > &b[0][0][0]; --k) + b[i - &b[0][0][0]][(j - &b[0][0][0]) / 10 - 1][(k - &b[0][0][0]) - 1] -= 3.5; +} Index: gcc/testsuite/gcc.dg/asan/pr81923.c =================================================================== --- gcc/testsuite/gcc.dg/asan/pr81923.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/asan/pr81923.c (.../branches/gcc-7-branch) @@ -0,0 +1,10 @@ +/* PR sanitizer/81923 */ +/* { dg-do link } */ + +int foobar __asm (__USER_LABEL_PREFIX__ "barbaz") = 34; + +int +main () +{ + return 0; +} Index: gcc/testsuite/gcc.dg/pr81621.c =================================================================== --- gcc/testsuite/gcc.dg/pr81621.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/pr81621.c (.../branches/gcc-7-branch) @@ -0,0 +1,5 @@ +/* PR target/81621 */ +/* { dg-do compile { target freorder } } */ +/* { dg-options "-Og -fno-split-wide-types -freorder-blocks-and-partition" } */ + +#include "graphite/scop-10.c" Index: gcc/testsuite/gcc.dg/torture/pr82276.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr82276.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/torture/pr82276.c (.../branches/gcc-7-branch) @@ -0,0 +1,32 @@ +/* { dg-do compile } */ + +typedef struct a { + struct a *b; +} a; + +extern int d(void); +extern int g(void); +extern int h(void); +extern int _setjmp(); +extern int i(void); + +void c(void) { + 1 ? d() : 0; + a *e; + while (e) { + e = (e == (a *) c) ? 0 : e->b; + while (e) { + unsigned int f = 0; + g(); + _setjmp(f); + if (f & 6) { + ; + } else if (f & 2) { + ; + } else { + h(); + } + i(); + } + } +} Index: gcc/testsuite/gcc.dg/torture/pr82285.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr82285.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/torture/pr82285.c (.../branches/gcc-7-branch) @@ -0,0 +1,16 @@ +/* { dg-do run } */ + +enum tst { first = 0, second = 1 }; + +int +main () +{ + enum tst data[16]; + + for (unsigned i = 0; i < 16; i++) + data[i] = (i < 5 ? second : first); + + if (data[2] != second) + __builtin_abort (); + return 0; +} Index: gcc/testsuite/gcc.dg/torture/pr81181.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr81181.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/torture/pr81181.c (.../branches/gcc-7-branch) @@ -0,0 +1,30 @@ +/* { dg-do compile } */ + +unsigned int lh; + +void +ny (int t3, int ys, int rt, int p8) +{ + if (lh != 0) + { + if (0) + { +oo: + do + { + rt = (p8 != 0) ? t3 : 0; + rt = (rt != 0 || lh != (unsigned int)ys); + rt += lh + ys; + } + while (t3 <= 0); + + lh = ys; + ys = rt; + } + + if (lh != 0) + p8 = lh; + } + + goto oo; +} Index: gcc/testsuite/gcc.dg/torture/pr82244.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr82244.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/torture/pr82244.c (.../branches/gcc-7-branch) @@ -0,0 +1,31 @@ +/* { dg-do compile } */ + +typedef struct a { + struct a *b; +} a; + +extern int d(void); +extern int g(void); +extern int h(void); +extern int _setjmp(void *); + +int c(void) +{ + 1 ? d() : 0; + + a *e; + while (e) { + e = (e == (a *) c) ? 0 : e->b; + while (e) { + int f = 0; + g(); + if (_setjmp(0)) { + if (f & 6) { + ; + } else if (f & 2) { + h(); + } + } + } + } +} Index: gcc/testsuite/gcc.dg/torture/pr82264.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr82264.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/torture/pr82264.c (.../branches/gcc-7-branch) @@ -0,0 +1,21 @@ +/* { dg-do compile } */ + +char a; +int c; +unsigned b (); +unsigned +setjmp () +{ +} +static void +d () +{ + if (b ()) + c = 3; +} +void +e () +{ + d (); + a && ({ setjmp (); }); +} Index: gcc/testsuite/gcc.dg/torture/pr82291.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr82291.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/torture/pr82291.c (.../branches/gcc-7-branch) @@ -0,0 +1,37 @@ +/* { dg-do run } */ + +int a, c, d, *h; +unsigned b; + +int *fn1 () +{ + int *f[3], g = 0; + for (; g < 3; g++) + f[g] = &a; + if (--b > a) + { + if (a > b) + d++; + return f[0]; + } +} + +void fn2 () +{ + for (; c >= 0; --c) + { + int j[] = { 0, 0, 0, 0, 0 }; + int *k = fn1 (); + if (!k) + __builtin_abort (); + h = &j[4]; + } +} + +int main () +{ + fn2 (); + if (d != 0) + __builtin_abort (); + return 0; +} Index: gcc/testsuite/gcc.dg/pr81650.c =================================================================== --- gcc/testsuite/gcc.dg/pr81650.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/pr81650.c (.../branches/gcc-7-branch) @@ -0,0 +1,9 @@ +/* PR driver/81650 */ +/* { dg-do compile } */ +/* { dg-options "-Walloc-size-larger-than=9223372036854775807" } */ + +void * +foo (void) +{ + return __builtin_malloc (5); +} Index: gcc/testsuite/gcc.dg/tree-ssa/pr81588.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/pr81588.c (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gcc.dg/tree-ssa/pr81588.c (.../branches/gcc-7-branch) @@ -1,5 +1,5 @@ /* PR tree-optimization/81588 */ -/* { dg-do compile { target { ! "m68k*-*-* mmix*-*-* bfin*-*-* v850*-*-* moxie*-*-* cris*-*-* m32c*-*-* fr30*-*-* mcore*-*-* powerpc*-*-* xtensa*-*-* hppa*-*-* nios2*-*-*" } } } */ +/* { dg-do compile { target { ! { { logical_op_short_circuit && { ! "mips*-*-* avr-*-* s390*-*-*" } } || { m68k*-*-* bfin*-*-* v850*-*-* moxie*-*-* m32c*-*-* fr30*-*-* mcore*-*-* xtensa*-*-* hppa*-*-* } } } } } */ /* { dg-options "-O2 -fdump-tree-reassoc1-details" } */ /* { dg-additional-options "-mbranch-cost=2" { target mips*-*-* avr-*-* s390*-*-* i?86-*-* x86_64-*-* } } */ Index: gcc/testsuite/gcc.dg/tree-ssa/pr82340.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/pr82340.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/tree-ssa/pr82340.c (.../branches/gcc-7-branch) @@ -0,0 +1,14 @@ +/* PR c/82340 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-ssa" } */ +/* { dg-final { scan-tree-dump "D.\[0-9]*\\\[0\\\] ={v} 77;" "ssa" } } */ + +int +foo (void) +{ + int i; + volatile char *p = (volatile char[1]) { 77 }; + for (i = 1; i < 10; i++) + *p = 4; + return *p; +} Index: gcc/testsuite/gcc.dg/pr81988.c =================================================================== --- gcc/testsuite/gcc.dg/pr81988.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/pr81988.c (.../branches/gcc-7-branch) @@ -0,0 +1,22 @@ +/* PR target/81988 */ +/* Testcase by James Cowgill */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target pie } */ +/* { dg-options "-O3 -fpie" } */ + +int c, d; + +short **e; +int *a; + +void foo(void) +{ + int g[64 * 35], *h = g; + do { + short *f = e[d]; + for (int i = 0; i < 4; i++) + a[i] = a[i] + (h[364] + f[4] * h[64] + f[5] * h[i] + f[6] * h[i + 3 * 4] + + f[7] * h[i + 4]); + } while (c); +} Index: gcc/testsuite/gcc.dg/ipa/pr82001.c =================================================================== --- gcc/testsuite/gcc.dg/ipa/pr82001.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/ipa/pr82001.c (.../branches/gcc-7-branch) @@ -0,0 +1,21 @@ +/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O2 -fdump-ipa-icf-details" } */ + +int +mullo (int a, int b) +{ + asm("mul %%edx # %%1 was %1" + : "+" + "a"(a), + "+d"(b)); + return a; +} + +int +mulhi (int a, int b) +{ + asm("mul %%edx # %%1 was %1" : "+d"(a), "+a"(b)); + return a; +} + +/* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf" } } */ Index: gcc/testsuite/gcc.dg/ipa/pr81696.c =================================================================== --- gcc/testsuite/gcc.dg/ipa/pr81696.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/ipa/pr81696.c (.../branches/gcc-7-branch) @@ -0,0 +1,26 @@ +/* { dg-options "-O2 -fdump-ipa-icf-details" } */ + +int +main (int argc, char **argv) +{ + __label__ lab4, lab5, lab6; + + void foo (void) { goto lab4; } + void foo2 (void) { goto lab4; } + void bar (void) { goto lab5; } + void baz (void) { goto lab6; } + + if (argc) + foo (); + else + foo2 (); + + lab4:; + bar (); + lab5:; + baz (); + lab6:; + return 0; +} + +/* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf" } } */ Index: gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-7.c =================================================================== --- gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-7.c (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-7.c (.../branches/gcc-7-branch) @@ -62,4 +62,4 @@ return bar (s, x); } -/* { dg-final { scan-ipa-dump-times "Discovered an indirect call to a known target" 3 "cp" } } */ +/* { dg-final { scan-ipa-dump-times "Discovered an indirect call to a known target" 3 "cp" { xfail { hppa*-*-* && { ! lp64 } } } } } */ Index: gcc/testsuite/gcc.dg/vect/pr82108.c =================================================================== --- gcc/testsuite/gcc.dg/vect/pr82108.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/gcc.dg/vect/pr82108.c (.../branches/gcc-7-branch) @@ -0,0 +1,47 @@ +/* { dg-do run } */ +/* { dg-require-effective-target vect_float } */ + +#include "tree-vect.h" + +void __attribute__((noinline,noclone)) +downscale_2 (const float* src, int src_n, float* dst) +{ + int i; + + for (i = 0; i < src_n; i += 2) { + const float* a = src; + const float* b = src + 4; + + dst[0] = (a[0] + b[0]) / 2; + dst[1] = (a[1] + b[1]) / 2; + dst[2] = (a[2] + b[2]) / 2; + dst[3] = (a[3] + b[3]) / 2; + + src += 2 * 4; + dst += 4; + } +} + +int main () +{ + const float in[4 * 4] = { + 1, 2, 3, 4, + 5, 6, 7, 8, + + 1, 2, 3, 4, + 5, 6, 7, 8 + }; + float out[2 * 4]; + + check_vect (); + + downscale_2 (in, 4, out); + + if (out[0] != 3 || out[1] != 4 || out[2] != 5 || out[3] != 6 + || out[4] != 3 || out[5] != 4 || out[6] != 5 || out[7] != 6) + __builtin_abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/ChangeLog (.../branches/gcc-7-branch) @@ -1,3 +1,455 @@ +2017-10-06 Jakub Jelinek + + PR c++/82299 + * g++.dg/cpp0x/pr82299.C: New test. + +2017-10-06 Christophe Lyon + + Backport from mainline r253251. + 2017-09-27 Christophe Lyon + + PR target/71727 + * gcc.target/aarch64/pr71727-2.c: New test. + +2017-10-03 Thomas Koenig + Steven G. Kargl + + Backport from trunk + PR fortran/80118 + * gfortran.dg/zero_sized_7.f90: New test. + +2017-10-02 Bill Schmidt + + Backport from mainline + 2017-09-29 Bill Schmidt + + PR tree-optimization/82337 + * gcc.c-torture/compile/pr82337.c: New file. + +2017-09-30 Jakub Jelinek + + Backported from mainline + 2017-09-29 Jakub Jelinek + + PR c/82340 + * gcc.dg/tree-ssa/pr82340.c: New test. + + 2017-09-27 Jakub Jelinek + + PR c++/82159 + * g++.dg/opt/pr82159.C: New test. + +2017-09-27 Christophe Lyon + + Backport from trunk r249639. + 2017-06-26 Christophe Lyon + + * lib/target-supports.exp + (check_effective_target_arm_neon_ok_nocache): Add flags with + -mfloat-abi=hard. Include arm_neon.h. + (check_effective_target_arm_neon_ok_no_float_abi_nocache): New. + (check_effective_target_arm_neon_ok_no_float_abi): New. + * gcc.target/arm/lto/pr65837_0.c: Require + arm_neon_ok_no_float_abi. Add -mfpu=neon to dg-lto-options. + * gcc.target/arm/lto/pr65837-attr_0.c: Require + arm_neon_ok_no_float_abi. Remove dg-suppress-ld-options. + +2017-09-26 Richard Biener + + Backport from mainline + 2017-09-19 Richard Biener + + PR tree-optimization/82244 + * gcc.dg/torture/pr82244.c: New testcase. + + 2017-09-21 Richard Biener + + PR tree-optimization/82276 + PR tree-optimization/82244 + * gcc.dg/torture/pr82276.c: New testcase. + + 2017-09-20 Richard Biener + + PR tree-optimization/82264 + * gcc.dg/torture/pr82264.c: New testcase. + + 2017-09-25 Richard Biener + + PR tree-optimization/82285 + * gcc.dg/torture/pr82285.c: New testcase. + + 2017-09-22 Richard Biener + + PR tree-optimization/82291 + * gcc.dg/torture/pr82291.c: New testcase. + +2017-09-22 Jakub Jelinek + + PR sanitizer/81929 + * g++.dg/ubsan/pr81929.C: New test. + +2017-09-19 Martin Liska + + Revert backport: + 2017-08-10 Martin Liska + + PR c++/81355 + * g++.dg/other/pr81355.C: New test. + +2017-09-18 Richard Biener + + Backport from mainline + 2017-09-04 Richard Biener + + PR tree-optimization/82084 + * g++.dg/torture/pr82084.C: New testcase. + + 2017-09-06 Richard Biener + + PR tree-optimization/82108 + * gcc.dg/vect/pr82108.c: New testcase. + +2017-09-15 Jakub Jelinek + + Backported from mainline + 2017-09-14 Jakub Jelinek + + PR target/81325 + * g++.dg/cpp0x/pr81325.C: New test. + + 2017-09-12 Jakub Jelinek + + PR target/82112 + * gcc.target/powerpc/pr82112.c: New test. + * g++.dg/ext/altivec-18.C: New test. + + PR target/82112 + * c-c++-common/pr82112.c: New test. + * gcc.dg/pr82112.c: New test. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-09-12 Martin Liska + + PR testsuite/82114 + * gcc.dg/gimplefe-14.c (main): Add handling of case 0. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-08-30 Martin Liska + + PR inline-asm/82001 + * gcc.dg/ipa/pr82001.c: New test. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-08-10 Martin Liska + + PR c++/81355 + * g++.dg/other/pr81355.C: New test. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-08-08 Martin Liska + + PR tree-opt/81696 + * gcc.dg/ipa/pr81696.c: New test. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-07-19 Martin Liska + + PR sanitizer/63361 + * c-c++-common/ubsan/float-cast-overflow-1.c: Add either + -ffloat-store or -mieee for targets that need it. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-06-28 Martin Liska + + PR ipa/81128 + * gcc.target/i386/pr81128.c: New test. + +2017-09-12 Bill Schmidt + + Backport from mainline + 2017-09-05 Bill Schmidt + + PR target/81833 + * gcc.target/powerpc/pr81833-1.c: New file. + * gcc.target/powerpc/pr81833-2.c: New file. + +2017-09-10 Bill Schmidt + + Backport from mainline + 2017-05-11 Bill Schmidt + + PR target/80695 + * gcc.target/powerpc/pr80695-p8.c: New file. + * gcc.target/powerpc/pr80695-p9.c: New file. + +2017-09-10 Eric Botcazou + + PR ada/79441 + * gnat.dg/pack9.adb: Robustify. + +2017-09-10 Jonathan Wakely + + PR c++/81852 + * g++.dg/cpp1y/feat-cxx11.C: Check __cpp_threadsafe_static_init. + * g++.dg/cpp1y/feat-cxx14.C: Likewise. + * g++.dg/cpp1y/feat-cxx98.C: Likewise. + * g++.dg/cpp1y/feat-neg.C: Likewise. + * g++.dg/cpp1z/feat-cxx1z.C: Likewise. + +2017-09-09 Eric Botcazou + + * gnat.dg/specs/atomic3.ads: New test. + +2017-09-09 Eric Botcazou + + * gnat.dg/specs/vfa.ads: Rename into... + * gnat.dg/specs/vfa1.ads: ...this. + * gnat.dg/specs/vfa2.ads: New test. + +2017-09-08 Eric Botcazou + + * gcc.dg/pr81988.c: New test. + +2017-09-07 Jakub Jelinek + + Backported from mainline + 2017-09-05 Jakub Jelinek + + PR middle-end/81768 + * gcc.dg/gomp/pr81768-2.c: New test. + + PR middle-end/81768 + * gcc.dg/gomp/pr81768-1.c: New test. + + 2017-09-01 Jakub Jelinek + + PR sanitizer/81923 + * gcc.dg/asan/pr81923.c: New test. + + 2017-08-03 Jakub Jelinek + + PR target/81621 + * gcc.dg/pr81621.c: New test. + + PR driver/81650 + * gcc.dg/pr81650.c: New test. + + PR middle-end/81052 + * c-c++-common/pr81052.c: New test. + +2017-09-06 Bill Schmidt + + Backport from mainline: + 2017-08-30 Bill Schmidt + + PR tree-optimization/81987 + * g++.dg/torture/pr81987.C: New file. + +2017-09-06 Jakub Jelinek + + PR testsuite/82120 + * gcc.dg/tree-ssa/pr81588.c: Don't run on logical_op_short_circuit + targets except for those where -mbranch-cost=2 is supported. + +2017-09-05 Bill Schmidt + + Backport from mainline + 2017-08-29 Bill Schmidt + Jakub Jelinek + Richard Biener + + PR tree-optimization/81503 + * gcc.c-torture/execute/pr81503.c: New file. + +2017-09-05 Pierre-Marie de Rodat + + Backport from trunk + PR ada/79542 + * gnat.dg/debug13.ads, gnat.dg/debug13.adb: New testcase. + +2017-09-05 Eric Botcazou + + * gnat.dg/incomplete5.ad[sb]: New test. + * gnat.dg/incomplete5_pkg.ad[sb]: New helper. + +2017-09-05 Eric Botcazou + + * gnat.dg/specs/uc2.ads: New test. + +2017-09-05 Eric Botcazou + + * testsuite/gnat.dg/array29.ad[sb]: New test. + +2017-09-04 Uros Bizjak + + * gcc.target/i386/mpx/mpx-os-support.h: New file. + * gcc.target/i386/mpx/mpx-check.h: Include mpx-os-support.h. + (check_osxsave): New function. + (main): Use __get_cpuid_count and return NORUNRES on failure. + Use check_osxsave. + * gcc.target/i386/mpx/va-arg-pack-1-lbv.c (foo1): Use + __builtin_va_arg_pack instead of __va_arg_pack. + * gcc.target/i386/mpx/va-arg-pack-1-nov.c (foo1): Ditto. + * gcc.target/i386/mpx/va-arg-pack-1-ubv.c (foo1): Ditto. + * gcc.target/i386/mpx/va-arg-pack-2-lbv.c (foo1): Ditto. + * gcc.target/i386/mpx/va-arg-pack-2-nov.c (foo1): Ditto. + * gcc.target/i386/mpx/va-arg-pack-2-ubv.c (foo1): Ditto. + +2017-09-02 Janus Weil + + Backport from trunk + PR fortran/81770 + * gfortran.dg/warn_target_lifetime_3.f90: Fix a typo. + * gfortran.dg/warn_target_lifetime_4.f90: New testcase. + +2017-08-29 Michael Meissner + + Back port from trunk + 2017-08-07 Michael Meissner + + PR target/81593 + * gcc.target/powerpc/vec-setup.h: New tests to test various + combinations of setting up vectors of 2 double word elements. + * gcc.target/powerpc/vec-setup-long.c: Likewise. + * gcc.target/powerpc/vec-setup-double.c: Likewise. + * gcc.target/powerpc/vec-setup-be-long.c: Likewise. + * gcc.target/powerpc/vec-setup-be-double.c: Likewise. + * gcc.target/powerpc/vsx-extract-6.c: New tests for optimzing + vector inserts from vector extracts. + * gcc.target/powerpc/vsx-extract-7.c: Likewise. + +2017-08-29 Richard Biener + + Backport from mainline + 2017-08-28 Richard Biener + + PR tree-optimization/81977 + * g++.dg/torture/pr81977.C: New testcase. + +2017-08-28 Richard Biener + + Backport from mainline + 2017-06-14 Richard Biener + + PR middle-end/81088 + * c-c++-common/ubsan/pr81088.c: New testcase. + + 2017-06-13 Richard Biener + + PR middle-end/81065 + * c-c++-common/ubsan/pr81065.c: New testcase. + + 2017-06-08 Marek Polacek + + PR sanitize/80932 + * c-c++-common/ubsan/pr80932.c: Test with ints, not with long ints. + + 2017-06-07 Marek Polacek + + PR sanitizer/80932 + * c-c++-common/ubsan/pr80932.c: New test. + +2017-08-28 Richard Biener + + Backport from mainline + 2017-08-21 Richard Biener + + PR middle-end/81884 + * g++.dg/torture/pr81884.C: New testcase. + +2017-08-28 Richard Biener + + Backport from mainline + 2017-08-01 Richard Biener + + PR tree-optimization/81181 + * gcc.dg/torture/pr81181.c: New testcase. + + 2017-08-08 Richard Biener + + PR tree-optimization/81723 + * gfortran.dg/pr81723.f: New testcase. + + 2017-08-24 Richard Biener + + PR target/81921 + * gcc/testsuite/gcc.target/i386/pr81921.c: New testcase. + +2017-05-19 Uros Bizjak + + Backport from mainline + 2017-08-23 Daniel Santos + + * lib/target-supports.exp (check_avx2_hw_available): + Fix breakage due NULL being undefined. + +2017-08-23 Peter Bergner + + Backport from mainline + 2017-08-17 Peter Bergner + + PR target/72804 + * gcc.target/powerpc/pr72804.c: New test. + +2017-08-22 Jerry DeLisle + + Backport from trunk + PR fortran/81296 + * gfortran.dg/dtio_12.f90: Update test. + +2017-08-22 Peter Bergner + + Backport from mainline + 2017-08-17 Peter Bergner + + PR target/80210 + * gcc.target/powerpc/pr80210.c: New test. + +2017-08-22 Yvan Roux + + Backport from mainline + 2017-08-22 Yvan Roux + + PR c++/80287 + * g++.dg/pr80287.C: New test. + +2017-08-20 John David Anglin + + PR ipa/77732 + * gcc.dg/ipa/ipcp-cstagg-7.c: Xfail on 32-bit hppa. + +2017-08-18 Jerry DeLisle + + Backport from trunk + PR fortran/80164 + * gfortran.dg/array_temporaries_4.f90: New test. + +2017-08-16 Bill Schmidt + + Backport from mainline + 2017-08-08 Bill Schmidt + + PR tree-optimization/81354 + * g++.dg/torture/pr81354.C: New file. + +2017-08-15 Joseph Myers + + PR target/78460 + PR target/67712 + * gcc.c-torture/compile/string-large-1.c: New test. + 2017-08-14 Release Manager * GCC 7.2.0 released. Index: gcc/testsuite/g++.dg/opt/pr82159.C =================================================================== --- gcc/testsuite/g++.dg/opt/pr82159.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/opt/pr82159.C (.../branches/gcc-7-branch) @@ -0,0 +1,18 @@ +// PR c++/82159 +// { dg-do compile } +// { dg-options "" } + +template +struct S +{ + ~S () {} + template S foo () { return S (); } + unsigned char data[N]; +}; + +int +main () +{ + S<16> d; + S<0> t = d.foo<0> (); +} Index: gcc/testsuite/g++.dg/ubsan/pr81929.C =================================================================== --- gcc/testsuite/g++.dg/ubsan/pr81929.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/ubsan/pr81929.C (.../branches/gcc-7-branch) @@ -0,0 +1,14 @@ +// PR sanitizer/81929 +// { dg-do compile } +// { dg-options "-std=c++14 -fsanitize=undefined" } + +struct S { S &operator<< (long); S foo (); S (); }; + +void +bar () +{ + static_cast(S () << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 + << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 + << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 + << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0).foo (); +} Index: gcc/testsuite/g++.dg/cpp0x/nullptr39.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/nullptr39.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/cpp0x/nullptr39.C (.../branches/gcc-7-branch) @@ -0,0 +1,15 @@ +// PR c++/81671 +// { dg-do compile { target c++11 } } + +namespace std { typedef decltype(nullptr) nullptr_t; } + +template struct Bar +{}; +template struct Bar +{ + template struct Bind { constexpr static int const cb = 0; }; +}; +int foo() +{ + return Bar::Bind::cb; +} Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv12.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv12.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv12.C (.../branches/gcc-7-branch) @@ -0,0 +1,18 @@ +// PR c++/80767 +// { dg-do compile { target c++11 } } + +template struct A { using type = U; }; +template struct B : B::type, B::type { + using type = B; + using B::type::operator(); +}; +template struct B { using type = F; }; +struct { + template ::type...>::type> + Overload operator()(F...){} +} a; +int main() { + auto f = a([](int) {}, [](float) {}); + f({}); +} Index: gcc/testsuite/g++.dg/cpp0x/pr82299.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/pr82299.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/cpp0x/pr82299.C (.../branches/gcc-7-branch) @@ -0,0 +1,9 @@ +// PR c++/82299 +// { dg-do compile { target c++11 } } +// { dg-options "-Wuseless-cast" } + +enum Enum : char { A = 0, B = 1 }; + +struct S { + Enum e { Enum::A }; // { dg-bogus "useless cast to type" } +}; Index: gcc/testsuite/g++.dg/cpp0x/pr81325.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/pr81325.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/cpp0x/pr81325.C (.../branches/gcc-7-branch) @@ -0,0 +1,84 @@ +// PR target/81325 +// { dg-do compile { target c++11 } } +// { dg-options "-O2 -fcompare-debug" } + +struct A { A(const char *, const int & = 0); }; +template struct B; +template struct C { + int _M_i; + void m_fn1() { __atomic_fetch_add(&_M_i, 0, __ATOMIC_RELAXED); } +}; +struct D { + int *Data; + long Length = 0; + D(int) : Data() {} +}; +template <> struct B : C {}; +struct F { + B RefCount; + void m_fn2() { RefCount.m_fn1(); } +}; +struct G { + F *Obj; + G(const G &p1) : Obj(p1.Obj) { + if (Obj) { + F *a = 0; + a->m_fn2(); + } + } +}; +struct H { + int CPlusPlus : 1; +}; +struct I { + enum {} KindId; +}; +template struct J { + void operator()(); + ResultT operator()(ArgT) {} +}; +struct K { + int AllowBind; + I SupportedKind; + I RestrictKind; + G Implementation; +}; +struct L { + L(int) : Implementation(Implementation) {} + K Implementation; +}; +struct M { + int Param1; +}; +struct N { + N(int, L &p2) : Param2(p2) {} + L Param2; +}; +struct O { + L m_fn3(); +}; +L ignoringImpCasts(L); +J b; +L hasName(const A &); +M hasOverloadedOperatorName(D); +J c; +struct P { + void m_fn4(L, int); +}; +struct Q { + void m_fn5(P *); +}; +H d; +void Q::m_fn5(P *p1) { + if (!d.CPlusPlus) { + c(); + L e = 0, f = ignoringImpCasts(e); + b(ignoringImpCasts(f)).m_fn3(); + } + hasOverloadedOperatorName(0); + hasName(""); + L g = 0; + N(0, g); + L h(0); + p1->m_fn4(h, 0); +} Index: gcc/testsuite/g++.dg/torture/pr81884.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr81884.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/torture/pr81884.C (.../branches/gcc-7-branch) @@ -0,0 +1,39 @@ +/* { dg-do run } */ + +typedef unsigned long uint64_t; + +struct value_t { + uint64_t _count; + value_t(uint64_t c) : _count(c) {} +}; + +struct X { + value_t eventTime; + uint64_t arr[0]; +}; + +X* x; + +__attribute__((noclone, noinline)) +void initialize() +{ + x->arr[0] = 11; + x->arr[1] = 12; + x->eventTime = value_t(10); + x->arr[2] = 13; + x->arr[3] = 14; +} + +int main() +{ + char buffer[sizeof(X) + sizeof(uint64_t)*4]; + x = (X*)buffer; + x->eventTime = value_t(999); + x->arr[0] = 1; + x->arr[1] = 2; + x->arr[2] = 3; + x->arr[3] = 4; + initialize(); + if (x->arr[0] != 11 || x->arr[1] != 12 || x->arr[2] != 13 || x->arr[3] != 14) + __builtin_abort (); +} Index: gcc/testsuite/g++.dg/torture/pr81354.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr81354.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/torture/pr81354.C (.../branches/gcc-7-branch) @@ -0,0 +1,24 @@ +// PR81354 reported this test as crashing in a limited range of revisions. +// { dg-do compile } + +struct T { double a; double b; }; + +void foo(T Ad[], int As[2]) +{ + int j; + int i; + int Bs[2] = {0,0}; + T Bd[16]; + + for (j = 0; j < 4; j++) { + for (i = 0; i + 1 <= j + 1; i++) { + Ad[i + As[0] * j] = Bd[i + Bs[0] * j]; + } + + i = j + 1; // <- comment out this line and it does not crash + for (; i + 1 < 5; i++) { + Ad[i + As[0] * j].a = 0.0; + Ad[i + As[0] * j].b = 0.0; + } + } +} Index: gcc/testsuite/g++.dg/torture/pr82084.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr82084.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/torture/pr82084.C (.../branches/gcc-7-branch) @@ -0,0 +1,9 @@ +// { dg-do compile } + +#include +int main() +{ + wchar_t strs[4][2]= { L"A", L"B", L"C" , L"D"}; + std::wstring ss(strs[0]); + return 0; +} Index: gcc/testsuite/g++.dg/torture/pr81977.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr81977.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/torture/pr81977.C (.../branches/gcc-7-branch) @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-require-effective-target int32plus } */ + +#include + +typedef struct +{ + uint16_t x ; + uint16_t y ; + uint64_t z ; +} __attribute__((packed, aligned(1))) TestMsgType; + +struct Payload +{ + uint16_t header_info[2]; + TestMsgType _pref; + void Pack(uint8_t *buffer) + { + __builtin_memcpy(buffer, &_pref, sizeof(_pref)); + } + void UnPack(uint8_t *buffer) + { + __builtin_memcpy(&_pref, buffer, sizeof(_pref)); + } +}; + + +struct Msg +{ + Payload _payload; + void Pack(uint8_t *buffer) + { + _payload.Pack(buffer); + } + + void UnPack(uint8_t *buffer) + { + _payload.UnPack(buffer); + } +}; + +int main() +{ + uint8_t * buffer = new uint8_t [30]; + Msg msg; + Msg msg1; + msg._payload._pref.x = 0xabcd; + msg._payload._pref.y = 0xa; + msg._payload._pref.z = 0x0001020304051617; + msg.Pack(&buffer[0]); + msg1.UnPack(&buffer[0]); + if (msg1._payload._pref.x != 0xabcd) + __builtin_abort (); + delete [] buffer; +} Index: gcc/testsuite/g++.dg/torture/pr81987.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr81987.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/torture/pr81987.C (.../branches/gcc-7-branch) @@ -0,0 +1,61 @@ +extern short var_1; +extern const short var_3; +extern unsigned long int var_9; +extern short var_13; +extern const unsigned long int var_15; +extern const unsigned long int var_37; +extern unsigned long int var_40; +extern long long int var_47; +extern short var_48; +extern const short var_54; +extern long long int var_79; +extern long long int var_81; +extern long long int var_94; +extern long long int var_95; +extern long long int var_701; +extern unsigned long int var_786; +extern short var_788; +extern long long int var_844; + +struct struct_1 { + short member_1_2 : 15; + static long long int member_1_3; +}; + +extern struct_1 struct_obj_6; +extern struct_1 struct_obj_8; + +void foo() { + int a = var_3 <= 602154393864UL; + if (var_81 ? 0 : var_3 && var_9) + ; + else { + var_94 = 0; + if (var_3 && var_48 || var_13) { + if (var_48) + var_95 = 0; + short b((2364461588881776511UL + var_3) * (2 ? var_13 : 0) || var_1); + struct_obj_8.member_1_2 = b; + if (var_15) { + if (var_81) + if (var_47) + ; + else if (var_40) + var_701 = 0; + } else { + if (var_40) + var_79 = 0; + if (var_54) { + if (var_37) + var_786 = 0; + else + var_788 = 0; + struct_obj_6.member_1_3 = + (2364461588881776511UL + var_3) * (2 ? var_13 : 0); + } + } + if ((2364461588881776511UL + var_3) * (2 ? var_13 : 0)) + var_844 = 0; + } + } +} Index: gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C =================================================================== --- gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C (.../branches/gcc-7-branch) @@ -125,6 +125,12 @@ # error "__cpp_alias_templates != 200704" #endif +#ifndef __cpp_threadsafe_static_init +# error "__cpp_threadsafe_static_init" +#elif __cpp_threadsafe_static_init != 200806 +# error "__cpp_threadsafe_static_init != 200806" +#endif + // C++14 features allowed in C++11 in non-ANSI modes: #ifndef __cpp_binary_literals Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-auto1.C =================================================================== --- gcc/testsuite/g++.dg/cpp1y/lambda-generic-auto1.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-auto1.C (.../branches/gcc-7-branch) @@ -0,0 +1,19 @@ +// Related to c++/81525 +// { dg-do compile { target c++14 } } + +template +struct A +{ + template + static void f() + { + [](auto b) { + auto c = +b; + }(42); + } +}; + +int main() +{ + A::f(); +} Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1.C =================================================================== --- gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1.C (.../branches/gcc-7-branch) @@ -0,0 +1,17 @@ +// PR c++/81236 +// { dg-do compile { target c++14 } } + +struct A { constexpr operator int() { return 24; } }; + +struct MyType { + void crash() { + auto l = [&](auto i){ + make_crash(); // Line (1) + }; + + l(A{}); + } + + template + void make_crash() {} +}; Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-const4.C =================================================================== --- gcc/testsuite/g++.dg/cpp1y/lambda-generic-const4.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-const4.C (.../branches/gcc-7-branch) @@ -0,0 +1,20 @@ +// PR c++/81525 +// { dg-do compile { target c++14 } } + +template struct A { + constexpr operator int () const { return i; } +}; +template constexpr A a = {}; + +template void foo (F f) { + f (A<0>{}); +} +template +void bar (T) { + constexpr auto N = a<1>; + auto f = [&] (auto i) { + static_assert (static_cast(N) == 1, ""); + }; + foo (f); +} +int main () { bar (0); } Index: gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C =================================================================== --- gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C (.../branches/gcc-7-branch) @@ -118,6 +118,12 @@ # error "__cpp_alias_templates != 200704" #endif +#ifndef __cpp_threadsafe_static_init +# error "__cpp_threadsafe_static_init" +#elif __cpp_threadsafe_static_init != 200806 +# error "__cpp_threadsafe_static_init != 200806" +#endif + // C++14 features: #ifndef __cpp_binary_literals Index: gcc/testsuite/g++.dg/cpp1y/feat-cxx98.C =================================================================== --- gcc/testsuite/g++.dg/cpp1y/feat-cxx98.C (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/g++.dg/cpp1y/feat-cxx98.C (.../branches/gcc-7-branch) @@ -15,6 +15,14 @@ # error "__cpp_exceptions != 199711" #endif +// C++11 features allowed in C++98: + +#ifndef __cpp_threadsafe_static_init +# error "__cpp_threadsafe_static_init" +#elif __cpp_threadsafe_static_init != 200806 +# error "__cpp_threadsafe_static_init != 200806" +#endif + // C++14 features allowed in C++98 in non-ANSI modes: #ifndef __cpp_binary_literals Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-const5.C =================================================================== --- gcc/testsuite/g++.dg/cpp1y/lambda-generic-const5.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-const5.C (.../branches/gcc-7-branch) @@ -0,0 +1,17 @@ +// PR c++/78840 +// { dg-do compile { target c++14 } } + +int global; + +void Bar (int); + +template void Foo () { + const int cst = global; + auto lam0 = [&]() -> void { + auto lam1 = [&]() -> void { cst; }; + + Bar (cst); + }; +} + +template void Foo <0> (); Index: gcc/testsuite/g++.dg/cpp1y/feat-neg.C =================================================================== --- gcc/testsuite/g++.dg/cpp1y/feat-neg.C (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/g++.dg/cpp1y/feat-neg.C (.../branches/gcc-7-branch) @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-fno-rtti -fno-exceptions" } +// { dg-options "-fno-rtti -fno-exceptions -fno-threadsafe-statics" } // C++98 features with explicit opt-out: @@ -10,3 +10,9 @@ #ifndef __cpp_exceptions # error "__cpp_exceptions" // { dg-error "error" } #endif + +// C++11 features with explicit opt-out: + +#ifndef __cpp_threadsafe_static_init +# error "__cpp_threadsafe_static_init" // { dg-error "error" } +#endif Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1a.C =================================================================== --- gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1a.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1a.C (.../branches/gcc-7-branch) @@ -0,0 +1,17 @@ +// PR c++/81236 +// { dg-do compile { target c++14 } } + +struct A { constexpr operator int() { return 24; } }; + +struct MyType { + void crash() { + auto l = [&](auto i){ + MyType::make_crash(); // Line (1) + }; + + l(A{}); + } + + template + void make_crash() {} +}; Index: gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C =================================================================== --- gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C (.../branches/gcc-7-branch) @@ -106,6 +106,12 @@ # error "__cpp_alias_templates != 200704" #endif +#ifndef __cpp_threadsafe_static_init +# error "__cpp_threadsafe_static_init" +#elif __cpp_threadsafe_static_init != 200806 +# error "__cpp_threadsafe_static_init != 200806" +#endif + // C++14 features: #ifndef __cpp_binary_literals Index: gcc/testsuite/g++.dg/cpp1z/constexpr-lambda16.C =================================================================== --- gcc/testsuite/g++.dg/cpp1z/constexpr-lambda16.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/cpp1z/constexpr-lambda16.C (.../branches/gcc-7-branch) @@ -0,0 +1,15 @@ +// PR c++/80642 +// { dg-do compile { target c++14 } } + +int main() +{ + [](auto i) + { + if (i) + { + int j; + return i + j; + } + return i; + }(0); +} Index: gcc/testsuite/g++.dg/cpp1z/lambda-inherit1.C =================================================================== --- gcc/testsuite/g++.dg/cpp1z/lambda-inherit1.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/cpp1z/lambda-inherit1.C (.../branches/gcc-7-branch) @@ -0,0 +1,23 @@ +// PR c++/80767 +// { dg-options -std=c++17 } + +template +struct overloader : Fs... +{ + overloader(Fs... fs) + : Fs(fs)... + { } + + using Fs::operator()...; +}; + +struct a { void foo() { } }; +struct b { void bar() { } }; +struct c { void bar() { } }; + +int main() { + overloader{ + [](a x) { x.foo(); }, + [](auto x) { x.bar(); } + }(a{}); +} Index: gcc/testsuite/g++.dg/ext/attrib54.C =================================================================== --- gcc/testsuite/g++.dg/ext/attrib54.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/ext/attrib54.C (.../branches/gcc-7-branch) @@ -0,0 +1,14 @@ +// PR c++/82406 + +class a +{ +public: + template void operator() (const b &); +}; +void c () throw () __attribute__ ((__nonnull__)); +void +d () +{ + a e; + e (c); +} Index: gcc/testsuite/g++.dg/ext/altivec-18.C =================================================================== --- gcc/testsuite/g++.dg/ext/altivec-18.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/ext/altivec-18.C (.../branches/gcc-7-branch) @@ -0,0 +1,14 @@ +// PR target/82112 +// { dg-do compile { target powerpc*-*-* } } +// { dg-require-effective-target powerpc_altivec_ok } +// { dg-options "-maltivec" } + +#include + +__attribute__((aligned (16))) extern const unsigned char c[16]; + +void +foo (void) +{ + vec_ld (0, c); +} Index: gcc/testsuite/g++.dg/ext/varargs2.C =================================================================== --- gcc/testsuite/g++.dg/ext/varargs2.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/ext/varargs2.C (.../branches/gcc-7-branch) @@ -0,0 +1,17 @@ +// { dg-do run } + +int c; +struct X { X() {}; X(const X&) { ++c; } }; +void Foo (X, ...) {} +void bin (X &p) +{ + Foo (p, p); +} + +int main() +{ + X x; + bin(x); + if (c != 2) + __builtin_abort(); +} Index: gcc/testsuite/g++.dg/pr80287.C =================================================================== --- gcc/testsuite/g++.dg/pr80287.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/pr80287.C (.../branches/gcc-7-branch) @@ -0,0 +1,13 @@ +// PR c++/80287 +// { dg-do compile { target c++11 } } +// { dg-options "-g" } + +struct A { + operator long() {} +} __attribute__((__may_alias__)); + +struct { + A ino; +} a; + +char b = a.ino; Index: gcc/testsuite/g++.dg/other/bitfield6.C =================================================================== --- gcc/testsuite/g++.dg/other/bitfield6.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/other/bitfield6.C (.../branches/gcc-7-branch) @@ -0,0 +1,9 @@ +// PR c++/81607 + +int a; + +struct b { + long c : 32; +} d; + +char f = (903092 ? int(d.c) : 0) << a; Index: gcc/testsuite/g++.dg/lto/pr70029_0.C =================================================================== --- gcc/testsuite/g++.dg/lto/pr70029_0.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/lto/pr70029_0.C (.../branches/gcc-7-branch) @@ -0,0 +1,10 @@ +// PR c++/70029 +// { dg-lto-do assemble } + +struct A +{ + A(); + int foo() && __attribute__ ((__warn_unused_result__)) { return 0; } +}; + +A a; Index: gcc/testsuite/g++.dg/warn/Wbool-operation-1.C =================================================================== --- gcc/testsuite/g++.dg/warn/Wbool-operation-1.C (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/g++.dg/warn/Wbool-operation-1.C (.../branches/gcc-7-branch) @@ -0,0 +1,11 @@ +// PR c++/82040 +// { dg-do compile { target c++11 } } +// { dg-options "-Wbool-operation" } + +template +decltype (~c{}) +call () +{ + return ~false; // { dg-warning "on an expression of type bool" } +} +template int call(); Index: gcc/testsuite/c-c++-common/ubsan/pr81065.c =================================================================== --- gcc/testsuite/c-c++-common/ubsan/pr81065.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/c-c++-common/ubsan/pr81065.c (.../branches/gcc-7-branch) @@ -0,0 +1,13 @@ +/* { dg-do run } */ +/* { dg-options "-fsanitize=undefined -fsanitize-undefined-trap-on-error" } */ + +unsigned char x = 154; +int foo() { + // 8575 * (254408 - 9057) = 8575 * 245351 = 2103884825 = 0x7d66bc19 + return 8575 * (1652 * x - 9057); +} + +int main() { + foo(); + return 0; +} Index: gcc/testsuite/c-c++-common/ubsan/pr80932.c =================================================================== --- gcc/testsuite/c-c++-common/ubsan/pr80932.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/c-c++-common/ubsan/pr80932.c (.../branches/gcc-7-branch) @@ -0,0 +1,17 @@ +/* PR sanitizer/80932 */ +/* { dg-do run } */ +/* { dg-options "-fsanitize=undefined -fsanitize-undefined-trap-on-error" } */ + +int x = 1; + +int +foo (void) +{ + return ((int) (2855545792U * x) - (int) (3269399503U * x)) * -5; +} + +int +main () +{ + foo (); +} Index: gcc/testsuite/c-c++-common/ubsan/pr81088.c =================================================================== --- gcc/testsuite/c-c++-common/ubsan/pr81088.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/c-c++-common/ubsan/pr81088.c (.../branches/gcc-7-branch) @@ -0,0 +1,11 @@ +/* { dg-do run } */ +/* { dg-options "-fsanitize=undefined -fsanitize-undefined-trap-on-error" } */ + +short s = 2; +short y = 1; +int i; +int main() +{ + i = -(s + (int)(~(unsigned)(0 / y))) + 0x7fffffff; + return 0; +} Index: gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-1.c =================================================================== --- gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-1.c (.../tags/gcc_7_2_0_release) +++ gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-1.c (.../branches/gcc-7-branch) @@ -1,6 +1,7 @@ /* { dg-do run { target { lp64 || ilp32 } } } */ /* { dg-options "-fsanitize=float-cast-overflow" } */ -/* { dg-additional-options "-msse2 -mfpmath=sse" { target { sse2_runtime && ia32 } } } */ +/* { dg-additional-options "-ffloat-store" { target { ia32 } } } */ +/* { dg-additional-options "-mieee" { target { { alpha*-*-* } || { sh*-*-* } } } } */ #include #include "float-cast.h" Index: gcc/testsuite/c-c++-common/pr82112.c =================================================================== --- gcc/testsuite/c-c++-common/pr82112.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/c-c++-common/pr82112.c (.../branches/gcc-7-branch) @@ -0,0 +1,13 @@ +/* PR target/82112 */ +/* { dg-do compile } */ + +int c[10], d[10], e[10], f[10], g[10], h[10], i[10], j[10], k[10], l[10]; + +void +foo (void) +{ + __atomic_load (c, d, __ATOMIC_ACQUIRE); + __atomic_store (e, f, __ATOMIC_SEQ_CST); + __atomic_exchange (g, h, i, __ATOMIC_RELAXED); + __atomic_compare_exchange (j, k, l, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); +} Index: gcc/testsuite/c-c++-common/pr81052.c =================================================================== --- gcc/testsuite/c-c++-common/pr81052.c (.../tags/gcc_7_2_0_release) (nonexistent) +++ gcc/testsuite/c-c++-common/pr81052.c (.../branches/gcc-7-branch) @@ -0,0 +1,28 @@ +/* PR middle-end/81052 */ +/* { dg-do compile } */ +/* { dg-options "-fopenmp-simd -O2" } */ + +int +foo (int x, int y) +{ + int i; +#pragma omp simd + for (i = x; i < y; ++i) + return 0; /* { dg-error "invalid branch to/from OpenMP structured block" } */ + return 1; +} + +#ifdef __cplusplus +template +T +bar (T x, T y) +{ + T i; +#pragma omp simd + for (i = x; i < y; ++i) + return 0; /* { dg-error "invalid branch to/from OpenMP structured block" "" { target c++ } } */ + return 1; +} + +int x = bar (1, 7); +#endif Index: gcc/cp/typeck.c =================================================================== --- gcc/cp/typeck.c (.../tags/gcc_7_2_0_release) +++ gcc/cp/typeck.c (.../branches/gcc-7-branch) @@ -5927,6 +5927,7 @@ { /* Warn if the expression has boolean value. */ if (TREE_CODE (TREE_TYPE (arg)) == BOOLEAN_TYPE + && (complain & tf_warning) && warning_at (location, OPT_Wbool_operation, "%<~%> on an expression of type bool")) inform (location, "did you mean to use logical not (%)?"); @@ -8413,7 +8414,10 @@ { tree elt = CONSTRUCTOR_ELT (rhs, 0)->value; if (check_narrowing (ENUM_UNDERLYING_TYPE (type), elt, complain)) - rhs = cp_build_c_cast (type, elt, complain); + { + warning_sentinel w (warn_useless_cast); + rhs = cp_build_c_cast (type, elt, complain); + } else rhs = error_mark_node; } Index: gcc/cp/decl.c =================================================================== --- gcc/cp/decl.c (.../tags/gcc_7_2_0_release) +++ gcc/cp/decl.c (.../branches/gcc-7-branch) @@ -5579,9 +5579,10 @@ "uninitialized const %qD", decl); else { - error_at (DECL_SOURCE_LOCATION (decl), - "uninitialized variable %qD in % function", - decl); + if (!is_instantiation_of_constexpr (current_function_decl)) + error_at (DECL_SOURCE_LOCATION (decl), + "uninitialized variable %qD in % function", + decl); cp_function_chain->invalid_constexpr = true; } @@ -6099,7 +6100,10 @@ { tree elt = CONSTRUCTOR_ELT (init, 0)->value; if (check_narrowing (ENUM_UNDERLYING_TYPE (type), elt, complain)) - return cp_build_c_cast (type, elt, tf_warning_or_error); + { + warning_sentinel w (warn_useless_cast); + return cp_build_c_cast (type, elt, tf_warning_or_error); + } else return error_mark_node; } Index: gcc/cp/tree.c =================================================================== --- gcc/cp/tree.c (.../tags/gcc_7_2_0_release) +++ gcc/cp/tree.c (.../branches/gcc-7-branch) @@ -2767,6 +2767,7 @@ { tree obj; /* The object to be substituted for a PLACEHOLDER_EXPR. */ bool seen; /* Whether we've encountered a PLACEHOLDER_EXPR. */ + hash_set *pset; /* To avoid walking same trees multiple times. */ }; /* Like substitute_placeholder_in_expr, but handle C++ tree codes and @@ -2789,8 +2790,8 @@ case PLACEHOLDER_EXPR: { tree x = obj; - for (; !(same_type_ignoring_top_level_qualifiers_p - (TREE_TYPE (*t), TREE_TYPE (x))); + for (; !same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (*t), + TREE_TYPE (x)); x = TREE_OPERAND (x, 0)) gcc_assert (TREE_CODE (x) == COMPONENT_REF); *t = x; @@ -2822,8 +2823,7 @@ valp = &TARGET_EXPR_INITIAL (*valp); } d->obj = subob; - cp_walk_tree (valp, replace_placeholders_r, - data_, NULL); + cp_walk_tree (valp, replace_placeholders_r, data_, d->pset); d->obj = obj; } *walk_subtrees = false; @@ -2855,10 +2855,11 @@ return exp; tree *tp = &exp; - replace_placeholders_t data = { obj, false }; + hash_set pset; + replace_placeholders_t data = { obj, false, &pset }; if (TREE_CODE (exp) == TARGET_EXPR) tp = &TARGET_EXPR_INITIAL (exp); - cp_walk_tree (tp, replace_placeholders_r, &data, NULL); + cp_walk_tree (tp, replace_placeholders_r, &data, &pset); if (seen_p) *seen_p = data.seen; return exp; @@ -4217,6 +4218,21 @@ TYPE_RAISES_EXCEPTIONS (typeb), ce_exact); } +/* Copy the language-specific type variant modifiers from TYPEB to TYPEA. For + C++, these are the exception-specifier and ref-qualifier. */ + +tree +cxx_copy_lang_qualifiers (const_tree typea, const_tree typeb) +{ + tree type = CONST_CAST_TREE (typea); + if (TREE_CODE (type) == FUNCTION_TYPE || TREE_CODE (type) == METHOD_TYPE) + { + type = build_exception_variant (type, TYPE_RAISES_EXCEPTIONS (typeb)); + type = build_ref_qualified_type (type, type_memfn_rqual (typeb)); + } + return type; +} + /* Apply FUNC to all language-specific sub-trees of TP in a pre-order traversal. Called from walk_tree. */ Index: gcc/cp/ChangeLog =================================================================== --- gcc/cp/ChangeLog (.../tags/gcc_7_2_0_release) +++ gcc/cp/ChangeLog (.../branches/gcc-7-branch) @@ -1,3 +1,98 @@ +2017-10-06 Jakub Jelinek + + PR c++/82299 + * decl.c (reshape_init): Suppress warn_useless_cast for direct enum + init. + * typeck.c (convert_for_assignment): Likewise. + +2017-10-05 Jason Merrill + + * call.c (convert_arg_to_ellipsis): Use the result of force_rvalue. + +2017-10-04 Jason Merrill + + PR c++/82406 - C++ error with noexcept function type + PR c++/70029 - ICE with ref-qualifier and -flto + * tree.c (cxx_copy_lang_qualifiers): New. + * cp-tree.h: Declare it. + * cp-objcp-common.h: Define LANG_HOOKS_COPY_LANG_QUALIFIERS. + + PR c++/81525 - broken handling of auto in generic lambda. + * pt.c (tsubst_decl) [VAR_DECL]: Use strip_innermost_template_args. + +2017-09-22 Eric Botcazou + + PR bootstrap/81926 + * cp-objcp-common.c (cp_get_debug_type): Do only one lookup + +2017-09-22 Jakub Jelinek + + PR sanitizer/81929 + * tree.c (struct replace_placeholders_t): Add pset field. + (replace_placeholders_r): Call cp_walk_tree with d->pset as + last argument instead of NULL. Formatting fix. + (replace_placeholders): Add pset variable, add its address + into data. Pass &pset instead of NULL to cp_walk_tree. + +2017-09-18 Jason Merrill + + PR c++/81236 - ICE with template-id in generic lambda + * parser.c (parsing_default_capturing_generic_lambda): Don't check + for enclosing template. + * semantics.c (finish_qualified_id_expr): Call it. + * cp-tree.h: Adjust. + + PR c++/80767 - unnecessary instantiation of generic lambda + PR c++/82030 - ICE inheriting from multiple lambdas + * call.c (convert_like_real): Call build_user_type_conversion_1 if + cand is null. + (add_conv_candidate): Build a ck_user conversion with no candidate. + + PR c++/80935 - wrong C++17 error with lambda + * decl.c (check_for_uninitialized_const_var): Check + is_instantiation_of_constexpr. + + PR c++/81671 - nullptr_t template parameter + * pt.c (convert_nontype_argument): Fix nullptr_t check. + + PR c++/81525 - wrong constant value with generic lambda + * pt.c (tsubst_decl) [VAR_DECL]: Avoid clobbering auto. + (tsubst_copy) [VAR_DECL]: Handle auto. + +2017-09-15 Jakub Jelinek + + Backported from mainline + 2017-09-14 Jakub Jelinek + + PR c++/81314 + * cp-gimplify.c (omp_var_to_track): Look through references. + (omp_cxx_notice_variable): Likewise. + +2017-09-09 Eric Botcazou + + PR bootstrap/81926 + * cp-objcp-common.c (struct debug_type_hasher): New class. + (debug_type_hash): New variable. + (cp_get_debug_type): Associate the OFFSET_TYPEs with the types. + +2017-09-01 Marek Polacek + + Backported from mainline + 2017-09-01 Marek Polacek + + PR c++/82040 + * typeck.c (cp_build_unary_op): Avoid re-entering reporting routines. + +2017-08-25 Marek Polacek + + Backported from mainline + 2017-08-08 Marek Polacek + + PR c++/81607 + * cp-gimplify.c (cp_fold): If folding exposed a branch of + a COND_EXPR, convert it to the original type of the COND_EXPR, if + they differ. + 2017-08-14 Release Manager * GCC 7.2.0 released. @@ -4,8 +99,8 @@ 2017-08-09 Leonid Koppel - PR c++/67054 - Inherited ctor with non-default-constructible members - * method.c (walk_field_subobs) Consider member initializers (NSDMIs) + PR c++/67054 - Inherited ctor with non-default-constructible members + * method.c (walk_field_subobs) Consider member initializers (NSDMIs) when deducing an inheriting constructor. 2017-07-27 Paolo Carlini Index: gcc/cp/cp-gimplify.c =================================================================== --- gcc/cp/cp-gimplify.c (.../tags/gcc_7_2_0_release) +++ gcc/cp/cp-gimplify.c (.../branches/gcc-7-branch) @@ -924,6 +924,8 @@ tree type = TREE_TYPE (decl); if (is_invisiref_parm (decl)) type = TREE_TYPE (type); + else if (TREE_CODE (type) == REFERENCE_TYPE) + type = TREE_TYPE (type); while (TREE_CODE (type) == ARRAY_TYPE) type = TREE_TYPE (type); if (type == error_mark_node || !CLASS_TYPE_P (type)) @@ -976,6 +978,8 @@ tree type = TREE_TYPE (decl); if (is_invisiref_parm (decl)) type = TREE_TYPE (type); + else if (TREE_CODE (type) == REFERENCE_TYPE) + type = TREE_TYPE (type); while (TREE_CODE (type) == ARRAY_TYPE) type = TREE_TYPE (type); get_copy_ctor (type, tf_none); @@ -2311,9 +2315,9 @@ /* A COND_EXPR might have incompatible types in branches if one or both arms are bitfields. If folding exposed such a branch, fix it up. */ - if (TREE_CODE (x) != code) - if (tree type = is_bitfield_expr_with_lowered_type (x)) - x = fold_convert (type, x); + if (TREE_CODE (x) != code + && !useless_type_conversion_p (TREE_TYPE (org_x), TREE_TYPE (x))) + x = fold_convert (TREE_TYPE (org_x), x); break; Index: gcc/cp/pt.c =================================================================== --- gcc/cp/pt.c (.../tags/gcc_7_2_0_release) +++ gcc/cp/pt.c (.../branches/gcc-7-branch) @@ -6849,7 +6849,7 @@ } else if (NULLPTR_TYPE_P (type)) { - if (expr != nullptr_node) + if (!NULLPTR_TYPE_P (TREE_TYPE (expr))) { if (complain & tf_error) error ("%qE is not a valid template argument for type %qT " @@ -12896,7 +12896,17 @@ && VAR_HAD_UNKNOWN_BOUND (t) && type != error_mark_node) type = strip_array_domain (type); - type = tsubst (type, args, complain, in_decl); + tree sub_args = args; + if (tree auto_node = type_uses_auto (type)) + { + /* Mask off any template args past the variable's context so we + don't replace the auto with an unrelated argument. */ + int nouter = TEMPLATE_TYPE_LEVEL (auto_node) - 1; + int extra = TMPL_ARGS_DEPTH (args) - nouter; + if (extra > 0) + sub_args = strip_innermost_template_args (args, extra); + } + type = tsubst (type, sub_args, complain, in_decl); } if (VAR_P (r)) { @@ -14687,6 +14697,10 @@ DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (r) = TREE_CONSTANT (r) = true; DECL_INITIAL (r) = init; + if (tree auto_node = type_uses_auto (TREE_TYPE (r))) + TREE_TYPE (r) + = do_auto_deduction (TREE_TYPE (r), init, auto_node, + complain, adc_variable_type); } gcc_assert (cp_unevaluated_operand || TREE_STATIC (r) || decl_constant_var_p (r) Index: gcc/cp/semantics.c =================================================================== --- gcc/cp/semantics.c (.../tags/gcc_7_2_0_release) +++ gcc/cp/semantics.c (.../branches/gcc-7-branch) @@ -2008,7 +2008,9 @@ qualifying_class); pop_deferring_access_checks (); } - else if (BASELINK_P (expr) && !processing_template_decl) + else if (BASELINK_P (expr) + && (!processing_template_decl + || parsing_default_capturing_generic_lambda ())) { /* See if any of the functions are non-static members. */ /* If so, the expression may be relative to 'this'. */ @@ -3584,12 +3586,12 @@ : CP_ID_KIND_UNQUALIFIED))); /* If the name was dependent on a template parameter and we're not in a - default capturing generic lambda within a template, we will resolve the + default capturing generic lambda, we will resolve the name at instantiation time. FIXME: For lambdas, we should defer building the closure type until instantiation time then we won't need the extra test here. */ if (dependent_p - && !parsing_default_capturing_generic_lambda_in_template ()) + && !parsing_default_capturing_generic_lambda ()) { if (DECL_P (decl) && any_dependent_type_attributes_p (DECL_ATTRIBUTES (decl))) Index: gcc/cp/parser.c =================================================================== --- gcc/cp/parser.c (.../tags/gcc_7_2_0_release) +++ gcc/cp/parser.c (.../branches/gcc-7-branch) @@ -20486,7 +20486,7 @@ which we ultimately want to defer to instantiation time. */ bool -parsing_default_capturing_generic_lambda_in_template (void) +parsing_default_capturing_generic_lambda (void) { if (!processing_template_decl || !current_class_type) return false; @@ -20499,12 +20499,7 @@ if (!callop) return false; - return (DECL_TEMPLATE_INFO (callop) - && (DECL_TEMPLATE_RESULT (DECL_TI_TEMPLATE (callop)) == callop) - && ((current_nonlambda_class_type () - && CLASSTYPE_TEMPLATE_INFO (current_nonlambda_class_type ())) - || ((current_nonlambda_function () - && DECL_TEMPLATE_INFO (current_nonlambda_function ()))))); + return generic_lambda_fn_p (callop); } /* Parse a late-specified return type, if any. This is not a separate Index: gcc/cp/call.c =================================================================== --- gcc/cp/call.c (.../tags/gcc_7_2_0_release) +++ gcc/cp/call.c (.../branches/gcc-7-branch) @@ -2279,8 +2279,10 @@ if (i == 0) { - t = implicit_conversion (totype, argtype, arg, /*c_cast_p=*/false, - flags, complain); + t = build_identity_conv (argtype, NULL_TREE); + t = build_conv (ck_user, totype, t); + /* Leave the 'cand' field null; we'll figure out the conversion in + convert_like_real if this candidate is chosen. */ convert_type = totype; } else if (parmnode == void_list_node) @@ -6665,6 +6667,13 @@ case ck_user: { struct z_candidate *cand = convs->cand; + + if (cand == NULL) + /* We chose the surrogate function from add_conv_candidate, now we + actually need to build the conversion. */ + cand = build_user_type_conversion_1 (totype, expr, + LOOKUP_NO_CONVERSION, complain); + tree convfn = cand->fn; /* When converting from an init list we consider explicit @@ -7117,13 +7126,9 @@ /* In a template (or ill-formed code), we can have an incomplete type even after require_complete_type_sfinae, in which case we don't know whether it has trivial copy or not. */ - && COMPLETE_TYPE_P (arg_type)) + && COMPLETE_TYPE_P (arg_type) + && !cp_unevaluated_operand) { - /* Build up a real lvalue-to-rvalue conversion in case the - copy constructor is trivial but not callable. */ - if (!cp_unevaluated_operand && CLASS_TYPE_P (arg_type)) - force_rvalue (arg, complain); - /* [expr.call] 5.2.2/7: Passing a potentially-evaluated argument of class type (Clause 9) with a non-trivial copy constructor or a non-trivial destructor @@ -7135,10 +7140,10 @@ If the call appears in the context of a sizeof expression, it is not potentially-evaluated. */ - if (cp_unevaluated_operand == 0 - && (type_has_nontrivial_copy_init (arg_type) - || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (arg_type))) + if (type_has_nontrivial_copy_init (arg_type) + || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (arg_type)) { + arg = force_rvalue (arg, complain); if (complain & tf_warning) warning (OPT_Wconditionally_supported, "passing objects of non-trivially-copyable " @@ -7146,6 +7151,11 @@ arg_type); return cp_build_addr_expr (arg, complain); } + /* Build up a real lvalue-to-rvalue conversion in case the + copy constructor is trivial but not callable. */ + else if (CLASS_TYPE_P (arg_type)) + force_rvalue (arg, complain); + } return arg; @@ -9128,7 +9138,9 @@ return 0; else if (t1->kind == ck_user) { - if (t1->cand->fn != t2->cand->fn) + tree f1 = t1->cand ? t1->cand->fn : t1->type; + tree f2 = t2->cand ? t2->cand->fn : t2->type; + if (f1 != f2) return 0; } else Index: gcc/cp/cp-objcp-common.c =================================================================== --- gcc/cp/cp-objcp-common.c (.../tags/gcc_7_2_0_release) +++ gcc/cp/cp-objcp-common.c (.../branches/gcc-7-branch) @@ -131,6 +131,20 @@ return same_type_ignoring_top_level_qualifiers_p (x, y); } +struct debug_type_hasher : ggc_cache_ptr_hash +{ + static hashval_t hash (tree_map *m) { return tree_map_hash (m); } + static bool equal (tree_map *a, tree_map *b) { return tree_map_eq (a, b); } + + static int + keep_cache_entry (tree_map *&e) + { + return ggc_marked_p (e->base.from); + } +}; + +static GTY((cache)) hash_table *debug_type_hash; + /* Return a type to use in the debug info instead of TYPE, or NULL_TREE to keep TYPE. */ @@ -138,9 +152,36 @@ cp_get_debug_type (const_tree type) { if (TYPE_PTRMEMFUNC_P (type) && !typedef_variant_p (type)) - return build_offset_type (TYPE_PTRMEMFUNC_OBJECT_TYPE (type), - TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (type))); + { + if (debug_type_hash == NULL) + debug_type_hash = hash_table::create_ggc (512); + /* We cannot simply use build_offset_type here because the function uses + the type canonicalization hashtable, which is GC-ed, so its behavior + depends on the actual collection points. Since we are building these + types on the fly for the debug info only, they would not be attached + to any GC root and always be swept, so we would make the contents of + the debug info depend on the collection points. */ + struct tree_map in, *h, **slot; + + in.base.from = CONST_CAST_TREE (type); + in.hash = htab_hash_pointer (type); + slot = debug_type_hash->find_slot_with_hash (&in, in.hash, INSERT); + if (*slot) + return (*slot)->to; + + tree t = build_offset_type (TYPE_PTRMEMFUNC_OBJECT_TYPE (type), + TREE_TYPE (TYPE_PTRMEMFUNC_FN_TYPE (type))); + + h = ggc_alloc (); + h->base.from = CONST_CAST_TREE (type); + h->hash = htab_hash_pointer (type); + h->to = t; + *slot = h; + + return t; + } + return NULL_TREE; } Index: gcc/cp/cp-objcp-common.h =================================================================== --- gcc/cp/cp-objcp-common.h (.../tags/gcc_7_2_0_release) +++ gcc/cp/cp-objcp-common.h (.../branches/gcc-7-branch) @@ -94,6 +94,8 @@ #define LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE cxx_builtin_function_ext_scope #undef LANG_HOOKS_TYPE_HASH_EQ #define LANG_HOOKS_TYPE_HASH_EQ cxx_type_hash_eq +#undef LANG_HOOKS_COPY_LANG_QUALIFIERS +#define LANG_HOOKS_COPY_LANG_QUALIFIERS cxx_copy_lang_qualifiers #undef LANG_HOOKS_MISSING_NORETURN_OK_P #define LANG_HOOKS_MISSING_NORETURN_OK_P cp_missing_noreturn_ok_p #undef LANG_HOOKS_BLOCK_MAY_FALLTHRU Index: gcc/cp/cp-tree.h =================================================================== --- gcc/cp/cp-tree.h (.../tags/gcc_7_2_0_release) +++ gcc/cp/cp-tree.h (.../branches/gcc-7-branch) @@ -6125,7 +6125,7 @@ /* In parser.c */ extern tree cp_convert_range_for (tree, tree, tree, tree, unsigned int, bool); extern bool parsing_nsdmi (void); -extern bool parsing_default_capturing_generic_lambda_in_template (void); +extern bool parsing_default_capturing_generic_lambda (void); extern void inject_this_parameter (tree, cp_cv_quals); /* in pt.c */ @@ -6703,6 +6703,7 @@ extern tree cp_save_expr (tree); extern bool cast_valid_in_integral_constant_expression_p (tree); extern bool cxx_type_hash_eq (const_tree, const_tree); +extern tree cxx_copy_lang_qualifiers (const_tree, const_tree); extern void cxx_print_statistics (void); extern bool maybe_warn_zero_as_null_pointer_constant (tree, location_t); Index: gcc/omp-expand.c =================================================================== --- gcc/omp-expand.c (.../tags/gcc_7_2_0_release) +++ gcc/omp-expand.c (.../branches/gcc-7-branch) @@ -4725,12 +4725,14 @@ tree itype2 = TREE_TYPE (fd->loops[i - 1].v); if (POINTER_TYPE_P (itype2)) itype2 = signed_type_for (itype2); + t = fold_convert (itype2, fd->loops[i - 1].step); + t = force_gimple_operand_gsi (&gsi, t, true, NULL_TREE, true, + GSI_SAME_STMT); t = build3 (COND_EXPR, itype2, build2 (fd->loops[i].cond_code, boolean_type_node, fd->loops[i].v, fold_convert (itype, fd->loops[i].n2)), - build_int_cst (itype2, 0), - fold_convert (itype2, fd->loops[i - 1].step)); + build_int_cst (itype2, 0), t); if (POINTER_TYPE_P (TREE_TYPE (fd->loops[i - 1].v))) t = fold_build_pointer_plus (fd->loops[i - 1].v, t); else @@ -4737,12 +4739,14 @@ t = fold_build2 (PLUS_EXPR, itype2, fd->loops[i - 1].v, t); expand_omp_build_assign (&gsi, fd->loops[i - 1].v, t); + t = fold_convert (itype, fd->loops[i].n1); + t = force_gimple_operand_gsi (&gsi, t, true, NULL_TREE, true, + GSI_SAME_STMT); t = build3 (COND_EXPR, itype, build2 (fd->loops[i].cond_code, boolean_type_node, fd->loops[i].v, fold_convert (itype, fd->loops[i].n2)), - fd->loops[i].v, - fold_convert (itype, fd->loops[i].n1)); + fd->loops[i].v, t); expand_omp_build_assign (&gsi, fd->loops[i].v, t); } } Index: gcc/tree-ssa-alias.c =================================================================== --- gcc/tree-ssa-alias.c (.../tags/gcc_7_2_0_release) +++ gcc/tree-ssa-alias.c (.../branches/gcc-7-branch) @@ -2415,6 +2415,7 @@ if (ref->ref) { tree base = ref->ref; + tree innermost_dropped_array_ref = NULL_TREE; if (handled_component_p (base)) { tree saved_lhs0 = NULL_TREE; @@ -2434,6 +2435,11 @@ TREE_OPERAND (base, 0) = saved_base0; if (res) break; + /* Remember if we drop an array-ref that we need to + double-check not being at struct end. */ + if (TREE_CODE (base) == ARRAY_REF + || TREE_CODE (base) == ARRAY_RANGE_REF) + innermost_dropped_array_ref = base; /* Otherwise drop handled components of the access. */ base = saved_base0; } @@ -2442,15 +2448,22 @@ TREE_OPERAND (lhs, 0) = saved_lhs0; } /* Finally check if the lhs has the same address and size as the - base candidate of the access. */ - if (lhs == base - || (((TYPE_SIZE (TREE_TYPE (lhs)) - == TYPE_SIZE (TREE_TYPE (base))) - || (TYPE_SIZE (TREE_TYPE (lhs)) - && TYPE_SIZE (TREE_TYPE (base)) - && operand_equal_p (TYPE_SIZE (TREE_TYPE (lhs)), - TYPE_SIZE (TREE_TYPE (base)), 0))) - && operand_equal_p (lhs, base, OEP_ADDRESS_OF))) + base candidate of the access. Watch out if we have dropped + an array-ref that was at struct end, this means ref->ref may + be outside of the TYPE_SIZE of its base. */ + if ((! innermost_dropped_array_ref + || ! array_at_struct_end_p (innermost_dropped_array_ref)) + && (lhs == base + || (((TYPE_SIZE (TREE_TYPE (lhs)) + == TYPE_SIZE (TREE_TYPE (base))) + || (TYPE_SIZE (TREE_TYPE (lhs)) + && TYPE_SIZE (TREE_TYPE (base)) + && operand_equal_p (TYPE_SIZE (TREE_TYPE (lhs)), + TYPE_SIZE (TREE_TYPE (base)), + 0))) + && operand_equal_p (lhs, base, + OEP_ADDRESS_OF + | OEP_MATCH_SIDE_EFFECTS)))) return true; } Index: gcc/dwarf2out.c =================================================================== --- gcc/dwarf2out.c (.../tags/gcc_7_2_0_release) +++ gcc/dwarf2out.c (.../branches/gcc-7-branch) @@ -12514,6 +12514,15 @@ if (qualified_type == dtype) { + tree origin = decl_ultimate_origin (name); + + /* Typedef variants that have an abstract origin don't get their own + type DIE (see gen_typedef_die), so fall back on the ultimate + abstract origin instead. */ + if (origin != NULL) + return modified_type_die (TREE_TYPE (origin), cv_quals, reverse, + context_die); + /* For a named type, use the typedef. */ gen_type_die (qualified_type, context_die); return lookup_type_die (qualified_type); @@ -24346,7 +24355,7 @@ gen_typedef_die (tree decl, dw_die_ref context_die) { dw_die_ref type_die; - tree origin; + tree type; if (TREE_ASM_WRITTEN (decl)) { @@ -24355,76 +24364,72 @@ return; } + /* As we avoid creating DIEs for local typedefs (see decl_ultimate_origin + checks in process_scope_var and modified_type_die), this should be called + only for original types. */ + gcc_assert (decl_ultimate_origin (decl) == NULL); + TREE_ASM_WRITTEN (decl) = 1; type_die = new_die (DW_TAG_typedef, context_die, decl); - origin = decl_ultimate_origin (decl); - if (origin != NULL) - add_abstract_origin_attribute (type_die, origin); + + add_name_and_src_coords_attributes (type_die, decl); + if (DECL_ORIGINAL_TYPE (decl)) + { + type = DECL_ORIGINAL_TYPE (decl); + if (type == error_mark_node) + return; + + gcc_assert (type != TREE_TYPE (decl)); + equate_type_number_to_die (TREE_TYPE (decl), type_die); + } else { - tree type = TREE_TYPE (decl); - + type = TREE_TYPE (decl); if (type == error_mark_node) return; - add_name_and_src_coords_attributes (type_die, decl); - if (DECL_ORIGINAL_TYPE (decl)) + if (is_naming_typedef_decl (TYPE_NAME (type))) { - type = DECL_ORIGINAL_TYPE (decl); + /* Here, we are in the case of decl being a typedef naming + an anonymous type, e.g: + typedef struct {...} foo; + In that case TREE_TYPE (decl) is not a typedef variant + type and TYPE_NAME of the anonymous type is set to the + TYPE_DECL of the typedef. This construct is emitted by + the C++ FE. - if (type == error_mark_node) - return; + TYPE is the anonymous struct named by the typedef + DECL. As we need the DW_AT_type attribute of the + DW_TAG_typedef to point to the DIE of TYPE, let's + generate that DIE right away. add_type_attribute + called below will then pick (via lookup_type_die) that + anonymous struct DIE. */ + if (!TREE_ASM_WRITTEN (type)) + gen_tagged_type_die (type, context_die, DINFO_USAGE_DIR_USE); - gcc_assert (type != TREE_TYPE (decl)); - equate_type_number_to_die (TREE_TYPE (decl), type_die); + /* This is a GNU Extension. We are adding a + DW_AT_linkage_name attribute to the DIE of the + anonymous struct TYPE. The value of that attribute + is the name of the typedef decl naming the anonymous + struct. This greatly eases the work of consumers of + this debug info. */ + add_linkage_name_raw (lookup_type_die (type), decl); } - else - { - if (is_naming_typedef_decl (TYPE_NAME (type))) - { - /* Here, we are in the case of decl being a typedef naming - an anonymous type, e.g: - typedef struct {...} foo; - In that case TREE_TYPE (decl) is not a typedef variant - type and TYPE_NAME of the anonymous type is set to the - TYPE_DECL of the typedef. This construct is emitted by - the C++ FE. + } - TYPE is the anonymous struct named by the typedef - DECL. As we need the DW_AT_type attribute of the - DW_TAG_typedef to point to the DIE of TYPE, let's - generate that DIE right away. add_type_attribute - called below will then pick (via lookup_type_die) that - anonymous struct DIE. */ - if (!TREE_ASM_WRITTEN (type)) - gen_tagged_type_die (type, context_die, DINFO_USAGE_DIR_USE); + add_type_attribute (type_die, type, decl_quals (decl), false, + context_die); - /* This is a GNU Extension. We are adding a - DW_AT_linkage_name attribute to the DIE of the - anonymous struct TYPE. The value of that attribute - is the name of the typedef decl naming the anonymous - struct. This greatly eases the work of consumers of - this debug info. */ - add_linkage_name_raw (lookup_type_die (type), decl); - } - } + if (is_naming_typedef_decl (decl)) + /* We want that all subsequent calls to lookup_type_die with + TYPE in argument yield the DW_TAG_typedef we have just + created. */ + equate_type_number_to_die (type, type_die); - add_type_attribute (type_die, type, decl_quals (decl), false, - context_die); + add_alignment_attribute (type_die, TREE_TYPE (decl)); - if (is_naming_typedef_decl (decl)) - /* We want that all subsequent calls to lookup_type_die with - TYPE in argument yield the DW_TAG_typedef we have just - created. */ - equate_type_number_to_die (type, type_die); + add_accessibility_attribute (type_die, decl); - type = TREE_TYPE (decl); - - add_alignment_attribute (type_die, type); - - add_accessibility_attribute (type_die, decl); - } - if (DECL_ABSTRACT_P (decl)) equate_decl_number_to_die (decl, type_die); @@ -24535,8 +24540,16 @@ if (TREE_ASM_WRITTEN (type)) return; + tree name = TYPE_NAME (type); + tree origin = decl_ultimate_origin (name); + if (origin != NULL) + { + gen_decl_die (origin, NULL, NULL, context_die); + return; + } + /* Prevent broken recursion; we can't hand off to the same type. */ - gcc_assert (DECL_ORIGINAL_TYPE (TYPE_NAME (type)) != type); + gcc_assert (DECL_ORIGINAL_TYPE (name) != type); /* Give typedefs the right scope. */ context_die = scope_die_for (type, context_die); @@ -24543,7 +24556,7 @@ TREE_ASM_WRITTEN (type) = 1; - gen_decl_die (TYPE_NAME (type), NULL, NULL, context_die); + gen_decl_die (name, NULL, NULL, context_die); return; } @@ -24862,6 +24875,22 @@ else die = NULL; + /* Avoid creating DIEs for local typedefs and concrete static variables that + will only be pruned later. */ + if ((origin || decl_ultimate_origin (decl)) + && (TREE_CODE (decl_or_origin) == TYPE_DECL + || (VAR_P (decl_or_origin) && TREE_STATIC (decl_or_origin)))) + { + origin = decl_ultimate_origin (decl_or_origin); + if (decl && VAR_P (decl) && die != NULL) + { + die = lookup_decl_die (origin); + if (die != NULL) + equate_decl_number_to_die (decl, die); + } + return; + } + if (die != NULL && die->die_parent == NULL) add_child_die (context_die, die); else if (TREE_CODE (decl_or_origin) == IMPORTED_DECL) @@ -26058,7 +26087,8 @@ j = 0; FOR_EACH_VEC_ELT (*tmpl_value_parm_die_table, i, e) { - if (!tree_add_const_value_attribute (e->die, e->arg)) + if (!e->die->removed + && !tree_add_const_value_attribute (e->die, e->arg)) { dw_loc_descr_ref loc = NULL; if (! early_dwarf Index: gcc/cfgbuild.c =================================================================== --- gcc/cfgbuild.c (.../tags/gcc_7_2_0_release) +++ gcc/cfgbuild.c (.../branches/gcc-7-branch) @@ -442,9 +442,10 @@ rtx_insn *end = BB_END (bb), *x; rtx_jump_table_data *table; rtx_insn *flow_transfer_insn = NULL; + rtx_insn *debug_insn = NULL; edge fallthru = NULL; - if (insn == BB_END (bb)) + if (insn == end) return; if (LABEL_P (insn)) @@ -455,27 +456,49 @@ { enum rtx_code code = GET_CODE (insn); + if (code == DEBUG_INSN) + { + if (flow_transfer_insn && !debug_insn) + debug_insn = insn; + } /* In case we've previously seen an insn that effects a control flow transfer, split the block. */ - if ((flow_transfer_insn || code == CODE_LABEL) - && inside_basic_block_p (insn)) + else if ((flow_transfer_insn || code == CODE_LABEL) + && inside_basic_block_p (insn)) { - fallthru = split_block (bb, PREV_INSN (insn)); + rtx_insn *prev = PREV_INSN (insn); + + /* If the first non-debug inside_basic_block_p insn after a control + flow transfer is not a label, split the block before the debug + insn instead of before the non-debug insn, so that the debug + insns are not lost. */ + if (debug_insn && code != CODE_LABEL && code != BARRIER) + prev = PREV_INSN (debug_insn); + fallthru = split_block (bb, prev); if (flow_transfer_insn) { BB_END (bb) = flow_transfer_insn; + rtx_insn *next; /* Clean up the bb field for the insns between the blocks. */ for (x = NEXT_INSN (flow_transfer_insn); x != BB_HEAD (fallthru->dest); - x = NEXT_INSN (x)) - if (!BARRIER_P (x)) - set_block_for_insn (x, NULL); + x = next) + { + next = NEXT_INSN (x); + /* Debug insns should not be in between basic blocks, + drop them on the floor. */ + if (DEBUG_INSN_P (x)) + delete_insn (x); + else if (!BARRIER_P (x)) + set_block_for_insn (x, NULL); + } } bb = fallthru->dest; remove_edge (fallthru); flow_transfer_insn = NULL; + debug_insn = NULL; if (code == CODE_LABEL && LABEL_ALT_ENTRY_P (insn)) make_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun), bb, 0); } @@ -498,17 +521,23 @@ /* In case expander replaced normal insn by sequence terminating by return and barrier, or possibly other sequence not behaving like ordinary jump, we need to take care and move basic block boundary. */ - if (flow_transfer_insn) + if (flow_transfer_insn && flow_transfer_insn != end) { BB_END (bb) = flow_transfer_insn; /* Clean up the bb field for the insns that do not belong to BB. */ - x = flow_transfer_insn; - while (x != end) + rtx_insn *next; + for (x = NEXT_INSN (flow_transfer_insn); ; x = next) { - x = NEXT_INSN (x); - if (!BARRIER_P (x)) + next = NEXT_INSN (x); + /* Debug insns should not be in between basic blocks, + drop them on the floor. */ + if (DEBUG_INSN_P (x)) + delete_insn (x); + else if (!BARRIER_P (x)) set_block_for_insn (x, NULL); + if (x == end) + break; } } Index: gcc/opts.c =================================================================== --- gcc/opts.c (.../tags/gcc_7_2_0_release) +++ gcc/opts.c (.../branches/gcc-7-branch) @@ -217,7 +217,7 @@ unsigned int lang_mask ATTRIBUTE_UNUSED, int kind, location_t loc, const struct cl_option_handlers *handlers ATTRIBUTE_UNUSED, - diagnostic_context *dc) + diagnostic_context *dc, void (*) (void)) { gcc_assert (dc == global_dc); gcc_assert (kind == DK_UNSPECIFIED); @@ -1678,7 +1678,8 @@ unsigned int lang_mask, int kind ATTRIBUTE_UNUSED, location_t loc, const struct cl_option_handlers *handlers, - diagnostic_context *dc) + diagnostic_context *dc, + void (*target_option_override_hook) (void)) { size_t scode = decoded->opt_index; const char *arg = decoded->arg; @@ -1705,6 +1706,7 @@ undoc_mask = ((opts->x_verbose_flag | opts->x_extra_warnings) ? 0 : CL_UNDOCUMENTED); + target_option_override_hook (); /* First display any single language specific options. */ for (i = 0; i < cl_lang_count; i++) print_specific_help @@ -1724,6 +1726,7 @@ if (lang_mask == CL_DRIVER) break; + target_option_override_hook (); print_specific_help (CL_TARGET, CL_UNDOCUMENTED, 0, opts, lang_mask); opts->x_exit_after_options = true; break; @@ -1850,8 +1853,11 @@ } if (include_flags) - print_specific_help (include_flags, exclude_flags, 0, opts, - lang_mask); + { + target_option_override_hook (); + print_specific_help (include_flags, exclude_flags, 0, opts, + lang_mask); + } opts->x_exit_after_options = true; break; } Index: gcc/opts.h =================================================================== --- gcc/opts.h (.../tags/gcc_7_2_0_release) +++ gcc/opts.h (.../branches/gcc-7-branch) @@ -267,7 +267,8 @@ const struct cl_decoded_option *decoded, unsigned int lang_mask, int kind, location_t loc, const struct cl_option_handlers *handlers, - diagnostic_context *dc); + diagnostic_context *dc, + void (*target_option_override_hook) (void)); /* The mask that must have some bit in common with the flags for the option for this particular handler to be used. */ @@ -289,6 +290,9 @@ void (*wrong_lang_callback) (const struct cl_decoded_option *decoded, unsigned int lang_mask); + /* Target option override hook. */ + void (*target_option_override_hook) (void); + /* The number of individual handlers. */ size_t num_handlers; @@ -333,13 +337,15 @@ const char **argv, struct cl_decoded_option **decoded_options, unsigned int *decoded_options_count); -extern void set_default_handlers (struct cl_option_handlers *handlers); +extern void set_default_handlers (struct cl_option_handlers *handlers, + void (*target_option_override_hook) (void)); extern void decode_options (struct gcc_options *opts, struct gcc_options *opts_set, struct cl_decoded_option *decoded_options, unsigned int decoded_options_count, location_t loc, - diagnostic_context *dc); + diagnostic_context *dc, + void (*target_option_override_hook) (void)); extern int option_enabled (int opt_idx, void *opts); extern bool get_option_state (struct gcc_options *, int, struct cl_option_state *); @@ -384,7 +390,8 @@ unsigned int lang_mask, int kind, location_t loc, const struct cl_option_handlers *handlers, - diagnostic_context *dc); + diagnostic_context *dc, + void (*target_option_override_hook) (void)); extern bool target_handle_option (struct gcc_options *opts, struct gcc_options *opts_set, const struct cl_decoded_option *decoded, @@ -391,7 +398,8 @@ unsigned int lang_mask, int kind, location_t loc, const struct cl_option_handlers *handlers, - diagnostic_context *dc); + diagnostic_context *dc, + void (*target_option_override_hook) (void)); extern void finish_options (struct gcc_options *opts, struct gcc_options *opts_set, location_t loc); Index: gcc/ada/sysdep.c =================================================================== --- gcc/ada/sysdep.c (.../tags/gcc_7_2_0_release) +++ gcc/ada/sysdep.c (.../branches/gcc-7-branch) @@ -126,7 +126,7 @@ */ -#if defined (WINNT) || defined (__CYGWIN__) || defined(__DJGPP__) +#if defined (WINNT) || defined (__CYGWIN__) || defined (__DJGPP__) const char __gnat_text_translation_required = 1; @@ -137,7 +137,7 @@ #define WIN_SETMODE _setmode #endif -#if defined(__DJGPP__) +#if defined (__DJGPP__) #include #define _setmode setmode #endif /* __DJGPP__ */ @@ -154,7 +154,7 @@ WIN_SETMODE (handle, O_TEXT); } -#ifdef __DJGPP__ +#if defined (__CYGWIN__) || defined (__DJGPP__) void __gnat_set_mode (int handle, int mode) { @@ -826,7 +826,7 @@ #elif defined (__APPLE__) || defined (__FreeBSD__) || defined (__linux__) \ || defined (__GLIBC__) || defined (__DragonFly__) || defined (__OpenBSD__) \ - || defined(__DJGPP__) + || defined (__DJGPP__) { localtime_r (timer, &tp); *off = tp.tm_gmtoff; Index: gcc/ada/sem_ch3.adb =================================================================== --- gcc/ada/sem_ch3.adb (.../tags/gcc_7_2_0_release) +++ gcc/ada/sem_ch3.adb (.../branches/gcc-7-branch) @@ -21211,9 +21211,11 @@ Error_Msg_N ("invalid subtype mark in subtype indication", S); end case; - -- Size and Convention are always inherited from the base type + -- Size, Alignment, Representation aspects and Convention are always + -- inherited from the base type. Set_Size_Info (Def_Id, (Subtype_Mark_Id)); + Set_Rep_Info (Def_Id, (Subtype_Mark_Id)); Set_Convention (Def_Id, Convention (Subtype_Mark_Id)); return Def_Id; Index: gcc/ada/sem_util.adb =================================================================== --- gcc/ada/sem_util.adb (.../tags/gcc_7_2_0_release) +++ gcc/ada/sem_util.adb (.../branches/gcc-7-branch) @@ -20302,6 +20302,20 @@ end if; end Set_Referenced_Modified; + ------------------ + -- Set_Rep_Info -- + ------------------ + + procedure Set_Rep_Info (T1, T2 : Entity_Id) is + begin + Set_Is_Atomic (T1, Is_Atomic (T2)); + Set_Is_Independent (T1, Is_Independent (T2)); + Set_Is_Volatile_Full_Access (T1, Is_Volatile_Full_Access (T2)); + if Is_Base_Type (T1) then + Set_Is_Volatile (T1, Is_Volatile (T2)); + end if; + end Set_Rep_Info; + ---------------------------- -- Set_Scope_Is_Transient -- ---------------------------- Index: gcc/ada/sem_util.ads =================================================================== --- gcc/ada/sem_util.ads (.../tags/gcc_7_2_0_release) +++ gcc/ada/sem_util.ads (.../branches/gcc-7-branch) @@ -2313,6 +2313,12 @@ -- (Referenced_As_LHS if Out_Param is False, Referenced_As_Out_Parameter -- if Out_Param is True) is set True, and the other flag set False. + procedure Set_Rep_Info (T1, T2 : Entity_Id); + pragma Inline (Set_Rep_Info); + -- Copies the Is_Atomic, Is_Independent and Is_Volatile_Full_Access flags + -- from sub(type) entity T2 to (sub)type entity T1, as well as Is_Volatile + -- if T1 is a base type. + procedure Set_Scope_Is_Transient (V : Boolean := True); -- Set the flag Is_Transient of the current scope Index: gcc/ada/mingw32.h =================================================================== --- gcc/ada/mingw32.h (.../tags/gcc_7_2_0_release) +++ gcc/ada/mingw32.h (.../branches/gcc-7-branch) @@ -59,16 +59,6 @@ #endif #include -#ifndef _O_U8TEXT -#define _O_U8TEXT _O_TEXT -#endif -#ifndef _O_U16TEXT -#define _O_U16TEXT _O_TEXT -#endif -#ifndef _O_WTEXT -#define _O_WTEXT _O_TEXT -#endif - /* After including this file it is possible to use the character t as prefix to routines. If GNAT_UNICODE_SUPPORT is defined then the unicode enabled versions will be used. */ Index: gcc/ada/ChangeLog =================================================================== --- gcc/ada/ChangeLog (.../tags/gcc_7_2_0_release) +++ gcc/ada/ChangeLog (.../branches/gcc-7-branch) @@ -1,3 +1,64 @@ +2017-10-05 Eric Botcazou + + PR ada/82393 + * mingw32.h (_O_U8TEXT, _O_U16TEXT, _O_WTEXT): Delete. + * sysdep.c (__gnat_set_mode ): Use DJGPP version for Cygwin. + +2017-09-15 Martin Liska + + Backport from mainline + 2017-08-29 Martin Liska + + PR other/39851 + * gcc-interface/trans.c (Pragma_to_gnu): Set argument to NULL. + +2017-09-09 Eric Botcazou + + * gcc-interface/decl.c (promote_object_alignment): New function taken + from... + (gnat_to_gnu_entity) : ...here. Invoke it. + (gnat_to_gnu_field): If the field is Atomic or VFA, invoke it and + create a padding type on success before doing the atomic check. + +2017-09-09 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Apply the + promotion to static memory earlier in the processing. + +2017-09-09 Eric Botcazou + + * sem_util.ads (Set_Rep_Info): New inline procedure. + * sem_util.adb (Set_Rep_Info): Implement it. + * sem_ch3.adb (Process_Subtype): If the case of a constraint present, + always copy the representation aspects onto the subtype. + * gcc-interface/decl.c (gnat_to_gnu_entity): Only set the TYPE_ALIGN_OK + and TYPE_BY_REFERENCE_P flags on types after various promotions. + * gcc-interface/trans.c (node_has_volatile_full_access) : + Consider all kinds of entities. + +2017-09-05 Eric Botcazou + + PR ada/62235 + * gcc-interface/decl.c (gnat_to_gnu_entity): Skip regular processing + for Itypes that are E_Record_Subtype with a cloned subtype. + : Use the DECL of the cloned type directly, if any. + +2017-09-05 Eric Botcazou + + * gcc-interface/utils.c (unchecked_convert): When the result type is a + non-biased integral type with size 0, set the result to 0 directly. + +2017-09-05 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): If this is a function call and + there is no target, do not create a temporary for the return value for + an allocator either. + +2017-09-05 Eric Botcazou + + * gcc-interface/trans.c (pos_to_constructor): Skip conversions to an + unconstrained array type. + 2017-08-14 Release Manager * GCC 7.2.0 released. Index: gcc/ada/gcc-interface/utils.c =================================================================== --- gcc/ada/gcc-interface/utils.c (.../tags/gcc_7_2_0_release) +++ gcc/ada/gcc-interface/utils.c (.../branches/gcc-7-branch) @@ -5230,20 +5230,26 @@ ? TYPE_RM_SIZE (etype) : TYPE_SIZE (etype)) == 0))) { - tree base_type - = gnat_type_for_size (TREE_INT_CST_LOW (TYPE_SIZE (type)), - type_unsigned_for_rm (type)); - tree shift_expr - = convert (base_type, - size_binop (MINUS_EXPR, - TYPE_SIZE (type), TYPE_RM_SIZE (type))); - expr - = convert (type, - build_binary_op (RSHIFT_EXPR, base_type, - build_binary_op (LSHIFT_EXPR, base_type, - convert (base_type, expr), - shift_expr), - shift_expr)); + if (integer_zerop (TYPE_RM_SIZE (type))) + expr = build_int_cst (type, 0); + else + { + tree base_type + = gnat_type_for_size (TREE_INT_CST_LOW (TYPE_SIZE (type)), + type_unsigned_for_rm (type)); + tree shift_expr + = convert (base_type, + size_binop (MINUS_EXPR, + TYPE_SIZE (type), TYPE_RM_SIZE (type))); + expr + = convert (type, + build_binary_op (RSHIFT_EXPR, base_type, + build_binary_op (LSHIFT_EXPR, base_type, + convert (base_type, + expr), + shift_expr), + shift_expr)); + } } /* An unchecked conversion should never raise Constraint_Error. The code Index: gcc/ada/gcc-interface/decl.c =================================================================== --- gcc/ada/gcc-interface/decl.c (.../tags/gcc_7_2_0_release) +++ gcc/ada/gcc-interface/decl.c (.../branches/gcc-7-branch) @@ -229,6 +229,7 @@ static tree validate_size (Uint, tree, Entity_Id, enum tree_code, bool, bool); static void set_rm_size (Uint, tree, Entity_Id); static unsigned int validate_alignment (Uint, Entity_Id, unsigned int); +static unsigned int promote_object_alignment (tree, Entity_Id); static void check_ok_for_atomic_type (tree, Entity_Id, bool); static tree create_field_decl_from (tree, tree, tree, tree, tree, vec ); @@ -309,11 +310,14 @@ /* Since a use of an Itype is a definition, process it as such if it is in the main unit, except for E_Access_Subtype because it's actually a use - of its base type, see below. */ + of its base type, and for E_Record_Subtype with cloned subtype because + it's actually a use of the cloned subtype, see below. */ if (!definition && is_type && Is_Itype (gnat_entity) - && Ekind (gnat_entity) != E_Access_Subtype + && !(kind == E_Access_Subtype + || (kind == E_Record_Subtype + && Present (Cloned_Subtype (gnat_entity)))) && !present_gnu_tree (gnat_entity) && In_Extended_Main_Code_Unit (gnat_entity)) { @@ -847,46 +851,8 @@ && No (Renamed_Object (gnat_entity)) && No (Address_Clause (gnat_entity)))) && TREE_CODE (TYPE_SIZE (gnu_type)) == INTEGER_CST) - { - unsigned int size_cap, align_cap; + align = promote_object_alignment (gnu_type, gnat_entity); - /* No point in promoting the alignment if this doesn't prevent - BLKmode access to the object, in particular block copy, as - this will for example disable the NRV optimization for it. - No point in jumping through all the hoops needed in order - to support BIGGEST_ALIGNMENT if we don't really have to. - So we cap to the smallest alignment that corresponds to - a known efficient memory access pattern of the target. */ - if (Is_Atomic_Or_VFA (gnat_entity)) - { - size_cap = UINT_MAX; - align_cap = BIGGEST_ALIGNMENT; - } - else - { - size_cap = MAX_FIXED_MODE_SIZE; - align_cap = get_mode_alignment (ptr_mode); - } - - if (!tree_fits_uhwi_p (TYPE_SIZE (gnu_type)) - || compare_tree_int (TYPE_SIZE (gnu_type), size_cap) > 0) - align = 0; - else if (compare_tree_int (TYPE_SIZE (gnu_type), align_cap) > 0) - align = align_cap; - else - align = ceil_pow2 (tree_to_uhwi (TYPE_SIZE (gnu_type))); - - /* But make sure not to under-align the object. */ - if (align <= TYPE_ALIGN (gnu_type)) - align = 0; - - /* And honor the minimum valid atomic alignment, if any. */ -#ifdef MINIMUM_ATOMIC_ALIGNMENT - else if (align < MINIMUM_ATOMIC_ALIGNMENT) - align = MINIMUM_ATOMIC_ALIGNMENT; -#endif - } - /* If the object is set to have atomic components, find the component type and validate it. @@ -1413,6 +1379,19 @@ gnu_size = NULL_TREE; } + /* If this is an aggregate constant initialized to a constant, force it + to be statically allocated. This saves an initialization copy. */ + if (!static_flag + && const_flag + && gnu_expr + && TREE_CONSTANT (gnu_expr) + && AGGREGATE_TYPE_P (gnu_type) + && tree_fits_uhwi_p (TYPE_SIZE_UNIT (gnu_type)) + && !(TYPE_IS_PADDING_P (gnu_type) + && !tree_fits_uhwi_p (TYPE_SIZE_UNIT + (TREE_TYPE (TYPE_FIELDS (gnu_type)))))) + static_flag = true; + /* If this is an aliased object with an unconstrained array nominal subtype, we make its type a thin reference, i.e. the reference counterpart of a thin pointer, so it points to the array part. @@ -1463,18 +1442,6 @@ && No (Address_Clause (gnat_entity)))) gnu_ext_name = create_concat_name (gnat_entity, NULL); - /* If this is an aggregate constant initialized to a constant, force it - to be statically allocated. This saves an initialization copy. */ - if (!static_flag - && const_flag - && gnu_expr && TREE_CONSTANT (gnu_expr) - && AGGREGATE_TYPE_P (gnu_type) - && tree_fits_uhwi_p (TYPE_SIZE_UNIT (gnu_type)) - && !(TYPE_IS_PADDING_P (gnu_type) - && !tree_fits_uhwi_p (TYPE_SIZE_UNIT - (TREE_TYPE (TYPE_FIELDS (gnu_type)))))) - static_flag = true; - /* Deal with a pragma Linker_Section on a constant or variable. */ if ((kind == E_Constant || kind == E_Variable) && Present (Linker_Section_Pragma (gnat_entity))) @@ -3391,7 +3358,7 @@ { gnu_decl = gnat_to_gnu_entity (Cloned_Subtype (gnat_entity), NULL_TREE, false); - maybe_present = true; + saved = true; break; } @@ -4505,18 +4472,6 @@ already defined so we cannot pass true for IN_PLACE here. */ process_attributes (&gnu_type, &attr_list, false, gnat_entity); - /* Tell the middle-end that objects of tagged types are guaranteed to - be properly aligned. This is necessary because conversions to the - class-wide type are translated into conversions to the root type, - which can be less aligned than some of its derived types. */ - if (Is_Tagged_Type (gnat_entity) - || Is_Class_Wide_Equivalent_Type (gnat_entity)) - TYPE_ALIGN_OK (gnu_type) = 1; - - /* Record whether the type is passed by reference. */ - if (!VOID_TYPE_P (gnu_type) && Is_By_Reference_Type (gnat_entity)) - TYPE_BY_REFERENCE_P (gnu_type) = 1; - /* ??? Don't set the size for a String_Literal since it is either confirming or we don't handle it properly (if the low bound is non-constant). */ @@ -4726,17 +4681,29 @@ /* If this is not an unconstrained array type, set some flags. */ if (TREE_CODE (gnu_type) != UNCONSTRAINED_ARRAY_TYPE) { + /* Tell the middle-end that objects of tagged types are guaranteed to + be properly aligned. This is necessary because conversions to the + class-wide type are translated into conversions to the root type, + which can be less aligned than some of its derived types. */ + if (Is_Tagged_Type (gnat_entity) + || Is_Class_Wide_Equivalent_Type (gnat_entity)) + TYPE_ALIGN_OK (gnu_type) = 1; + + /* Record whether the type is passed by reference. */ + if (Is_By_Reference_Type (gnat_entity) && !VOID_TYPE_P (gnu_type)) + TYPE_BY_REFERENCE_P (gnu_type) = 1; + + /* Record whether an alignment clause was specified. */ if (Present (Alignment_Clause (gnat_entity))) TYPE_USER_ALIGN (gnu_type) = 1; + /* Record whether a pragma Universal_Aliasing was specified. */ if (Universal_Aliasing (gnat_entity) && !TYPE_IS_DUMMY_P (gnu_type)) TYPE_UNIVERSAL_ALIASING_P (gnu_type) = 1; /* If it is passed by reference, force BLKmode to ensure that objects of this type will always be put in memory. */ - if (TYPE_MODE (gnu_type) != BLKmode - && AGGREGATE_TYPE_P (gnu_type) - && TYPE_BY_REFERENCE_P (gnu_type)) + if (AGGREGATE_TYPE_P (gnu_type) && TYPE_BY_REFERENCE_P (gnu_type)) SET_TYPE_MODE (gnu_type, BLKmode); } @@ -7114,7 +7081,15 @@ } if (Is_Atomic_Or_VFA (gnat_field)) - check_ok_for_atomic_type (gnu_field_type, gnat_field, false); + { + const unsigned int align + = promote_object_alignment (gnu_field_type, gnat_field); + if (align > 0) + gnu_field_type + = maybe_pad_type (gnu_field_type, NULL_TREE, align, gnat_field, + false, false, definition, true); + check_ok_for_atomic_type (gnu_field_type, gnat_field, false); + } if (Present (Component_Clause (gnat_field))) { @@ -8788,6 +8763,53 @@ return align; } +/* Promote the alignment of GNU_TYPE corresponding to GNAT_ENTITY. Return + a positive value on success or zero on failure. */ + +static unsigned int +promote_object_alignment (tree gnu_type, Entity_Id gnat_entity) +{ + unsigned int align, size_cap, align_cap; + + /* No point in promoting the alignment if this doesn't prevent BLKmode access + to the object, in particular block copy, as this will for example disable + the NRV optimization for it. No point in jumping through all the hoops + needed in order to support BIGGEST_ALIGNMENT if we don't really have to. + So we cap to the smallest alignment that corresponds to a known efficient + memory access pattern, except for Atomic and Volatile_Full_Access. */ + if (Is_Atomic_Or_VFA (gnat_entity)) + { + size_cap = UINT_MAX; + align_cap = BIGGEST_ALIGNMENT; + } + else + { + size_cap = MAX_FIXED_MODE_SIZE; + align_cap = get_mode_alignment (ptr_mode); + } + + /* Do the promotion within the above limits. */ + if (!tree_fits_uhwi_p (TYPE_SIZE (gnu_type)) + || compare_tree_int (TYPE_SIZE (gnu_type), size_cap) > 0) + align = 0; + else if (compare_tree_int (TYPE_SIZE (gnu_type), align_cap) > 0) + align = align_cap; + else + align = ceil_pow2 (tree_to_uhwi (TYPE_SIZE (gnu_type))); + + /* But make sure not to under-align the object. */ + if (align <= TYPE_ALIGN (gnu_type)) + align = 0; + + /* And honor the minimum valid atomic alignment, if any. */ +#ifdef MINIMUM_ATOMIC_ALIGNMENT + else if (align < MINIMUM_ATOMIC_ALIGNMENT) + align = MINIMUM_ATOMIC_ALIGNMENT; +#endif + + return align; +} + /* Verify that TYPE is something we can implement atomically. If not, issue an error for GNAT_ENTITY. COMPONENT_P is true if we are being called to process a component type. */ Index: gcc/ada/gcc-interface/trans.c =================================================================== --- gcc/ada/gcc-interface/trans.c (.../tags/gcc_7_2_0_release) +++ gcc/ada/gcc-interface/trans.c (.../branches/gcc-7-branch) @@ -1477,7 +1477,7 @@ else option_index = 0; - set_default_handlers (&handlers); + set_default_handlers (&handlers, NULL); control_warning_option (option_index, (int) kind, arg, imply, location, lang_mask, &handlers, &global_options, &global_options_set, global_dc); @@ -4058,8 +4058,6 @@ case N_Identifier: case N_Expanded_Name: gnat_entity = Entity (gnat_node); - if (Ekind (gnat_entity) != E_Variable) - break; return Is_Volatile_Full_Access (gnat_entity) || Is_Volatile_Full_Access (Etype (gnat_entity)); @@ -4326,11 +4324,11 @@ parameters. 2. There is no target and the call is made for neither an object nor a - renaming declaration, nor a return statement, and the return type has - variable size, because in this case the gimplifier cannot create the - temporary, or more generally is simply an aggregate type, because the - gimplifier would create the temporary in the outermost scope instead - of locally. + renaming declaration, nor a return statement, nor an allocator, and + the return type has variable size because in this case the gimplifier + cannot create the temporary, or more generally is simply an aggregate + type, because the gimplifier would then create the temporary in the + outermost scope instead of locally. 3. There is a target and it is a slice or an array with fixed size, and the return type has variable size, because the gimplifier @@ -4349,6 +4347,8 @@ && Nkind (Parent (gnat_node)) != N_Object_Declaration && Nkind (Parent (gnat_node)) != N_Object_Renaming_Declaration && Nkind (Parent (gnat_node)) != N_Simple_Return_Statement + && !(Nkind (Parent (gnat_node)) == N_Qualified_Expression + && Nkind (Parent (Parent (gnat_node))) == N_Allocator) && AGGREGATE_TYPE_P (gnu_result_type) && !TYPE_IS_FAT_POINTER_P (gnu_result_type)) || (gnu_target @@ -9702,7 +9702,14 @@ gnat_component_type); else { - gnu_expr = gnat_to_gnu (gnat_expr); + /* If the expression is a conversion to an unconstrained array type, + skip it to avoid spilling to memory. */ + if (Nkind (gnat_expr) == N_Type_Conversion + && Is_Array_Type (Etype (gnat_expr)) + && !Is_Constrained (Etype (gnat_expr))) + gnu_expr = gnat_to_gnu (Expression (gnat_expr)); + else + gnu_expr = gnat_to_gnu (gnat_expr); /* Before assigning the element to the array, make sure it is in range. */ Index: gcc/asan.c =================================================================== --- gcc/asan.c (.../tags/gcc_7_2_0_release) +++ gcc/asan.c (.../branches/gcc-7-branch) @@ -2315,9 +2315,12 @@ /* DECL_NAME theoretically might be NULL. Bail out with 0 in this case. */ if (decl_name == NULL_TREE) return build_int_cst (uptr, 0); - size_t len = strlen (IDENTIFIER_POINTER (decl_name)) + sizeof ("__odr_asan_"); + const char *dname = IDENTIFIER_POINTER (decl_name); + if (HAS_DECL_ASSEMBLER_NAME_P (decl)) + dname = targetm.strip_name_encoding (dname); + size_t len = strlen (dname) + sizeof ("__odr_asan_"); name = XALLOCAVEC (char, len); - snprintf (name, len, "__odr_asan_%s", IDENTIFIER_POINTER (decl_name)); + snprintf (name, len, "__odr_asan_%s", dname); #ifndef NO_DOT_IN_LABEL name[sizeof ("__odr_asan") - 1] = '.'; #elif !defined(NO_DOLLAR_IN_LABEL) Index: gcc/lra-remat.c =================================================================== --- gcc/lra-remat.c (.../tags/gcc_7_2_0_release) +++ gcc/lra-remat.c (.../branches/gcc-7-branch) @@ -684,7 +684,7 @@ if (regno2 >= FIRST_PSEUDO_REGISTER && reg_renumber[regno2] >= 0) regno2 = reg_renumber[regno2]; - if (regno >= FIRST_PSEUDO_REGISTER) + if (regno2 >= FIRST_PSEUDO_REGISTER) nregs2 = 1; else nregs2 = hard_regno_nregs[regno2][reg->biggest_mode]; Index: gcc/gimple-ssa-strength-reduction.c =================================================================== --- gcc/gimple-ssa-strength-reduction.c (.../tags/gcc_7_2_0_release) +++ gcc/gimple-ssa-strength-reduction.c (.../branches/gcc-7-branch) @@ -476,7 +476,8 @@ c = base_cand_from_table (base); - if (!c || c->kind != CAND_PHI) + if (!c || c->kind != CAND_PHI + || SSA_NAME_OCCURS_IN_ABNORMAL_PHI (gimple_phi_result (c->cand_stmt))) return 0; return c->cand_num; @@ -515,6 +516,11 @@ gimple_bb (one_basis->cand_stmt))) continue; + tree lhs = gimple_assign_lhs (one_basis->cand_stmt); + if (lhs && TREE_CODE (lhs) == SSA_NAME + && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs)) + continue; + if (!basis || basis->cand_num < one_basis->cand_num) basis = one_basis; } @@ -2044,105 +2050,105 @@ tree target_type = TREE_TYPE (gimple_assign_lhs (c->cand_stmt)); enum tree_code cand_code = gimple_assign_rhs_code (c->cand_stmt); - /* It is highly unlikely, but possible, that the resulting - bump doesn't fit in a HWI. Abandon the replacement - in this case. This does not affect siblings or dependents - of C. Restriction to signed HWI is conservative for unsigned - types but allows for safe negation without twisted logic. */ - if (wi::fits_shwi_p (bump) - && bump.to_shwi () != HOST_WIDE_INT_MIN - /* It is not useful to replace casts, copies, negates, or adds of - an SSA name and a constant. */ - && cand_code != SSA_NAME - && !CONVERT_EXPR_CODE_P (cand_code) - && cand_code != PLUS_EXPR - && cand_code != POINTER_PLUS_EXPR - && cand_code != MINUS_EXPR - && cand_code != NEGATE_EXPR) + /* It is not useful to replace casts, copies, negates, or adds of + an SSA name and a constant. */ + if (cand_code == SSA_NAME + || CONVERT_EXPR_CODE_P (cand_code) + || cand_code == PLUS_EXPR + || cand_code == POINTER_PLUS_EXPR + || cand_code == MINUS_EXPR + || cand_code == NEGATE_EXPR) + return; + + enum tree_code code = PLUS_EXPR; + tree bump_tree; + gimple *stmt_to_print = NULL; + + /* If the basis name and the candidate's LHS have incompatible + types, introduce a cast. */ + if (!useless_type_conversion_p (target_type, TREE_TYPE (basis_name))) + basis_name = introduce_cast_before_cand (c, target_type, basis_name); + if (wi::neg_p (bump)) { - enum tree_code code = PLUS_EXPR; - tree bump_tree; - gimple *stmt_to_print = NULL; + code = MINUS_EXPR; + bump = -bump; + } - /* If the basis name and the candidate's LHS have incompatible - types, introduce a cast. */ - if (!useless_type_conversion_p (target_type, TREE_TYPE (basis_name))) - basis_name = introduce_cast_before_cand (c, target_type, basis_name); - if (wi::neg_p (bump)) + /* It is possible that the resulting bump doesn't fit in target_type. + Abandon the replacement in this case. This does not affect + siblings or dependents of C. */ + if (bump != wi::ext (bump, TYPE_PRECISION (target_type), + TYPE_SIGN (target_type))) + return; + + bump_tree = wide_int_to_tree (target_type, bump); + + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fputs ("Replacing: ", dump_file); + print_gimple_stmt (dump_file, c->cand_stmt, 0, 0); + } + + if (bump == 0) + { + tree lhs = gimple_assign_lhs (c->cand_stmt); + gassign *copy_stmt = gimple_build_assign (lhs, basis_name); + gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt); + slsr_cand_t cc = c; + gimple_set_location (copy_stmt, gimple_location (c->cand_stmt)); + gsi_replace (&gsi, copy_stmt, false); + c->cand_stmt = copy_stmt; + while (cc->next_interp) { - code = MINUS_EXPR; - bump = -bump; + cc = lookup_cand (cc->next_interp); + cc->cand_stmt = copy_stmt; } - - bump_tree = wide_int_to_tree (target_type, bump); - if (dump_file && (dump_flags & TDF_DETAILS)) + stmt_to_print = copy_stmt; + } + else + { + tree rhs1, rhs2; + if (cand_code != NEGATE_EXPR) { + rhs1 = gimple_assign_rhs1 (c->cand_stmt); + rhs2 = gimple_assign_rhs2 (c->cand_stmt); + } + if (cand_code != NEGATE_EXPR + && ((operand_equal_p (rhs1, basis_name, 0) + && operand_equal_p (rhs2, bump_tree, 0)) + || (operand_equal_p (rhs1, bump_tree, 0) + && operand_equal_p (rhs2, basis_name, 0)))) { - fputs ("Replacing: ", dump_file); - print_gimple_stmt (dump_file, c->cand_stmt, 0, 0); + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fputs ("(duplicate, not actually replacing)", dump_file); + stmt_to_print = c->cand_stmt; + } } - - if (bump == 0) + else { - tree lhs = gimple_assign_lhs (c->cand_stmt); - gassign *copy_stmt = gimple_build_assign (lhs, basis_name); gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt); slsr_cand_t cc = c; - gimple_set_location (copy_stmt, gimple_location (c->cand_stmt)); - gsi_replace (&gsi, copy_stmt, false); - c->cand_stmt = copy_stmt; + gimple_assign_set_rhs_with_ops (&gsi, code, + basis_name, bump_tree); + update_stmt (gsi_stmt (gsi)); + c->cand_stmt = gsi_stmt (gsi); while (cc->next_interp) { cc = lookup_cand (cc->next_interp); - cc->cand_stmt = copy_stmt; + cc->cand_stmt = gsi_stmt (gsi); } if (dump_file && (dump_flags & TDF_DETAILS)) - stmt_to_print = copy_stmt; + stmt_to_print = gsi_stmt (gsi); } - else - { - tree rhs1, rhs2; - if (cand_code != NEGATE_EXPR) { - rhs1 = gimple_assign_rhs1 (c->cand_stmt); - rhs2 = gimple_assign_rhs2 (c->cand_stmt); - } - if (cand_code != NEGATE_EXPR - && ((operand_equal_p (rhs1, basis_name, 0) - && operand_equal_p (rhs2, bump_tree, 0)) - || (operand_equal_p (rhs1, bump_tree, 0) - && operand_equal_p (rhs2, basis_name, 0)))) - { - if (dump_file && (dump_flags & TDF_DETAILS)) - { - fputs ("(duplicate, not actually replacing)", dump_file); - stmt_to_print = c->cand_stmt; - } - } - else - { - gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt); - slsr_cand_t cc = c; - gimple_assign_set_rhs_with_ops (&gsi, code, - basis_name, bump_tree); - update_stmt (gsi_stmt (gsi)); - c->cand_stmt = gsi_stmt (gsi); - while (cc->next_interp) - { - cc = lookup_cand (cc->next_interp); - cc->cand_stmt = gsi_stmt (gsi); - } - if (dump_file && (dump_flags & TDF_DETAILS)) - stmt_to_print = gsi_stmt (gsi); - } - } - - if (dump_file && (dump_flags & TDF_DETAILS)) - { - fputs ("With: ", dump_file); - print_gimple_stmt (dump_file, stmt_to_print, 0, 0); - fputs ("\n", dump_file); - } } + + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fputs ("With: ", dump_file); + print_gimple_stmt (dump_file, stmt_to_print, 0, 0); + fputs ("\n", dump_file); + } } /* Replace candidate C with an add or subtract. Note that we only @@ -2193,8 +2199,6 @@ widest_int increment, edge e, location_t loc, bool known_stride) { - basic_block insert_bb; - gimple_stmt_iterator gsi; tree lhs, basis_type; gassign *new_stmt, *cast_stmt = NULL; @@ -2263,39 +2267,25 @@ } } - insert_bb = single_succ_p (e->src) ? e->src : split_edge (e); - gsi = gsi_last_bb (insert_bb); - - if (!gsi_end_p (gsi) && stmt_ends_bb_p (gsi_stmt (gsi))) + if (cast_stmt) { - gsi_insert_before (&gsi, new_stmt, GSI_SAME_STMT); - if (cast_stmt) - { - gsi_insert_before (&gsi, cast_stmt, GSI_SAME_STMT); - gimple_set_location (cast_stmt, loc); - } + gimple_set_location (cast_stmt, loc); + gsi_insert_on_edge (e, cast_stmt); } - else - { - if (cast_stmt) - { - gsi_insert_after (&gsi, cast_stmt, GSI_NEW_STMT); - gimple_set_location (cast_stmt, loc); - } - gsi_insert_after (&gsi, new_stmt, GSI_NEW_STMT); - } gimple_set_location (new_stmt, loc); + gsi_insert_on_edge (e, new_stmt); if (dump_file && (dump_flags & TDF_DETAILS)) { if (cast_stmt) { - fprintf (dump_file, "Inserting cast in block %d: ", - insert_bb->index); + fprintf (dump_file, "Inserting cast on edge %d->%d: ", + e->src->index, e->dest->index); print_gimple_stmt (dump_file, cast_stmt, 0, 0); } - fprintf (dump_file, "Inserting in block %d: ", insert_bb->index); + fprintf (dump_file, "Inserting on edge %d->%d: ", e->src->index, + e->dest->index); print_gimple_stmt (dump_file, new_stmt, 0, 0); } @@ -3217,6 +3207,23 @@ that block, the earliest one will be returned in WHERE. */ bb = nearest_common_dominator_for_cands (c, incr, &where); + /* If the NCD is not dominated by the block containing the + definition of the stride, we can't legally insert a + single initializer. Mark the increment as unprofitable + so we don't make any replacements. FIXME: Multiple + initializers could be placed with more analysis. */ + gimple *stride_def = SSA_NAME_DEF_STMT (c->stride); + basic_block stride_bb = gimple_bb (stride_def); + + if (stride_bb && !dominated_by_p (CDI_DOMINATORS, bb, stride_bb)) + { + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, + "Initializer #%d cannot be legally placed\n", i); + incr_vec[i].cost = COST_INFINITE; + continue; + } + /* If the nominal stride has a different type than the recorded stride type, build a cast from the nominal stride to that type. */ if (!types_compatible_p (TREE_TYPE (c->stride), c->stride_type)) @@ -3736,6 +3743,10 @@ free (incr_vec); } } + + /* For conditional candidates, we may have uncommitted insertions + on edges to clean up. */ + gsi_commit_edge_inserts (); } namespace { Index: gcc/fortran/ChangeLog =================================================================== --- gcc/fortran/ChangeLog (.../tags/gcc_7_2_0_release) +++ gcc/fortran/ChangeLog (.../branches/gcc-7-branch) @@ -1,3 +1,32 @@ +2017-10-03 Thomas Koenig + Steven G. Kargl + + Backport from trunk + PR fortran/80118 + * expr.c (gfc_get_full_arrayspec_from_expr): If there is + no symtree, set array spec to NULL. + +2017-09-02 Janus Weil + + Backport from trunk + PR fortran/81770 + * expr.c (gfc_check_pointer_assign): Improve the check whether pointer + may outlive pointer target. + +2017-08-22 Jerry DeLisle + + Backport from trunk + PR fortran/81296 + * trans-io.c (get_dtio_proc): Add check for format label and set + formatted flag accordingly. Reorganize the code a little. + +2017-08-18 Jerry DeLisle + + Backport from trunk + PR fortran/80164 + * trans-stmt.c (gfc_trans_call): If no code expr, use code->loc + as warning/error locus. + 2017-08-14 Release Manager * GCC 7.2.0 released. Index: gcc/fortran/trans-stmt.c =================================================================== --- gcc/fortran/trans-stmt.c (.../tags/gcc_7_2_0_release) +++ gcc/fortran/trans-stmt.c (.../branches/gcc-7-branch) @@ -452,7 +452,10 @@ subscripts. This could be prevented in the elemental case as temporaries are handled separatedly (below in gfc_conv_elemental_dependencies). */ - gfc_conv_loop_setup (&loop, &code->expr1->where); + if (code->expr1) + gfc_conv_loop_setup (&loop, &code->expr1->where); + else + gfc_conv_loop_setup (&loop, &code->loc); gfc_mark_ss_chain_used (ss, 1); /* Convert the arguments, checking for dependencies. */ Index: gcc/fortran/expr.c =================================================================== --- gcc/fortran/expr.c (.../tags/gcc_7_2_0_release) +++ gcc/fortran/expr.c (.../branches/gcc-7-branch) @@ -3806,7 +3806,8 @@ if (warn_target_lifetime && rvalue->expr_type == EXPR_VARIABLE && !rvalue->symtree->n.sym->attr.save - && !attr.pointer && !rvalue->symtree->n.sym->attr.host_assoc + && !rvalue->symtree->n.sym->attr.pointer && !attr.pointer + && !rvalue->symtree->n.sym->attr.host_assoc && !rvalue->symtree->n.sym->attr.in_common && !rvalue->symtree->n.sym->attr.use_assoc && !rvalue->symtree->n.sym->attr.dummy) @@ -4514,7 +4515,11 @@ if (expr->expr_type == EXPR_VARIABLE || expr->expr_type == EXPR_CONSTANT) { - as = expr->symtree->n.sym->as; + if (expr->symtree) + as = expr->symtree->n.sym->as; + else + as = NULL; + for (ref = expr->ref; ref; ref = ref->next) { switch (ref->type) Index: gcc/fortran/trans-io.c =================================================================== --- gcc/fortran/trans-io.c (.../tags/gcc_7_2_0_release) +++ gcc/fortran/trans-io.c (.../branches/gcc-7-branch) @@ -2214,19 +2214,25 @@ bool formatted = false; gfc_dt *dt = code->ext.dt; - if (dt && dt->format_expr) + if (dt) { - char *fmt; - fmt = gfc_widechar_to_char (dt->format_expr->value.character.string, - -1); - if (strtok (fmt, "DT") != NULL) + char *fmt = NULL; + + if (dt->format_label == &format_asterisk) + { + /* List directed io must call the formatted DTIO procedure. */ + formatted = true; + } + else if (dt->format_expr) + fmt = gfc_widechar_to_char (dt->format_expr->value.character.string, + -1); + else if (dt->format_label) + fmt = gfc_widechar_to_char (dt->format_label->format->value.character.string, + -1); + if (fmt && strtok (fmt, "DT") != NULL) formatted = true; + } - else if (dt && dt->format_label == &format_asterisk) - { - /* List directed io must call the formatted DTIO procedure. */ - formatted = true; - } if (ts->type == BT_CLASS) derived = ts->u.derived->components->ts.u.derived; Index: gcc/BASE-VER =================================================================== --- gcc/BASE-VER (.../tags/gcc_7_2_0_release) +++ gcc/BASE-VER (.../branches/gcc-7-branch) @@ -1 +1 @@ -7.2.0 +7.2.1 Index: gcc/langhooks.h =================================================================== --- gcc/langhooks.h (.../tags/gcc_7_2_0_release) +++ gcc/langhooks.h (.../branches/gcc-7-branch) @@ -123,6 +123,10 @@ FUNCTION_TYPE or METHOD_TYPE. */ bool (*type_hash_eq) (const_tree, const_tree); + /* If non-NULL, return TYPE1 with any language-specific modifiers copied from + TYPE2. */ + tree (*copy_lang_qualifiers) (const_tree, const_tree); + /* Return TRUE if TYPE uses a hidden descriptor and fills in information for the debugger about the array bounds, strides, etc. */ bool (*get_array_descr_info) (const_tree, struct array_descr_info *); Index: gcc/tree-if-conv.c =================================================================== --- gcc/tree-if-conv.c (.../tags/gcc_7_2_0_release) +++ gcc/tree-if-conv.c (.../branches/gcc-7-branch) @@ -2198,7 +2198,7 @@ gimple *stmt; int index; - if (is_true_predicate (cond) || is_false_predicate (cond)) + if (is_true_predicate (cond)) continue; swap = false; @@ -2211,96 +2211,106 @@ vect_sizes.truncate (0); vect_masks.truncate (0); - for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) - if (!gimple_assign_single_p (stmt = gsi_stmt (gsi))) - continue; - else if (gimple_plf (stmt, GF_PLF_2)) - { - tree lhs = gimple_assign_lhs (stmt); - tree rhs = gimple_assign_rhs1 (stmt); - tree ref, addr, ptr, mask; - gimple *new_stmt; - gimple_seq stmts = NULL; - int bitsize = GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (lhs))); - ref = TREE_CODE (lhs) == SSA_NAME ? rhs : lhs; - mark_addressable (ref); - addr = force_gimple_operand_gsi (&gsi, build_fold_addr_expr (ref), - true, NULL_TREE, true, - GSI_SAME_STMT); - if (!vect_sizes.is_empty () - && (index = mask_exists (bitsize, vect_sizes)) != -1) - /* Use created mask. */ - mask = vect_masks[index]; - else - { - if (COMPARISON_CLASS_P (cond)) - mask = gimple_build (&stmts, TREE_CODE (cond), - boolean_type_node, - TREE_OPERAND (cond, 0), - TREE_OPERAND (cond, 1)); - else - { - gcc_assert (TREE_CODE (cond) == SSA_NAME); - mask = cond; - } + for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi);) + { + if (!gimple_assign_single_p (stmt = gsi_stmt (gsi))) + ; + else if (is_false_predicate (cond)) + { + unlink_stmt_vdef (stmt); + gsi_remove (&gsi, true); + release_defs (stmt); + continue; + } + else if (gimple_plf (stmt, GF_PLF_2)) + { + tree lhs = gimple_assign_lhs (stmt); + tree rhs = gimple_assign_rhs1 (stmt); + tree ref, addr, ptr, mask; + gimple *new_stmt; + gimple_seq stmts = NULL; + int bitsize = GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (lhs))); + ref = TREE_CODE (lhs) == SSA_NAME ? rhs : lhs; + mark_addressable (ref); + addr = force_gimple_operand_gsi (&gsi, build_fold_addr_expr (ref), + true, NULL_TREE, true, + GSI_SAME_STMT); + if (!vect_sizes.is_empty () + && (index = mask_exists (bitsize, vect_sizes)) != -1) + /* Use created mask. */ + mask = vect_masks[index]; + else + { + if (COMPARISON_CLASS_P (cond)) + mask = gimple_build (&stmts, TREE_CODE (cond), + boolean_type_node, + TREE_OPERAND (cond, 0), + TREE_OPERAND (cond, 1)); + else + { + gcc_assert (TREE_CODE (cond) == SSA_NAME); + mask = cond; + } - if (swap) - { - tree true_val - = constant_boolean_node (true, TREE_TYPE (mask)); - mask = gimple_build (&stmts, BIT_XOR_EXPR, - TREE_TYPE (mask), mask, true_val); - } - gsi_insert_seq_before (&gsi, stmts, GSI_SAME_STMT); + if (swap) + { + tree true_val + = constant_boolean_node (true, TREE_TYPE (mask)); + mask = gimple_build (&stmts, BIT_XOR_EXPR, + TREE_TYPE (mask), mask, true_val); + } + gsi_insert_seq_before (&gsi, stmts, GSI_SAME_STMT); - mask = ifc_temp_var (TREE_TYPE (mask), mask, &gsi); - /* Save mask and its size for further use. */ - vect_sizes.safe_push (bitsize); - vect_masks.safe_push (mask); - } - ptr = build_int_cst (reference_alias_ptr_type (ref), - get_object_alignment (ref)); - /* Copy points-to info if possible. */ - if (TREE_CODE (addr) == SSA_NAME && !SSA_NAME_PTR_INFO (addr)) - copy_ref_info (build2 (MEM_REF, TREE_TYPE (ref), addr, ptr), - ref); - if (TREE_CODE (lhs) == SSA_NAME) - { - new_stmt - = gimple_build_call_internal (IFN_MASK_LOAD, 3, addr, - ptr, mask); - gimple_call_set_lhs (new_stmt, lhs); - gimple_set_vuse (new_stmt, gimple_vuse (stmt)); - } - else - { - new_stmt - = gimple_build_call_internal (IFN_MASK_STORE, 4, addr, ptr, + mask = ifc_temp_var (TREE_TYPE (mask), mask, &gsi); + /* Save mask and its size for further use. */ + vect_sizes.safe_push (bitsize); + vect_masks.safe_push (mask); + } + ptr = build_int_cst (reference_alias_ptr_type (ref), + get_object_alignment (ref)); + /* Copy points-to info if possible. */ + if (TREE_CODE (addr) == SSA_NAME && !SSA_NAME_PTR_INFO (addr)) + copy_ref_info (build2 (MEM_REF, TREE_TYPE (ref), addr, ptr), + ref); + if (TREE_CODE (lhs) == SSA_NAME) + { + new_stmt + = gimple_build_call_internal (IFN_MASK_LOAD, 3, addr, + ptr, mask); + gimple_call_set_lhs (new_stmt, lhs); + gimple_set_vuse (new_stmt, gimple_vuse (stmt)); + } + else + { + new_stmt + = gimple_build_call_internal (IFN_MASK_STORE, 4, addr, ptr, mask, rhs); - gimple_set_vuse (new_stmt, gimple_vuse (stmt)); - gimple_set_vdef (new_stmt, gimple_vdef (stmt)); - SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt; - } + gimple_set_vuse (new_stmt, gimple_vuse (stmt)); + gimple_set_vdef (new_stmt, gimple_vdef (stmt)); + SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt; + } - gsi_replace (&gsi, new_stmt, true); - } - else if (gimple_vdef (stmt)) - { - tree lhs = gimple_assign_lhs (stmt); - tree rhs = gimple_assign_rhs1 (stmt); - tree type = TREE_TYPE (lhs); + gsi_replace (&gsi, new_stmt, true); + } + else if (gimple_vdef (stmt)) + { + tree lhs = gimple_assign_lhs (stmt); + tree rhs = gimple_assign_rhs1 (stmt); + tree type = TREE_TYPE (lhs); - lhs = ifc_temp_var (type, unshare_expr (lhs), &gsi); - rhs = ifc_temp_var (type, unshare_expr (rhs), &gsi); - if (swap) - std::swap (lhs, rhs); - cond = force_gimple_operand_gsi_1 (&gsi, unshare_expr (cond), - is_gimple_condexpr, NULL_TREE, - true, GSI_SAME_STMT); - rhs = fold_build_cond_expr (type, unshare_expr (cond), rhs, lhs); - gimple_assign_set_rhs1 (stmt, ifc_temp_var (type, rhs, &gsi)); - update_stmt (stmt); - } + lhs = ifc_temp_var (type, unshare_expr (lhs), &gsi); + rhs = ifc_temp_var (type, unshare_expr (rhs), &gsi); + if (swap) + std::swap (lhs, rhs); + cond = force_gimple_operand_gsi_1 (&gsi, unshare_expr (cond), + is_gimple_condexpr, NULL_TREE, + true, GSI_SAME_STMT); + rhs = fold_build_cond_expr (type, unshare_expr (cond), rhs, lhs); + gimple_assign_set_rhs1 (stmt, ifc_temp_var (type, rhs, &gsi)); + update_stmt (stmt); + } + gsi_next (&gsi); + } } } Index: gcc/gimplify.c =================================================================== --- gcc/gimplify.c (.../tags/gcc_7_2_0_release) +++ gcc/gimplify.c (.../branches/gcc-7-branch) @@ -5434,7 +5434,12 @@ side as statements and throw away the assignment. Do this after gimplify_modify_expr_rhs so we handle TARGET_EXPRs of addressable types properly. */ - if (zero_sized_type (TREE_TYPE (*from_p)) && !want_value) + if (zero_sized_type (TREE_TYPE (*from_p)) + && !want_value + /* Don't do this for calls that return addressable types, expand_call + relies on those having a lhs. */ + && !(TREE_ADDRESSABLE (TREE_TYPE (*from_p)) + && TREE_CODE (*from_p) == CALL_EXPR)) { gimplify_stmt (from_p, pre_p); gimplify_stmt (to_p, pre_p); Index: gcc/calls.c =================================================================== --- gcc/calls.c (.../tags/gcc_7_2_0_release) +++ gcc/calls.c (.../branches/gcc-7-branch) @@ -1220,32 +1220,38 @@ else if (!strcasecmp (end, "KiB") || strcmp (end, "KB")) unit = 1024; else if (!strcmp (end, "MB")) - unit = 1000LU * 1000; + unit = HOST_WIDE_INT_UC (1000) * 1000; else if (!strcasecmp (end, "MiB")) - unit = 1024LU * 1024; + unit = HOST_WIDE_INT_UC (1024) * 1024; else if (!strcasecmp (end, "GB")) - unit = 1000LU * 1000 * 1000; + unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000; else if (!strcasecmp (end, "GiB")) - unit = 1024LU * 1024 * 1024; + unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024; else if (!strcasecmp (end, "TB")) - unit = 1000LU * 1000 * 1000 * 1000; + unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000; else if (!strcasecmp (end, "TiB")) - unit = 1024LU * 1024 * 1024 * 1024; + unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024; else if (!strcasecmp (end, "PB")) - unit = 1000LU * 1000 * 1000 * 1000 * 1000; + unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000 * 1000; else if (!strcasecmp (end, "PiB")) - unit = 1024LU * 1024 * 1024 * 1024 * 1024; + unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024 * 1024; else if (!strcasecmp (end, "EB")) - unit = 1000LU * 1000 * 1000 * 1000 * 1000 * 1000; + unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000 * 1000 + * 1000; else if (!strcasecmp (end, "EiB")) - unit = 1024LU * 1024 * 1024 * 1024 * 1024 * 1024; + unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024 * 1024 + * 1024; else unit = 0; } if (unit) - alloc_object_size_limit - = build_int_cst (ssizetype, limit * unit); + { + wide_int w = wi::uhwi (limit, HOST_BITS_PER_WIDE_INT + 64); + w *= unit; + if (wi::ltu_p (w, alloc_object_size_limit)) + alloc_object_size_limit = wide_int_to_tree (ssizetype, w); + } } } } Index: gcc/gimple-fold.c =================================================================== --- gcc/gimple-fold.c (.../tags/gcc_7_2_0_release) +++ gcc/gimple-fold.c (.../branches/gcc-7-branch) @@ -1236,7 +1236,7 @@ the NUL. Set *FLEXP to true if the array whose bound is being used is at the end of a struct. */ - if (array_at_struct_end_p (arg, true)) + if (array_at_struct_end_p (arg)) *flexp = true; arg = TREE_OPERAND (arg, 1); Index: gcc/tree-ssa-pre.c =================================================================== --- gcc/tree-ssa-pre.c (.../tags/gcc_7_2_0_release) +++ gcc/tree-ssa-pre.c (.../branches/gcc-7-branch) @@ -2090,8 +2090,9 @@ ANTIC_OUT[BLOCK] = phi_translate (ANTIC_IN[succ(BLOCK)]) ANTIC_IN[BLOCK] = clean(ANTIC_OUT[BLOCK] U EXP_GEN[BLOCK] - TMP_GEN[BLOCK]) -*/ + Note that clean() is deferred until after the iteration. */ + static bool compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge) { @@ -2190,7 +2191,8 @@ bitmap_value_insert_into_set (ANTIC_IN (block), expression_for_id (bii)); - clean (ANTIC_IN (block)); + /* clean (ANTIC_IN (block)) is defered to after the iteration converged + because it can cause non-convergence, see for example PR81181. */ if (!was_visited || !bitmap_set_equal (old, ANTIC_IN (block))) changed = true; @@ -2424,6 +2426,12 @@ gcc_checking_assert (num_iterations < 500); } + /* We have to clean after the dataflow problem converged as cleaning + can cause non-convergence because it is based on expressions + rather than values. */ + FOR_EACH_BB_FN (block, cfun) + clean (ANTIC_IN (block)); + statistics_histogram_event (cfun, "compute_antic iterations", num_iterations); Index: gcc/po/es.po =================================================================== --- gcc/po/es.po (.../tags/gcc_7_2_0_release) +++ gcc/po/es.po (.../branches/gcc-7-branch) @@ -39,7 +39,7 @@ msgstr "" "Project-Id-Version: gcc 7.1.0\n" "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" -"POT-Creation-Date: 2017-05-01 22:24+0000\n" +"POT-Creation-Date: 2017-08-04 22:17+0000\n" "PO-Revision-Date: 2017-07-26 08:25+0200\n" "Last-Translator: Antonio Ceballos \n" "Language-Team: Spanish \n" @@ -227,13 +227,13 @@ #. TARGET_PRINT_OPERAND must handle them. #. We can't handle floating point constants; #. PRINT_OPERAND must handle them. -#: final.c:3988 config/arc/arc.c:5068 config/i386/i386.c:17057 +#: final.c:3988 config/arc/arc.c:5068 config/i386/i386.c:17063 #: config/pdp11/pdp11.c:1698 #, c-format msgid "floating constant misused" msgstr "constante de coma flotante mal usada" -#: final.c:4046 config/arc/arc.c:5165 config/i386/i386.c:17155 +#: final.c:4046 config/arc/arc.c:5165 config/i386/i386.c:17161 #: config/pdp11/pdp11.c:1739 #, c-format msgid "invalid expression as operand" @@ -519,62 +519,62 @@ " automáticamente a los varios subprocesos invocados por %s. Para pasar\n" " otras opciones a estos procesos se deben usar las opciones -W.\n" -#: gcc.c:5934 +#: gcc.c:5937 #, c-format msgid "Processing spec (%s), which is '%s'\n" msgstr "Se procesa la especificación (%s), la cual es '%s'\n" -#: gcc.c:6638 +#: gcc.c:6641 #, c-format msgid "Target: %s\n" msgstr "Objetivo: %s\n" -#: gcc.c:6639 +#: gcc.c:6642 #, c-format msgid "Configured with: %s\n" msgstr "Configurado con: %s\n" -#: gcc.c:6653 +#: gcc.c:6656 #, c-format msgid "Thread model: %s\n" msgstr "Modelo de hilos: %s\n" -#: gcc.c:6664 +#: gcc.c:6667 #, c-format msgid "gcc version %s %s\n" msgstr "gcc versión %s %s\n" -#: gcc.c:6667 +#: gcc.c:6670 #, c-format msgid "gcc driver version %s %sexecuting gcc version %s\n" msgstr "controlador gcc versión %s %sejecutando gcc versión %s\n" -#: gcc.c:6740 gcc.c:6952 +#: gcc.c:6743 gcc.c:6955 #, c-format msgid "The bug is not reproducible, so it is likely a hardware or OS problem.\n" msgstr "El error no es repetible, por lo que probablemente sea un problema de hardware o de S.O.\n" -#: gcc.c:6876 +#: gcc.c:6879 #, c-format msgid "Preprocessed source stored into %s file, please attach this to your bugreport.\n" msgstr "Fuente preprocesada almacenada en el fichero %s; por favor, adjúntelo a su informe de errores.\n" -#: gcc.c:7829 +#: gcc.c:7832 #, c-format msgid "install: %s%s\n" msgstr "instalar: %s%s\n" -#: gcc.c:7832 +#: gcc.c:7835 #, c-format msgid "programs: %s\n" msgstr "programas: %s\n" -#: gcc.c:7834 +#: gcc.c:7837 #, c-format msgid "libraries: %s\n" msgstr "bibliotecas: %s\n" -#: gcc.c:7951 +#: gcc.c:7954 #, c-format msgid "" "\n" @@ -583,16 +583,16 @@ "\n" "Para instrucciones de informe de errores, por favor vea:\n" -#: gcc.c:7967 gcov-tool.c:528 +#: gcc.c:7970 gcov-tool.c:528 #, c-format msgid "%s %s%s\n" msgstr "%s %s%s\n" -#: gcc.c:7970 gcov-tool.c:530 gcov.c:689 fortran/gfortranspec.c:280 +#: gcc.c:7973 gcov-tool.c:530 gcov.c:689 fortran/gfortranspec.c:280 msgid "(C)" msgstr "(C)" -#: gcc.c:7971 fortran/gfortranspec.c:281 +#: gcc.c:7974 fortran/gfortranspec.c:281 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" @@ -603,7 +603,7 @@ "PARTICULAR\n" "\n" -#: gcc.c:8276 +#: gcc.c:8279 #, c-format msgid "" "\n" @@ -616,7 +616,7 @@ "======================\n" "\n" -#: gcc.c:8277 +#: gcc.c:8280 #, c-format msgid "" "Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n" @@ -623,7 +623,7 @@ "\n" msgstr "Utilice \"-Wl,OPCIÓN\" para pasar la \"OPCIÓN\" al enlazador.\n" -#: gcc.c:9580 +#: gcc.c:9583 #, c-format msgid "" "Assembler options\n" @@ -634,7 +634,7 @@ "=======================\n" "\n" -#: gcc.c:9581 +#: gcc.c:9584 #, c-format msgid "" "Use \"-Wa,OPTION\" to pass \"OPTION\" to the assembler.\n" @@ -648,16 +648,16 @@ msgid " merge [options] Merge coverage file contents\n" msgstr " merge [opciones] Mezcla el contenido del fichero de cobertura\n" -#: gcov-tool.c:176 gcov-tool.c:270 gcov-tool.c:420 +#: gcov-tool.c:176 gcov-tool.c:271 #, c-format +msgid " -o, --output

Output directory\n" +msgstr " -o, --output Directorio de salida\n" + +#: gcov-tool.c:177 gcov-tool.c:273 gcov-tool.c:425 +#, c-format msgid " -v, --verbose Verbose mode\n" msgstr " -v, --verbose Modo expresivo\n" -#: gcov-tool.c:177 gcov-tool.c:271 -#, c-format -msgid " -o, --output Output directory\n" -msgstr " -o, --output Directorio de salida\n" - #: gcov-tool.c:178 #, c-format msgid " -w, --weight Set weights (float point values)\n" @@ -673,16 +673,16 @@ msgid " rewrite [options] Rewrite coverage file contents\n" msgstr " rewrite [opciones] Reescribe el contenido del fichero de cobertura\n" +#: gcov-tool.c:270 +#, c-format +msgid " -n, --normalize Normalize the profile\n" +msgstr " -n, --normalize Normaliza el perfil\n" + #: gcov-tool.c:272 #, c-format msgid " -s, --scale Scale the profile counters\n" msgstr " -s, --scale Escala los contadores de perfil\n" -#: gcov-tool.c:273 -#, c-format -msgid " -n, --normalize Normalize the profile\n" -msgstr " -n, --normalize Normaliza el perfil\n" - #: gcov-tool.c:290 #, c-format msgid "Rewrite subcommand usage:" @@ -708,27 +708,27 @@ msgid " overlap [options] Compute the overlap of two profiles\n" msgstr " overlap [opciones]  Calcula el solapamiento de dos perfiles\n" -#: gcov-tool.c:421 +#: gcov-tool.c:420 #, c-format -msgid " -h, --hotonly Only print info for hot objects/functions\n" -msgstr " -h, --hotonly Solo imprime información sobre objetos y funciones calientes\n" - -#: gcov-tool.c:422 -#, c-format msgid " -f, --function Print function level info\n" msgstr " -f, --function Imprime información sobre el nivel de funciones\n" -#: gcov-tool.c:423 +#: gcov-tool.c:421 #, c-format msgid " -F, --fullname Print full filename\n" msgstr " -F, --fullname Imprime el nombre de fichero completo\n" -#: gcov-tool.c:424 +#: gcov-tool.c:422 #, c-format +msgid " -h, --hotonly Only print info for hot objects/functions\n" +msgstr " -h, --hotonly Solo imprime información sobre objetos y funciones calientes\n" + +#: gcov-tool.c:423 +#, c-format msgid " -o, --object Print object level info\n" msgstr " -o, --object Imprime información sobre el nivel de objetos\n" -#: gcov-tool.c:425 +#: gcov-tool.c:424 #, c-format msgid " -t , --hot_threshold Set the threshold for hotness\n" msgstr " -t , --hot_threshold Establece el umbral de calentura\n" @@ -815,20 +815,15 @@ #: gcov.c:658 #, c-format -msgid " -h, --help Print this help, then exit\n" -msgstr " -h, --help Muestra esta información, y finaliza\n" - -#: gcov.c:659 -#, c-format msgid " -a, --all-blocks Show information for every basic block\n" msgstr " -a, --all-blocks Muestra información por cada bloque básico\n" -#: gcov.c:660 +#: gcov.c:659 #, c-format msgid " -b, --branch-probabilities Include branch probabilities in output\n" msgstr " -b, --branch-probabilities Incluye las probabilidades de ramificación en la salida\n" -#: gcov.c:661 +#: gcov.c:660 #, c-format msgid "" " -c, --branch-counts Output counts of branches taken\n" @@ -837,16 +832,21 @@ " -c, --branch-counts Se muestra el número de ramificaciones\n" " en lugar de los porcentajes\n" -#: gcov.c:663 +#: gcov.c:662 #, c-format msgid " -d, --display-progress Display progress information\n" msgstr " -d, --display-progress Muestra información de progreso\n" -#: gcov.c:664 +#: gcov.c:663 #, c-format msgid " -f, --function-summaries Output summaries for each function\n" msgstr " -f, --function-summaries Muestra sumarios para cada función\n" +#: gcov.c:664 +#, c-format +msgid " -h, --help Print this help, then exit\n" +msgstr " -h, --help Muestra esta información, y finaliza\n" + #: gcov.c:665 #, c-format msgid " -i, --intermediate-format Output .gcov file in intermediate text format\n" @@ -1031,82 +1031,82 @@ msgid "%s:graph is unsolvable for '%s'\n" msgstr "%s:no se puede resolver el grafo para '%s'\n" -#: gcov.c:2002 +#: gcov.c:2009 #, c-format msgid "Lines executed:%s of %d\n" msgstr "Líneas ejecutadas:%s de %d\n" -#: gcov.c:2005 +#: gcov.c:2012 #, c-format msgid "No executable lines\n" msgstr "No hay líneas de código ejecutables\n" -#: gcov.c:2013 +#: gcov.c:2020 #, c-format msgid "%s '%s'\n" msgstr "%s '%s'\n" -#: gcov.c:2020 +#: gcov.c:2027 #, c-format msgid "Branches executed:%s of %d\n" msgstr "Ramificaciones ejecutadas:%s de %d\n" -#: gcov.c:2024 +#: gcov.c:2031 #, c-format msgid "Taken at least once:%s of %d\n" msgstr "Se visitaron al menos una vez:%s de %d\n" -#: gcov.c:2030 +#: gcov.c:2037 #, c-format msgid "No branches\n" msgstr "No hay ramificaciones\n" -#: gcov.c:2032 +#: gcov.c:2039 #, c-format msgid "Calls executed:%s of %d\n" msgstr "Llamadas ejecutadas:%s de %d\n" -#: gcov.c:2036 +#: gcov.c:2043 #, c-format msgid "No calls\n" msgstr "No hay llamadas\n" -#: gcov.c:2317 +#: gcov.c:2324 #, c-format msgid "%s:no lines for '%s'\n" msgstr "%s:no hay líneas para '%s'\n" -#: gcov.c:2419 +#: gcov.c:2426 #, c-format msgid "call %2d returned %s\n" msgstr "la llamada %2d devuelve %s\n" -#: gcov.c:2424 +#: gcov.c:2431 #, c-format msgid "call %2d never executed\n" msgstr "la llamada %2d nunca se ejecuta\n" -#: gcov.c:2429 +#: gcov.c:2436 #, c-format msgid "branch %2d taken %s%s\n" msgstr "ramificación %2d tomada %s%s\n" -#: gcov.c:2434 +#: gcov.c:2441 #, c-format msgid "branch %2d never executed\n" msgstr "la ramificacion %2d nunca se ejecuta\n" -#: gcov.c:2439 +#: gcov.c:2446 #, c-format msgid "unconditional %2d taken %s\n" msgstr "el incondicional %2d tomado %s\n" -#: gcov.c:2442 +#: gcov.c:2449 #, c-format msgid "unconditional %2d never executed\n" msgstr "el incondicional %2d nunca se ejecuta\n" -#: gcov.c:2512 +#: gcov.c:2519 #, c-format msgid "Cannot open source file %s\n" msgstr "No se puede abrir el fichero fuente %s\n" @@ -1213,89 +1213,89 @@ msgid "Uses of this option are diagnosed." msgstr "Los usos de esta opción están diagnosticados." -#: opts.c:1096 +#: opts.c:1103 #, c-format msgid "default %d minimum %d maximum %d" msgstr "predeterminado %d mínimo %d máximo %d" -#: opts.c:1163 +#: opts.c:1170 #, c-format msgid "Same as %s. Use the latter option instead." msgstr "Igual que %s. Utilice, en cambio, la última opción." -#: opts.c:1171 +#: opts.c:1178 #, c-format msgid "%s Same as %s." msgstr "%s Igual que %s." -#: opts.c:1242 +#: opts.c:1249 msgid "[default]" msgstr "[por defecto]" -#: opts.c:1253 +#: opts.c:1260 msgid "[enabled]" msgstr "[activado]" -#: opts.c:1253 +#: opts.c:1260 msgid "[disabled]" msgstr "[desactivado]" -#: opts.c:1272 +#: opts.c:1279 #, c-format msgid " No options with the desired characteristics were found\n" msgstr " No se encontraron opciones con las características deseadas\n" -#: opts.c:1281 +#: opts.c:1288 #, c-format msgid " None found. Use --help=%s to show *all* the options supported by the %s front-end.\n" msgstr " No se encontró ninguna. Use --help=%s para mostrar *todas* las opciones admitidas por el frente %s.\n" -#: opts.c:1287 +#: opts.c:1294 #, c-format msgid " All options with the desired characteristics have already been displayed\n" msgstr "Ya se mostraron todas las opciones con las características deseadas\n" -#: opts.c:1372 +#: opts.c:1379 msgid "The following options are target specific" msgstr "Las siguientes opciones son específicas del objetivo" -#: opts.c:1375 +#: opts.c:1382 msgid "The following options control compiler warning messages" msgstr "Las siguientes opciones controlan los mensajes de aviso del compilador" -#: opts.c:1378 +#: opts.c:1385 msgid "The following options control optimizations" msgstr "Las siguientes opciones controlan las optimizaciones" -#: opts.c:1381 opts.c:1420 +#: opts.c:1388 opts.c:1427 msgid "The following options are language-independent" msgstr "Las siguientes opciones son independientes del lenguaje" -#: opts.c:1384 +#: opts.c:1391 msgid "The --param option recognizes the following as parameters" msgstr "La opción --param reconoce los parámetros a continuación" -#: opts.c:1390 +#: opts.c:1397 msgid "The following options are specific to just the language " msgstr "Las siguientes opciones son específicas sólo para el lenguaje " -#: opts.c:1392 +#: opts.c:1399 msgid "The following options are supported by the language " msgstr "Las siguientes opciones se admiten en el lenguaje " -#: opts.c:1403 +#: opts.c:1410 msgid "The following options are not documented" msgstr "Las siguientes opciones no están documentadas" -#: opts.c:1405 +#: opts.c:1412 msgid "The following options take separate arguments" msgstr "Las siguientes opciones toman argumentos separados" -#: opts.c:1407 +#: opts.c:1414 msgid "The following options take joined arguments" msgstr "Las siguientes opciones toman argumentos conjuntos" -#: opts.c:1418 +#: opts.c:1425 msgid "The following options are language-related" msgstr "Las siguientes opciones son relacionadas al lenguaje" @@ -2833,8 +2833,8 @@ msgid "" msgstr "" -#: config/aarch64/aarch64.c:4927 config/arm/arm.c:21832 config/arm/arm.c:21845 -#: config/arm/arm.c:21870 config/nios2/nios2.c:2653 +#: config/aarch64/aarch64.c:4927 config/arm/arm.c:21821 config/arm/arm.c:21834 +#: config/arm/arm.c:21859 config/nios2/nios2.c:2653 #, c-format msgid "Unsupported operand for code '%c'" msgstr "No se admite el operando para el código '%c'" @@ -2853,7 +2853,7 @@ msgid "incompatible floating point / vector register operand for '%%%c'" msgstr "coma flotante incompatible / operando de registro de vector para '%%%c'" -#: config/aarch64/aarch64.c:5103 config/arm/arm.c:22377 +#: config/aarch64/aarch64.c:5103 config/arm/arm.c:22366 #, c-format msgid "missing operand" msgstr "falta un operando" @@ -2873,8 +2873,8 @@ msgid "invalid operand prefix '%%%c'" msgstr "prefijo de operando no válido '%%%c'" -#: config/alpha/alpha.c:5092 config/i386/i386.c:18279 -#: config/rs6000/rs6000.c:23938 config/sparc/sparc.c:8854 +#: config/alpha/alpha.c:5092 config/i386/i386.c:18285 +#: config/rs6000/rs6000.c:23985 config/sparc/sparc.c:8995 #, c-format msgid "'%%&' used without any local dynamic TLS references" msgstr "se usó '%%&' sin ninguna referencia TLS dinámica local" @@ -2890,18 +2890,18 @@ msgstr "valor %%r no válido" #: config/alpha/alpha.c:5190 config/ia64/ia64.c:5442 -#: config/rs6000/rs6000.c:23618 config/xtensa/xtensa.c:2363 +#: config/rs6000/rs6000.c:23665 config/xtensa/xtensa.c:2364 #, c-format msgid "invalid %%R value" msgstr "valor %%R no válido" -#: config/alpha/alpha.c:5196 config/rs6000/rs6000.c:23538 -#: config/xtensa/xtensa.c:2330 +#: config/alpha/alpha.c:5196 config/rs6000/rs6000.c:23585 +#: config/xtensa/xtensa.c:2331 #, c-format msgid "invalid %%N value" msgstr "valor %%N no válido" -#: config/alpha/alpha.c:5204 config/rs6000/rs6000.c:23566 +#: config/alpha/alpha.c:5204 config/rs6000/rs6000.c:23613 #, c-format msgid "invalid %%P value" msgstr "valor %%P no válido" @@ -2911,7 +2911,7 @@ msgid "invalid %%h value" msgstr "valor %%h no válido" -#: config/alpha/alpha.c:5220 config/xtensa/xtensa.c:2356 +#: config/alpha/alpha.c:5220 config/xtensa/xtensa.c:2357 #, c-format msgid "invalid %%L value" msgstr "valor %%L no válido" @@ -2932,7 +2932,7 @@ msgstr "valor %%U no válido" #: config/alpha/alpha.c:5290 config/alpha/alpha.c:5301 -#: config/rs6000/rs6000.c:23626 +#: config/rs6000/rs6000.c:23673 #, c-format msgid "invalid %%s value" msgstr "valor %%s no válido" @@ -2942,7 +2942,7 @@ msgid "invalid %%C value" msgstr "valor %%C no válido" -#: config/alpha/alpha.c:5349 config/rs6000/rs6000.c:23402 +#: config/alpha/alpha.c:5349 config/rs6000/rs6000.c:23449 #, c-format msgid "invalid %%E value" msgstr "valor %%E no válido" @@ -2953,7 +2953,7 @@ msgstr "reubicación unspec desconocida" #: config/alpha/alpha.c:5383 config/cr16/cr16.c:1534 -#: config/rs6000/rs6000.c:23943 config/spu/spu.c:1447 +#: config/rs6000/rs6000.c:23990 config/spu/spu.c:1447 #, c-format msgid "invalid %%xn code" msgstr "código %%xn no válido" @@ -3016,7 +3016,7 @@ #. Unknown flag. #. Undocumented flag. #: config/arc/arc.c:3467 config/epiphany/epiphany.c:1289 -#: config/m32r/m32r.c:2230 config/nds32/nds32.c:2292 config/sparc/sparc.c:9133 +#: config/m32r/m32r.c:2230 config/nds32/nds32.c:2292 config/sparc/sparc.c:9274 #, c-format msgid "invalid operand output code" msgstr "operando no válido en el código de salida" @@ -3026,29 +3026,29 @@ msgid "invalid UNSPEC as operand: %d" msgstr "UNSPEC no válido como operando: %d" -#: config/arm/arm.c:18841 config/arm/arm.c:18866 config/arm/arm.c:18876 -#: config/arm/arm.c:18885 config/arm/arm.c:18894 +#: config/arm/arm.c:18830 config/arm/arm.c:18855 config/arm/arm.c:18865 +#: config/arm/arm.c:18874 config/arm/arm.c:18883 #, c-format msgid "invalid shift operand" msgstr "operando de desplazamiento no válido" -#: config/arm/arm.c:21708 config/arm/arm.c:21726 +#: config/arm/arm.c:21697 config/arm/arm.c:21715 #, c-format msgid "predicated Thumb instruction" msgstr "instrucción de predicado Thumb" -#: config/arm/arm.c:21714 +#: config/arm/arm.c:21703 #, c-format msgid "predicated instruction in conditional sequence" msgstr "instrucción de predicado en una secuencia condicional" -#: config/arm/arm.c:21947 config/arm/arm.c:21969 config/arm/arm.c:21979 -#: config/arm/arm.c:21989 config/arm/arm.c:21999 config/arm/arm.c:22038 -#: config/arm/arm.c:22056 config/arm/arm.c:22081 config/arm/arm.c:22096 -#: config/arm/arm.c:22123 config/arm/arm.c:22130 config/arm/arm.c:22148 -#: config/arm/arm.c:22155 config/arm/arm.c:22163 config/arm/arm.c:22184 -#: config/arm/arm.c:22191 config/arm/arm.c:22324 config/arm/arm.c:22331 -#: config/arm/arm.c:22358 config/arm/arm.c:22365 config/bfin/bfin.c:1437 +#: config/arm/arm.c:21936 config/arm/arm.c:21958 config/arm/arm.c:21968 +#: config/arm/arm.c:21978 config/arm/arm.c:21988 config/arm/arm.c:22027 +#: config/arm/arm.c:22045 config/arm/arm.c:22070 config/arm/arm.c:22085 +#: config/arm/arm.c:22112 config/arm/arm.c:22119 config/arm/arm.c:22137 +#: config/arm/arm.c:22144 config/arm/arm.c:22152 config/arm/arm.c:22173 +#: config/arm/arm.c:22180 config/arm/arm.c:22313 config/arm/arm.c:22320 +#: config/arm/arm.c:22347 config/arm/arm.c:22354 config/bfin/bfin.c:1437 #: config/bfin/bfin.c:1444 config/bfin/bfin.c:1451 config/bfin/bfin.c:1458 #: config/bfin/bfin.c:1467 config/bfin/bfin.c:1474 config/bfin/bfin.c:1481 #: config/bfin/bfin.c:1488 @@ -3056,101 +3056,101 @@ msgid "invalid operand for code '%c'" msgstr "operando no válido para el código '%c'" -#: config/arm/arm.c:22051 +#: config/arm/arm.c:22040 #, c-format msgid "instruction never executed" msgstr "la instrucción nunca se ejecuta" #. Former Maverick support, removed after GCC-4.7. -#: config/arm/arm.c:22072 +#: config/arm/arm.c:22061 #, c-format msgid "obsolete Maverick format code '%c'" msgstr "código de formato Maverick obsoleto '%c'" -#: config/avr/avr.c:2439 +#: config/avr/avr.c:2455 #, c-format msgid "address operand requires constraint for X, Y, or Z register" msgstr "el operando de dirección requiere una restricción para los registros X, Y, o Z" -#: config/avr/avr.c:2620 +#: config/avr/avr.c:2636 msgid "operands to %T/%t must be reg + const_int:" msgstr "los operandos para %T/%t deben ser reg + const_int:" -#: config/avr/avr.c:2670 config/avr/avr.c:2737 +#: config/avr/avr.c:2686 config/avr/avr.c:2753 msgid "bad address, not an I/O address:" msgstr "dirección errónea, no es una dirección de E/S:" -#: config/avr/avr.c:2679 +#: config/avr/avr.c:2695 msgid "bad address, not a constant:" msgstr "dirección errónea, no es una constante:" -#: config/avr/avr.c:2697 config/avr/avr.c:2704 +#: config/avr/avr.c:2713 config/avr/avr.c:2720 msgid "bad address, not (reg+disp):" msgstr "dirección errónea, no (reg+disp):" -#: config/avr/avr.c:2711 +#: config/avr/avr.c:2727 msgid "bad address, not post_inc or pre_dec:" msgstr "dirección errónea, no hay post_inc o pre_dec:" -#: config/avr/avr.c:2723 +#: config/avr/avr.c:2739 msgid "internal compiler error. Bad address:" msgstr "error interno del compilador. Dirección errónea:" -#: config/avr/avr.c:2756 +#: config/avr/avr.c:2772 #, c-format msgid "Unsupported code '%c' for fixed-point:" msgstr "Código '%c' no admitido para coma fija:" -#: config/avr/avr.c:2764 +#: config/avr/avr.c:2780 msgid "internal compiler error. Unknown mode:" msgstr "error interno del compilador. Modo desconocido:" -#: config/avr/avr.c:3788 config/avr/avr.c:4732 config/avr/avr.c:5179 +#: config/avr/avr.c:3804 config/avr/avr.c:4748 config/avr/avr.c:5195 msgid "invalid insn:" msgstr "insn no válida:" -#: config/avr/avr.c:3842 config/avr/avr.c:3954 config/avr/avr.c:4012 -#: config/avr/avr.c:4064 config/avr/avr.c:4083 config/avr/avr.c:4275 -#: config/avr/avr.c:4583 config/avr/avr.c:4868 config/avr/avr.c:5072 -#: config/avr/avr.c:5236 config/avr/avr.c:5330 config/avr/avr.c:5529 +#: config/avr/avr.c:3858 config/avr/avr.c:3970 config/avr/avr.c:4028 +#: config/avr/avr.c:4080 config/avr/avr.c:4099 config/avr/avr.c:4291 +#: config/avr/avr.c:4599 config/avr/avr.c:4884 config/avr/avr.c:5088 +#: config/avr/avr.c:5252 config/avr/avr.c:5345 config/avr/avr.c:5544 msgid "incorrect insn:" msgstr "insn incorrecta:" -#: config/avr/avr.c:4099 config/avr/avr.c:4374 config/avr/avr.c:4654 -#: config/avr/avr.c:4940 config/avr/avr.c:5118 config/avr/avr.c:5386 -#: config/avr/avr.c:5587 +#: config/avr/avr.c:4115 config/avr/avr.c:4390 config/avr/avr.c:4670 +#: config/avr/avr.c:4956 config/avr/avr.c:5134 config/avr/avr.c:5401 +#: config/avr/avr.c:5602 msgid "unknown move insn:" msgstr "insn move desconocida:" -#: config/avr/avr.c:6046 +#: config/avr/avr.c:6061 msgid "bad shift insn:" msgstr "insn shift errónea:" -#: config/avr/avr.c:6154 config/avr/avr.c:6635 config/avr/avr.c:7050 +#: config/avr/avr.c:6169 config/avr/avr.c:6650 config/avr/avr.c:7065 msgid "internal compiler error. Incorrect shift:" msgstr "error interno del compilador. Desplazamiento incorrecto:" -#: config/avr/avr.c:8456 +#: config/avr/avr.c:8471 msgid "unsupported fixed-point conversion" msgstr "conversión de coma fija no admitida" -#: config/avr/avr.c:9803 +#: config/avr/avr.c:9818 msgid "variable" msgstr "variable" -#: config/avr/avr.c:9808 +#: config/avr/avr.c:9823 msgid "function parameter" msgstr "parámetro de función" -#: config/avr/avr.c:9813 +#: config/avr/avr.c:9828 msgid "structure field" msgstr "campo de estructura" -#: config/avr/avr.c:9819 +#: config/avr/avr.c:9834 msgid "return type of function" msgstr "tipo de retorno de función" -#: config/avr/avr.c:9824 +#: config/avr/avr.c:9839 msgid "pointer" msgstr "puntero" @@ -3174,7 +3174,7 @@ msgstr "operando const_double no válido" #: config/cris/cris.c:604 config/ft32/ft32.c:106 config/moxie/moxie.c:104 -#: final.c:3455 final.c:3457 fold-const.c:268 gcc.c:5268 gcc.c:5282 +#: final.c:3455 final.c:3457 fold-const.c:268 gcc.c:5271 gcc.c:5285 #: rtl-error.c:101 toplev.c:337 tree-vrp.c:7849 cp/typeck.c:6167 #: lto/lto-object.c:184 lto/lto-object.c:281 lto/lto-object.c:338 #: lto/lto-object.c:362 @@ -3396,87 +3396,87 @@ msgid "bad output_condmove_single operand" msgstr "operando output_condmove_single erróneo" -#: config/i386/i386.c:17149 +#: config/i386/i386.c:17155 #, c-format msgid "invalid UNSPEC as operand" msgstr "UNSPEC no válido como operando" -#: config/i386/i386.c:17660 +#: config/i386/i386.c:17666 #, c-format msgid "invalid use of asm flag output" msgstr "tipo no válido de la salida del indicador asm" -#: config/i386/i386.c:17882 +#: config/i386/i386.c:17888 #, c-format msgid "invalid operand size for operand code 'O'" msgstr "tamaño de operando no válido para el código de operando 'O'" -#: config/i386/i386.c:17917 +#: config/i386/i386.c:17923 #, c-format msgid "invalid operand size for operand code 'z'" msgstr "tamaño de operando no válido para el código de operando 'z'" -#: config/i386/i386.c:17986 +#: config/i386/i386.c:17992 #, c-format msgid "invalid operand type used with operand code 'Z'" msgstr "se usó un tipo de operando no válido con el código de operando 'Z'" -#: config/i386/i386.c:17991 +#: config/i386/i386.c:17997 #, c-format msgid "invalid operand size for operand code 'Z'" msgstr "tamaño de operando no válido para el código de operando 'Z'" -#: config/i386/i386.c:18067 +#: config/i386/i386.c:18073 #, c-format msgid "operand is not a condition code, invalid operand code 'Y'" msgstr "el operando no es un código de condición, código de operando 'Y' no válido" -#: config/i386/i386.c:18146 +#: config/i386/i386.c:18152 #, c-format msgid "operand is not a condition code, invalid operand code 'D'" msgstr "el operando no es un código de condición, código de operando 'D' no válido" -#: config/i386/i386.c:18164 +#: config/i386/i386.c:18170 #, c-format msgid "operand is not a condition code, invalid operand code '%c'" msgstr "el operando no es un código de condición, código de operando '%c' no válido" -#: config/i386/i386.c:18177 +#: config/i386/i386.c:18183 #, c-format msgid "operand is not an offsettable memory reference, invalid operand code 'H'" msgstr "el operando no es una referencia de memoria desplazable, código de operando 'H' no válido" -#: config/i386/i386.c:18192 +#: config/i386/i386.c:18198 #, c-format msgid "operand is not an integer, invalid operand code 'K'" msgstr "el operando no es un entero, código de operando 'K' no válido" -#: config/i386/i386.c:18220 +#: config/i386/i386.c:18226 #, c-format msgid "operand is not a specific integer, invalid operand code 'r'" msgstr "el operando no es un entero concreto, código de operando 'r' no válido" -#: config/i386/i386.c:18238 +#: config/i386/i386.c:18244 #, c-format msgid "operand is not an integer, invalid operand code 'R'" msgstr "el operando no es un entero, código de operando 'R' no válido" -#: config/i386/i386.c:18261 +#: config/i386/i386.c:18267 #, c-format msgid "operand is not a specific integer, invalid operand code 'R'" msgstr "el operando no es un entero concreto, código de operando 'R' no válido" -#: config/i386/i386.c:18357 +#: config/i386/i386.c:18363 #, c-format msgid "invalid operand code '%c'" msgstr "código de operando '%c' no válido" -#: config/i386/i386.c:18419 +#: config/i386/i386.c:18425 #, c-format msgid "invalid constraints for operand" msgstr "restricciones no válidas para el operando" -#: config/i386/i386.c:28920 +#: config/i386/i386.c:28926 msgid "unknown insn mode" msgstr "modo insn desconocido" @@ -3513,7 +3513,7 @@ msgid "invalid %%P operand" msgstr "operando %%P no válido" -#: config/iq2000/iq2000.c:3153 config/rs6000/rs6000.c:23556 +#: config/iq2000/iq2000.c:3153 config/rs6000/rs6000.c:23603 #, c-format msgid "invalid %%p value" msgstr "valor %%p no válido" @@ -3567,7 +3567,7 @@ msgstr "la dirección de post-incremento no es un registro" #: config/m32r/m32r.c:2333 config/m32r/m32r.c:2348 -#: config/rs6000/rs6000.c:35600 +#: config/rs6000/rs6000.c:35649 msgid "bad address" msgstr "dirección errónea" @@ -3600,7 +3600,7 @@ msgstr "¡ La insn contiene una dirección no válida !" #: config/microblaze/microblaze.c:2309 config/microblaze/microblaze.c:2528 -#: config/xtensa/xtensa.c:2460 +#: config/xtensa/xtensa.c:2461 msgid "invalid address" msgstr "dirección no válida" @@ -3691,277 +3691,277 @@ msgid "Try running '%s' in the shell to raise its limit.\n" msgstr "Pruebe ejecutar '%s' en el intérprete de órdenes para elevar su límite.\n" -#: config/rs6000/rs6000.c:4223 +#: config/rs6000/rs6000.c:4225 msgid "-maltivec=le not allowed for big-endian targets" msgstr "-maltivec=le no permitida para destinos big-endian" -#: config/rs6000/rs6000.c:4235 +#: config/rs6000/rs6000.c:4237 msgid "-mvsx requires hardware floating point" msgstr "-mvsx requiere coma flotante de hardware" -#: config/rs6000/rs6000.c:4243 +#: config/rs6000/rs6000.c:4245 msgid "-mvsx and -mpaired are incompatible" msgstr "-mvsx y -mpaired son incompatibles" -#: config/rs6000/rs6000.c:4245 +#: config/rs6000/rs6000.c:4247 msgid "-mvsx needs indexed addressing" msgstr "-mvsx necesita direccionamiento indizado" -#: config/rs6000/rs6000.c:4250 +#: config/rs6000/rs6000.c:4252 msgid "-mvsx and -mno-altivec are incompatible" msgstr "-mvsx y -mno-altivec son incompatibles" -#: config/rs6000/rs6000.c:4252 +#: config/rs6000/rs6000.c:4254 msgid "-mno-altivec disables vsx" msgstr "-mno-altivec desactiva vsx" -#: config/rs6000/rs6000.c:4460 +#: config/rs6000/rs6000.c:4462 msgid "-mquad-memory requires 64-bit mode" msgstr "-mquad-memory requiere modo de 64 bits" -#: config/rs6000/rs6000.c:4463 +#: config/rs6000/rs6000.c:4465 msgid "-mquad-memory-atomic requires 64-bit mode" msgstr "-mquad-memory-atomic requiere modo de 64 bits" -#: config/rs6000/rs6000.c:4475 +#: config/rs6000/rs6000.c:4477 msgid "-mquad-memory is not available in little endian mode" msgstr "-mquad-memory no está disponible en modo little endian" -#: config/rs6000/rs6000.c:4547 +#: config/rs6000/rs6000.c:4549 msgid "-mtoc-fusion requires 64-bit" msgstr "-mtoc-fusion requiere 64 bits" -#: config/rs6000/rs6000.c:4554 +#: config/rs6000/rs6000.c:4556 msgid "-mtoc-fusion requires medium/large code model" msgstr "-mtoc-fusion requiere modelo de código medio/grande" -#: config/rs6000/rs6000.c:11245 +#: config/rs6000/rs6000.c:11276 msgid "bad move" msgstr "move erróneo" -#: config/rs6000/rs6000.c:23199 +#: config/rs6000/rs6000.c:23246 msgid "Bad 128-bit move" msgstr "Movimiento de 128 bits erróneo" -#: config/rs6000/rs6000.c:23390 +#: config/rs6000/rs6000.c:23437 #, c-format msgid "invalid %%e value" msgstr "valor %%e no válido" -#: config/rs6000/rs6000.c:23411 +#: config/rs6000/rs6000.c:23458 #, c-format msgid "invalid %%f value" msgstr "valor %%f no válido" -#: config/rs6000/rs6000.c:23420 +#: config/rs6000/rs6000.c:23467 #, c-format msgid "invalid %%F value" msgstr "valor %%F no válido" -#: config/rs6000/rs6000.c:23429 +#: config/rs6000/rs6000.c:23476 #, c-format msgid "invalid %%G value" msgstr "valor %%G no válido" -#: config/rs6000/rs6000.c:23464 +#: config/rs6000/rs6000.c:23511 #, c-format msgid "invalid %%j code" msgstr "código %%j no válido" -#: config/rs6000/rs6000.c:23474 +#: config/rs6000/rs6000.c:23521 #, c-format msgid "invalid %%J code" msgstr "código %%J no válido" -#: config/rs6000/rs6000.c:23484 +#: config/rs6000/rs6000.c:23531 #, c-format msgid "invalid %%k value" msgstr "valor %%k no válido" -#: config/rs6000/rs6000.c:23499 config/xtensa/xtensa.c:2349 +#: config/rs6000/rs6000.c:23546 config/xtensa/xtensa.c:2350 #, c-format msgid "invalid %%K value" msgstr "valor %%K no válido" -#: config/rs6000/rs6000.c:23546 +#: config/rs6000/rs6000.c:23593 #, c-format msgid "invalid %%O value" msgstr "valor %%O no válido" -#: config/rs6000/rs6000.c:23593 +#: config/rs6000/rs6000.c:23640 #, c-format msgid "invalid %%q value" msgstr "valor %%q no válido" -#: config/rs6000/rs6000.c:23646 +#: config/rs6000/rs6000.c:23693 #, c-format msgid "invalid %%T value" msgstr "valor %%T no válido" -#: config/rs6000/rs6000.c:23658 +#: config/rs6000/rs6000.c:23705 #, c-format msgid "invalid %%u value" msgstr "valor %%u no válido" -#: config/rs6000/rs6000.c:23672 config/xtensa/xtensa.c:2319 +#: config/rs6000/rs6000.c:23719 config/xtensa/xtensa.c:2320 #, c-format msgid "invalid %%v value" msgstr "valor %%v no válido" -#: config/rs6000/rs6000.c:23739 config/xtensa/xtensa.c:2370 +#: config/rs6000/rs6000.c:23786 config/xtensa/xtensa.c:2371 #, c-format msgid "invalid %%x value" msgstr "valor %%x no válido" -#: config/rs6000/rs6000.c:23887 +#: config/rs6000/rs6000.c:23934 #, c-format msgid "invalid %%y value, try using the 'Z' constraint" msgstr "valor %%y no válido, pruebe usando la restricción 'Z'" -#: config/rs6000/rs6000.c:24603 +#: config/rs6000/rs6000.c:24650 msgid "__float128 and __ibm128 cannot be used in the same expression" msgstr "__float128 y __ibm128 no pueden utilizarse en la misma expresión" -#: config/rs6000/rs6000.c:24609 +#: config/rs6000/rs6000.c:24656 msgid "__ibm128 and long double cannot be used in the same expression" msgstr "__ibm128 y long double no pueden utilizarse en la misma expresión" -#: config/rs6000/rs6000.c:24615 +#: config/rs6000/rs6000.c:24662 msgid "__float128 and long double cannot be used in the same expression" msgstr "__float128 y long double no pueden utilizarse en la misma expresión" -#: config/rs6000/rs6000.c:38903 +#: config/rs6000/rs6000.c:38952 msgid "AltiVec argument passed to unprototyped function" msgstr "Se pasó un argumento Altivec a una función sin prototipo" -#: config/rs6000/rs6000.c:40709 +#: config/rs6000/rs6000.c:40758 msgid "Could not generate addis value for fusion" msgstr "No se ha podido generar valor addis para fusión" -#: config/rs6000/rs6000.c:40781 +#: config/rs6000/rs6000.c:40830 msgid "Unable to generate load/store offset for fusion" msgstr "No se puede generar desplazamiento de carga/almacenamiento para fusión" -#: config/rs6000/rs6000.c:40885 +#: config/rs6000/rs6000.c:40934 msgid "Bad GPR fusion" msgstr "Fusión GPR errónea" -#: config/rs6000/rs6000.c:41103 +#: config/rs6000/rs6000.c:41152 msgid "emit_fusion_p9_load, bad reg #1" msgstr "emit_fusion_p9_load, reg #1 erróneo" -#: config/rs6000/rs6000.c:41149 +#: config/rs6000/rs6000.c:41198 msgid "emit_fusion_p9_load, bad reg #2" msgstr "emit_fusion_p9_load, reg #2 erróneo" -#: config/rs6000/rs6000.c:41152 +#: config/rs6000/rs6000.c:41201 msgid "emit_fusion_p9_load not MEM" msgstr "emit_fusion_p9_load no MEM" -#: config/rs6000/rs6000.c:41190 +#: config/rs6000/rs6000.c:41239 msgid "emit_fusion_p9_store, bad reg #1" msgstr "emit_fusion_p9_store, reg #1 erróneo" -#: config/rs6000/rs6000.c:41236 +#: config/rs6000/rs6000.c:41285 msgid "emit_fusion_p9_store, bad reg #2" msgstr "emit_fusion_p9_store, reg #2 erróneo" -#: config/rs6000/rs6000.c:41239 +#: config/rs6000/rs6000.c:41288 msgid "emit_fusion_p9_store not MEM" msgstr "emit_fusion_p9_store no MEM" -#: config/s390/s390.c:7482 +#: config/s390/s390.c:7489 #, c-format msgid "symbolic memory references are only supported on z10 or later" msgstr "las referencias a memoria simbólica sólo se admiten en z10 o posterior" -#: config/s390/s390.c:7493 +#: config/s390/s390.c:7500 #, c-format msgid "cannot decompose address" msgstr "no se puede descomponer la dirección" -#: config/s390/s390.c:7562 +#: config/s390/s390.c:7569 #, c-format msgid "invalid comparison operator for 'E' output modifier" msgstr "operador de comparación no válido para el modificador de salida 'E'" -#: config/s390/s390.c:7585 +#: config/s390/s390.c:7592 #, c-format msgid "invalid reference for 'J' output modifier" msgstr "referencia no válida para el modificador de salida 'J'" -#: config/s390/s390.c:7603 +#: config/s390/s390.c:7610 #, c-format msgid "invalid address for 'O' output modifier" msgstr "dirección no válida para el modificador de salida 'O'" -#: config/s390/s390.c:7625 +#: config/s390/s390.c:7632 #, c-format msgid "invalid address for 'R' output modifier" msgstr "dirección no válida para el modificador de salida 'R'" -#: config/s390/s390.c:7643 +#: config/s390/s390.c:7650 #, c-format msgid "memory reference expected for 'S' output modifier" msgstr "se esperaba una referencia de memoria para el modificador de salida 'S'" -#: config/s390/s390.c:7653 +#: config/s390/s390.c:7660 #, c-format msgid "invalid address for 'S' output modifier" msgstr "dirección no válida para el modificador de saida 'S'" -#: config/s390/s390.c:7674 +#: config/s390/s390.c:7681 #, c-format msgid "register or memory expression expected for 'N' output modifier" msgstr "se esperaba un registro o expresión de memoria para el modificador de salida 'N'" -#: config/s390/s390.c:7685 +#: config/s390/s390.c:7692 #, c-format msgid "register or memory expression expected for 'M' output modifier" msgstr "se esperaba un registro o expresión de memoria para el modificador de salida 'M'" -#: config/s390/s390.c:7771 config/s390/s390.c:7792 +#: config/s390/s390.c:7778 config/s390/s390.c:7799 #, c-format msgid "invalid constant for output modifier '%c'" msgstr "constante no válida para el modificador de salida '%c'" -#: config/s390/s390.c:7789 +#: config/s390/s390.c:7796 #, c-format msgid "invalid constant - try using an output modifier" msgstr "constante no válida - pruebe usar un modificador de salida" -#: config/s390/s390.c:7826 +#: config/s390/s390.c:7833 #, c-format msgid "invalid constant vector for output modifier '%c'" msgstr "vector constante no válido para el modificador de salida '%c'" -#: config/s390/s390.c:7833 +#: config/s390/s390.c:7840 #, c-format msgid "invalid expression - try using an output modifier" msgstr "expresión no válida - pruebe usar un modificador de salida" -#: config/s390/s390.c:7836 +#: config/s390/s390.c:7843 #, c-format msgid "invalid expression for output modifier '%c'" msgstr "expresión no válida para el modificador de salida '%c'" -#: config/s390/s390.c:11703 +#: config/s390/s390.c:11710 msgid "vector argument passed to unprototyped function" msgstr "se pasó un argumento vector a una función sin prototipo" -#: config/s390/s390.c:15522 +#: config/s390/s390.c:15529 msgid "types differ in signedness" msgstr "los tipos difieren en el signo" -#: config/s390/s390.c:15532 +#: config/s390/s390.c:15539 msgid "binary operator does not support two vector bool operands" msgstr "el operador binario no admite dos operadores bool vector" -#: config/s390/s390.c:15535 +#: config/s390/s390.c:15542 msgid "binary operator does not support vector bool operand" msgstr "el operador binario no admite operador bool vector" -#: config/s390/s390.c:15543 +#: config/s390/s390.c:15550 msgid "binary operator does not support mixing vector bool with floating point vector operands" msgstr "el operador binario no admite que se mezclen operandos bool vector y vector de coma flotante" @@ -3987,43 +3987,43 @@ msgid "created and used with different endianness" msgstr "creado y usado con diferente orden de bits" -#: config/sparc/sparc.c:8863 config/sparc/sparc.c:8869 +#: config/sparc/sparc.c:9004 config/sparc/sparc.c:9010 #, c-format msgid "invalid %%Y operand" msgstr "operando %%Y no válido" -#: config/sparc/sparc.c:8956 +#: config/sparc/sparc.c:9097 #, c-format msgid "invalid %%A operand" msgstr "operando %%A no válido" -#: config/sparc/sparc.c:8976 +#: config/sparc/sparc.c:9117 #, c-format msgid "invalid %%B operand" msgstr "operando %%B no válido" -#: config/sparc/sparc.c:9056 config/tilegx/tilegx.c:5103 +#: config/sparc/sparc.c:9197 config/tilegx/tilegx.c:5103 #: config/tilepro/tilepro.c:4512 #, c-format msgid "invalid %%C operand" msgstr "operando %%C no válido" -#: config/sparc/sparc.c:9088 config/tilegx/tilegx.c:5136 +#: config/sparc/sparc.c:9229 config/tilegx/tilegx.c:5136 #, c-format msgid "invalid %%D operand" msgstr "operando %%D no válido" -#: config/sparc/sparc.c:9107 +#: config/sparc/sparc.c:9248 #, c-format msgid "invalid %%f operand" msgstr "operando %%f no válido" -#: config/sparc/sparc.c:9119 +#: config/sparc/sparc.c:9260 #, c-format msgid "invalid %%s operand" msgstr "operando %%s no válido" -#: config/sparc/sparc.c:9164 +#: config/sparc/sparc.c:9305 #, c-format msgid "floating-point constant not a valid immediate operand" msgstr "la constante de coma flotante no es un operando inmediato válido" @@ -4185,30 +4185,30 @@ msgid "bad test" msgstr "prueba errónea" -#: config/xtensa/xtensa.c:2307 +#: config/xtensa/xtensa.c:2308 #, c-format msgid "invalid %%D value" msgstr "valor %%D no válido" -#: config/xtensa/xtensa.c:2344 +#: config/xtensa/xtensa.c:2345 msgid "invalid mask" msgstr "máscara no válida" -#: config/xtensa/xtensa.c:2377 +#: config/xtensa/xtensa.c:2378 #, c-format msgid "invalid %%d value" msgstr "valor %%d no válido" -#: config/xtensa/xtensa.c:2396 config/xtensa/xtensa.c:2406 +#: config/xtensa/xtensa.c:2397 config/xtensa/xtensa.c:2407 #, c-format msgid "invalid %%t/%%b value" msgstr "valor %%t%%b no válido" -#: config/xtensa/xtensa.c:2485 +#: config/xtensa/xtensa.c:2486 msgid "no register in address" msgstr "no hay registro en la dirección" -#: config/xtensa/xtensa.c:2493 +#: config/xtensa/xtensa.c:2494 msgid "address offset not a constant" msgstr "el desplazamiento de dirección no es una constante" @@ -4229,8 +4229,8 @@ #: c/gimple-parser.c:189 c/gimple-parser.c:198 c/gimple-parser.c:227 #: c/gimple-parser.c:1320 c/gimple-parser.c:1344 c/gimple-parser.c:1424 #: c/gimple-parser.c:1451 c/c-parser.c:2985 c/c-parser.c:9257 -#: c/gimple-parser.c:1228 c/gimple-parser.c:1267 cp/parser.c:27236 -#: cp/parser.c:27809 +#: c/gimple-parser.c:1228 c/gimple-parser.c:1267 cp/parser.c:27259 +#: cp/parser.c:27832 #, gcc-internal-format msgid "expected %<;%>" msgstr "se esperaba %<;%>" @@ -4252,14 +4252,14 @@ #: c/c-parser.c:17131 c/c-parser.c:17573 c/c-parser.c:17631 c/c-parser.c:18057 #: c/gimple-parser.c:364 c/gimple-parser.c:783 c/gimple-parser.c:835 #: c/gimple-parser.c:861 c/gimple-parser.c:1148 c/gimple-parser.c:1289 -#: c/gimple-parser.c:1378 c/c-parser.c:11143 cp/parser.c:24946 -#: cp/parser.c:27812 +#: c/gimple-parser.c:1378 c/c-parser.c:11143 cp/parser.c:24969 +#: cp/parser.c:27835 #, gcc-internal-format msgid "expected %<(%>" msgstr "se esperaba %<(%>" #: c/c-parser.c:2217 c/c-parser.c:7364 c/c-parser.c:7769 c/c-parser.c:7810 -#: c/c-parser.c:7948 c/c-parser.c:11932 cp/parser.c:27234 cp/parser.c:27827 +#: c/c-parser.c:7948 c/c-parser.c:11932 cp/parser.c:27257 cp/parser.c:27850 #, gcc-internal-format msgid "expected %<,%>" msgstr "se esperaba %<,%>" @@ -4290,7 +4290,7 @@ #: c/gimple-parser.c:793 c/gimple-parser.c:815 c/gimple-parser.c:842 #: c/gimple-parser.c:865 c/gimple-parser.c:988 c/gimple-parser.c:1159 #: c/gimple-parser.c:1170 c/gimple-parser.c:1292 c/gimple-parser.c:1381 -#: cp/parser.c:24979 cp/parser.c:27857 +#: cp/parser.c:25002 cp/parser.c:27880 #, gcc-internal-format msgid "expected %<)%>" msgstr "se esperaba %<)%>" @@ -4298,7 +4298,7 @@ #: c/c-parser.c:3619 c/c-parser.c:4573 c/c-parser.c:4609 c/c-parser.c:6267 #: c/c-parser.c:7879 c/c-parser.c:8237 c/c-parser.c:8390 c/c-parser.c:10829 #: c/c-parser.c:17969 c/c-parser.c:17971 c/c-parser.c:18310 -#: c/gimple-parser.c:965 cp/parser.c:7115 cp/parser.c:27821 +#: c/gimple-parser.c:965 cp/parser.c:7120 cp/parser.c:27844 #, gcc-internal-format msgid "expected %<]%>" msgstr "se esperaba %<]%>" @@ -4308,7 +4308,7 @@ msgstr "se esperaba %<;%>, %<,%> o %<)%>" #: c/c-parser.c:4429 c/c-parser.c:14776 c/gimple-parser.c:1493 -#: cp/parser.c:27815 cp/parser.c:29742 +#: cp/parser.c:27838 cp/parser.c:29765 #, gcc-internal-format msgid "expected %<}%>" msgstr "se esperaba %<}%>" @@ -4315,7 +4315,7 @@ #: c/c-parser.c:4743 c/c-parser.c:9598 c/c-parser.c:15502 c/c-parser.c:18336 #: c/gimple-parser.c:142 c/gimple-parser.c:1384 c/c-parser.c:2803 -#: c/c-parser.c:3006 c/c-parser.c:9152 cp/parser.c:17788 cp/parser.c:27818 +#: c/c-parser.c:3006 c/c-parser.c:9152 cp/parser.c:17811 cp/parser.c:27841 #, gcc-internal-format msgid "expected %<{%>" msgstr "se esperaba %<{%>" @@ -4325,7 +4325,7 @@ #: c/c-parser.c:11621 c/c-parser.c:11756 c/c-parser.c:12125 c/c-parser.c:12217 #: c/c-parser.c:12870 c/c-parser.c:16975 c/c-parser.c:17034 #: c/gimple-parser.c:1432 c/gimple-parser.c:1459 c/c-parser.c:6174 -#: c/c-parser.c:11237 cp/parser.c:27851 cp/parser.c:28953 cp/parser.c:31615 +#: c/c-parser.c:11237 cp/parser.c:27874 cp/parser.c:28976 cp/parser.c:31638 #, gcc-internal-format msgid "expected %<:%>" msgstr "se esperaba %<:%>" @@ -4338,24 +4338,24 @@ msgid "Cilk array notation cannot be used for a throw expression" msgstr "La notaicón de array de Cilk no puede utilizarse para expresiones throw" -#: c/c-parser.c:5715 cp/semantics.c:1144 +#: c/c-parser.c:5715 cp/semantics.c:1147 msgid "Cilk array notation cannot be used as a condition for switch statement" msgstr "La notación de array de Cilk no puede utilizarse para sentencias switch" -#: c/c-parser.c:5766 cp/semantics.c:799 +#: c/c-parser.c:5766 cp/semantics.c:802 msgid "Cilk array notation cannot be used as a condition for while statement" msgstr "La notaicón de array de Cilk no puede utilizarse para sentencias while" -#: c/c-parser.c:5818 cp/parser.c:27745 +#: c/c-parser.c:5818 cp/parser.c:27768 #, gcc-internal-format msgid "expected %" msgstr "se esperaba %" -#: c/c-parser.c:5825 cp/semantics.c:858 +#: c/c-parser.c:5825 cp/semantics.c:861 msgid "Cilk array notation cannot be used as a condition for a do-while statement" msgstr "La notaicón de array de Cilk no puede utilizarse para sentencias do-while" -#: c/c-parser.c:6028 cp/semantics.c:977 +#: c/c-parser.c:6028 cp/semantics.c:980 msgid "Cilk array notation cannot be used in a condition for a for-loop" msgstr "La notaicón de array de Cilk no puede utilizarse para sentencias do-while" @@ -4363,18 +4363,18 @@ msgid "expected %<.%>" msgstr "se esperaba %<.%>" -#: c/c-parser.c:8823 c/c-parser.c:8855 c/c-parser.c:9095 cp/parser.c:29527 -#: cp/parser.c:29601 +#: c/c-parser.c:8823 c/c-parser.c:8855 c/c-parser.c:9095 cp/parser.c:29550 +#: cp/parser.c:29624 #, gcc-internal-format msgid "expected %<@end%>" msgstr "se esperaba %<@end%>" -#: c/c-parser.c:9512 c/gimple-parser.c:778 cp/parser.c:27836 +#: c/c-parser.c:9512 c/gimple-parser.c:778 cp/parser.c:27859 #, gcc-internal-format msgid "expected %<>%>" msgstr "se esperaba %<>%>" -#: c/c-parser.c:12309 c/c-parser.c:13088 cp/parser.c:27860 +#: c/c-parser.c:12309 c/c-parser.c:13088 cp/parser.c:27883 #, gcc-internal-format msgid "expected %<,%> or %<)%>" msgstr "se esperaba %<,%> o %<)%>" @@ -4382,17 +4382,17 @@ #. All following cases are statements with LHS. #: c/c-parser.c:14488 c/c-parser.c:14532 c/c-parser.c:14760 c/c-parser.c:15001 #: c/c-parser.c:17172 c/c-parser.c:17795 c/gimple-parser.c:287 -#: c/c-parser.c:4632 cp/parser.c:27839 +#: c/c-parser.c:4632 cp/parser.c:27862 #, gcc-internal-format msgid "expected %<=%>" msgstr "se esperaba %<=%>" -#: c/c-parser.c:15545 c/c-parser.c:15535 cp/parser.c:35022 +#: c/c-parser.c:15545 c/c-parser.c:15535 cp/parser.c:35045 #, gcc-internal-format msgid "expected %<#pragma omp section%> or %<}%>" msgstr "se esperaba %<#pragma omp section%> o %<}%>" -#: c/c-parser.c:17957 c/c-parser.c:10764 cp/parser.c:27824 cp/parser.c:30884 +#: c/c-parser.c:17957 c/c-parser.c:10764 cp/parser.c:27847 cp/parser.c:30907 #, gcc-internal-format msgid "expected %<[%>" msgstr "se esperaba %<[%>" @@ -4401,7 +4401,7 @@ msgid "(anonymous)" msgstr "(anónimo)" -#: c/gimple-parser.c:767 cp/parser.c:15443 cp/parser.c:27833 +#: c/gimple-parser.c:767 cp/parser.c:15462 cp/parser.c:27856 #, gcc-internal-format msgid "expected %<<%>" msgstr "se esperaba %<<%>" @@ -4410,11 +4410,11 @@ msgid "expected label" msgstr "se esperaba etiqueta" -#: cp/call.c:9927 +#: cp/call.c:9932 msgid "candidate 1:" msgstr "candidato 1:" -#: cp/call.c:9928 +#: cp/call.c:9933 msgid "candidate 2:" msgstr "candidato 2:" @@ -4633,11 +4633,11 @@ msgid "%r%s:%d:%R in constexpr expansion of %qs" msgstr "%r%s:%d:%R en la expansión de la expresión constante de %qs" -#: cp/pt.c:1950 cp/semantics.c:5250 +#: cp/pt.c:1950 cp/semantics.c:5263 msgid "candidates are:" msgstr "los candidatos son:" -#: cp/pt.c:21895 +#: cp/pt.c:21984 msgid "candidate is:" msgid_plural "candidates are:" msgstr[0] "el candidato es:" @@ -4808,80 +4808,80 @@ msgid "actual argument to INTENT = OUT/INOUT" msgstr "argumento actual de INTENT = OUT/INOUT" -#: fortran/io.c:585 +#: fortran/io.c:595 msgid "Positive width required" msgstr "Se requieren una anchura positiva" -#: fortran/io.c:586 +#: fortran/io.c:596 msgid "Nonnegative width required" msgstr "Se requiere una anchura que no sea negativa" -#: fortran/io.c:587 +#: fortran/io.c:597 msgid "Unexpected element %qc in format string at %L" msgstr "Elemento %qc inesperado en la cadena de formato en %L" -#: fortran/io.c:589 +#: fortran/io.c:599 msgid "Unexpected end of format string" msgstr "Cadena de fin de formato inesperada" -#: fortran/io.c:590 +#: fortran/io.c:600 msgid "Zero width in format descriptor" msgstr "Anchura cero en el descriptor de formato" -#: fortran/io.c:610 +#: fortran/io.c:620 msgid "Missing leading left parenthesis" msgstr "Falta el paréntesis izquierdo inicial" -#: fortran/io.c:639 +#: fortran/io.c:649 msgid "Left parenthesis required after %<*%>" msgstr "Se requiere paréntesis izquierdo después de %<*%>" -#: fortran/io.c:670 +#: fortran/io.c:680 msgid "Expected P edit descriptor" msgstr "Se esperaba un descriptor de edición P" #. P requires a prior number. -#: fortran/io.c:678 +#: fortran/io.c:688 msgid "P descriptor requires leading scale factor" msgstr "El descriptor P requiere un factor de escala inicial" -#: fortran/io.c:726 -#, c-format -msgid "Right parenthesis expected at %C" -msgstr "Se seperaba paréntesis derecho en %C" - -#: fortran/io.c:819 fortran/io.c:833 +#: fortran/io.c:782 fortran/io.c:796 msgid "Comma required after P descriptor" msgstr "Se requiere una coma antes del descriptor P" -#: fortran/io.c:847 +#: fortran/io.c:810 msgid "Positive width required with T descriptor" msgstr "Se requieren una anchura positiva con el descriptor T" -#: fortran/io.c:930 +#: fortran/io.c:893 msgid "E specifier not allowed with g0 descriptor" msgstr "No se permite el especificador E con el descriptor g0" -#: fortran/io.c:1000 +#: fortran/io.c:963 msgid "Positive exponent width required" msgstr "Se requiere anchura del exponente positiva" -#: fortran/io.c:1030 +#: fortran/io.c:1006 +#, c-format +msgid "Right parenthesis expected at %C" +msgstr "Se seperaba paréntesis derecho en %C" + +#: fortran/io.c:1040 msgid "Period required in format specifier" msgstr "Se requiere un punto en el especificador de formato" -#: fortran/io.c:1748 +#: fortran/io.c:1758 #, c-format msgid "%s tag" msgstr "etiqueta %s" -#: fortran/io.c:3217 +#: fortran/io.c:3251 msgid "internal unit in WRITE" msgstr "unidad interna en WRITE" #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition #. contexts. Thus, use an extended RESOLVE_TAG macro for that. -#: fortran/io.c:4484 +#: fortran/io.c:4551 #, c-format msgid "%s tag with INQUIRE" msgstr "etiqueta %s con INQUIRE" @@ -4891,75 +4891,75 @@ msgid "Syntax error in expression at %C" msgstr "Error sintáctico en la expresión en %C" -#: fortran/module.c:1211 +#: fortran/module.c:1212 msgid "Unexpected EOF" msgstr "Fin de fichero inesperado" -#: fortran/module.c:1295 +#: fortran/module.c:1296 msgid "Integer overflow" msgstr "Desbordamiento entero" -#: fortran/module.c:1325 +#: fortran/module.c:1326 msgid "Name too long" msgstr "Nombre demasiado largo" -#: fortran/module.c:1427 fortran/module.c:1530 +#: fortran/module.c:1428 fortran/module.c:1531 msgid "Bad name" msgstr "Nombre erróneo" -#: fortran/module.c:1554 +#: fortran/module.c:1555 msgid "Expected name" msgstr "Se esperaba un nombre" -#: fortran/module.c:1557 +#: fortran/module.c:1558 msgid "Expected left parenthesis" msgstr "Se esperaba un paréntesis izquierdo" -#: fortran/module.c:1560 +#: fortran/module.c:1561 msgid "Expected right parenthesis" msgstr "Se esperaba un paréntesis derecho" -#: fortran/module.c:1563 +#: fortran/module.c:1564 msgid "Expected integer" msgstr "Se esperaba un entero" -#: fortran/module.c:1566 fortran/module.c:2559 +#: fortran/module.c:1567 fortran/module.c:2560 msgid "Expected string" msgstr "Se esperaba una cadena" -#: fortran/module.c:1591 +#: fortran/module.c:1592 msgid "find_enum(): Enum not found" msgstr "find_enum(): No se encontró el enumerador" -#: fortran/module.c:2274 +#: fortran/module.c:2275 msgid "Expected attribute bit name" msgstr "Se esperaba un nombre de atributo de bit" -#: fortran/module.c:3163 +#: fortran/module.c:3164 msgid "Expected integer string" msgstr "Se esperaba una cadena entera" -#: fortran/module.c:3167 +#: fortran/module.c:3168 msgid "Error converting integer" msgstr "Error al convertir el entero" -#: fortran/module.c:3189 +#: fortran/module.c:3190 msgid "Expected real string" msgstr "Se esperaba una cadena real" -#: fortran/module.c:3413 +#: fortran/module.c:3414 msgid "Expected expression type" msgstr "Se esperaba un tipo de expresión" -#: fortran/module.c:3493 +#: fortran/module.c:3494 msgid "Bad operator" msgstr "Operador erróneo" -#: fortran/module.c:3608 +#: fortran/module.c:3609 msgid "Bad type in constant expression" msgstr "Tipo erróneo en la expresión constante" -#: fortran/module.c:6950 +#: fortran/module.c:6951 msgid "Unexpected end of module" msgstr "Fin de módulo inesperado" @@ -5204,12 +5204,12 @@ msgid "Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)" msgstr "La longitud de la cadena actual es más corta que la declarada para el argumento dummy '%s' (%ld/%ld)" -#: fortran/trans-expr.c:8617 +#: fortran/trans-expr.c:8627 #, c-format msgid "Target of rank remapping is too small (%ld < %ld)" msgstr "El objetivo del remapeo de rango es demasiado pequeño (%ld < %ld)" -#: fortran/trans-expr.c:9983 +#: fortran/trans-expr.c:9993 msgid "Assignment of scalar to unallocated array" msgstr "Asignación de escalar a un array sin espacio asignado" @@ -5554,7 +5554,7 @@ #: config/sparc/linux64.h:149 config/sparc/linux64.h:156 #: config/sparc/netbsd-elf.h:108 config/sparc/netbsd-elf.h:117 -#: config/sparc/sol2.h:228 config/sparc/sol2.h:234 +#: config/sparc/sol2.h:237 config/sparc/sol2.h:243 msgid "may not use both -m32 and -m64" msgstr "no se pueden usar -m32 y -m64 al mismo tiempo" @@ -8437,7 +8437,7 @@ msgstr "Especifica el tamaño de bit para los desplazamientos TLS inmediatos." #: config/ia64/ia64.opt:122 config/spu/spu.opt:84 config/i386/i386.opt:510 -#: config/s390/s390.opt:197 config/sparc/sparc.opt:138 +#: config/s390/s390.opt:200 config/sparc/sparc.opt:146 #: config/visium/visium.opt:49 msgid "Schedule code for given CPU." msgstr "Código de planificador para el CPU dado." @@ -8658,7 +8658,7 @@ msgid "target the software simulator." msgstr "destina al simulador software." -#: config/ft32/ft32.opt:27 config/s390/s390.opt:228 config/mips/mips.opt:389 +#: config/ft32/ft32.opt:27 config/s390/s390.opt:231 config/mips/mips.opt:389 msgid "Use LRA instead of reload." msgstr "Usa la LRA en lugar de recarga." @@ -8875,12 +8875,12 @@ msgid "Use 80-bit long double." msgstr "Usa long doubles de 80 bits." -#: config/i386/i386.opt:204 config/s390/s390.opt:157 +#: config/i386/i386.opt:204 config/s390/s390.opt:160 #: config/sparc/long-double-switch.opt:27 config/alpha/alpha.opt:102 msgid "Use 64-bit long double." msgstr "Usa long doubles de 64 bits." -#: config/i386/i386.opt:208 config/s390/s390.opt:153 +#: config/i386/i386.opt:208 config/s390/s390.opt:156 #: config/sparc/long-double-switch.opt:23 config/alpha/alpha.opt:98 msgid "Use 128-bit long double." msgstr "Usa long doubles de 128 bits." @@ -9895,87 +9895,87 @@ msgid "64 bit ABI." msgstr "ABI de 64 bit." -#: config/s390/s390.opt:123 +#: config/s390/s390.opt:126 msgid "Maintain backchain pointer." msgstr "Mantiene el puntero a la cadena hacia atrás." -#: config/s390/s390.opt:127 +#: config/s390/s390.opt:130 msgid "Additional debug prints." msgstr "Impresiones adicionales de depuración." -#: config/s390/s390.opt:131 +#: config/s390/s390.opt:134 msgid "ESA/390 architecture." msgstr "Arquitectura ESA/390." -#: config/s390/s390.opt:135 +#: config/s390/s390.opt:138 msgid "Enable decimal floating point hardware support." msgstr "Admite la coma flotante decimal de hardware." -#: config/s390/s390.opt:139 +#: config/s390/s390.opt:142 msgid "Enable hardware floating point." msgstr "Activa coma flotante de hardware." -#: config/s390/s390.opt:143 +#: config/s390/s390.opt:146 msgid "Takes two non-negative integer numbers separated by a comma. Prepend the function label with the number of two-byte Nop instructions indicated by the first. Append Nop instructions covering the number of halfwords indicated by the second after the label. Nop instructions of the largest possible size are used (six, four or two bytes), beginning with the largest possible size. Using 0 for both values disables hotpatching." msgstr "" -#: config/s390/s390.opt:161 +#: config/s390/s390.opt:164 msgid "Use hardware transactional execution instructions." msgstr "Usa instrucciones de ejecución transaccional por hardware." -#: config/s390/s390.opt:165 +#: config/s390/s390.opt:168 msgid "Use hardware vector facility instructions and enable the vector ABI." msgstr "Usa las instrucciones de operaciones con vectores por hardware y activa el vector ABI." -#: config/s390/s390.opt:169 +#: config/s390/s390.opt:172 msgid "Use packed stack layout." msgstr "Usa la disposición de pila empacada." -#: config/s390/s390.opt:173 +#: config/s390/s390.opt:176 msgid "Use bras for executable < 64k." msgstr "Usa bras para el ejecutable < 64k." -#: config/s390/s390.opt:177 +#: config/s390/s390.opt:180 msgid "Disable hardware floating point." msgstr "Desactiva la coma flotante de hardware." -#: config/s390/s390.opt:181 +#: config/s390/s390.opt:184 msgid "Set the max. number of bytes which has to be left to stack size before a trap instruction is triggered." msgstr "Establece el número máximo de bytes que se deben dejar en el tamaño de la pila antes de que se active una instrucción trap." -#: config/s390/s390.opt:185 +#: config/s390/s390.opt:188 msgid "Switches off the -mstack-guard= option." msgstr "Desactiva la opción -mstack-guard=." -#: config/s390/s390.opt:189 +#: config/s390/s390.opt:192 msgid "Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit." msgstr "Emite código extra en el prólogo de la función para atrapar en caso de que el tamaño de la pila exceda el límite dado." -#: config/s390/s390.opt:193 +#: config/s390/s390.opt:196 msgid "Switches off the -mstack-size= option." msgstr "Desactiva la opción -mstack-size= ." -#: config/s390/s390.opt:201 +#: config/s390/s390.opt:204 msgid "Use the mvcle instruction for block moves." msgstr "Utiliza la instrucción mvcle para movimiento de bloques." -#: config/s390/s390.opt:205 +#: config/s390/s390.opt:208 msgid "Enable the z vector language extension providing the context-sensitive vector macro and enable the Altivec-style builtins in vecintrin.h." msgstr "Activa la extensión de lenguaje de vector z que ofrece la macro de vector sensible al contexto y activa los internos de estilo Altivec en vecintrin.h." -#: config/s390/s390.opt:210 +#: config/s390/s390.opt:213 msgid "Warn if a function uses alloca or creates an array with dynamic size." msgstr "Avisa si una función usa alloca o crea una matriz de tamaño dinámico." -#: config/s390/s390.opt:214 +#: config/s390/s390.opt:217 msgid "Warn if a single function's framesize exceeds the given framesize." msgstr "Avisa si el tamaño de marco de una sola función excede el tamaño de marco dado." -#: config/s390/s390.opt:218 +#: config/s390/s390.opt:221 msgid "z/Architecture." msgstr "z/Architecture." -#: config/s390/s390.opt:222 +#: config/s390/s390.opt:225 msgid "Set the branch costs for conditional branch instructions. Reasonable values are small, non-negative integers. The default branch cost is 1." msgstr "Establece los costos de ramificación para las instrucciones de ramificación condicional. Los valores razonables son enteros pequeños que no son negativos. El costo de ramificación por defecto es 1." @@ -10027,11 +10027,11 @@ msgid "Known ARM CPUs (for use with the -mcpu= and -mtune= options):" msgstr "CPUs ARM conocidos (para usar con las opciones -mcpu= y -mtune=):" -#: config/arm/arm-tables.opt:359 +#: config/arm/arm-tables.opt:353 msgid "Known ARM architectures (for use with the -march= option):" msgstr "Arquitecturas ARM conocidas (para usar con la opción -march=):" -#: config/arm/arm-tables.opt:471 +#: config/arm/arm-tables.opt:465 msgid "Known ARM FPUs (for use with the -mfpu= option):" msgstr "FPUs ARM conocidos (para usar con la opción -mfpu=):" @@ -10257,78 +10257,102 @@ msgstr "Usa las extensiones del Conjunto de Instrucciones Visuales de UltraSPARC versión 4.0." #: config/sparc/sparc.opt:86 +#, fuzzy +#| msgid "Use vector and scalar instructions added in ISA 2.07." +msgid "Use additional VIS instructions introduced in OSA2017." +msgstr "Usa las instrucciones de vectores y escalares añadidas en ISA 2.07." + +#: config/sparc/sparc.opt:90 msgid "Use UltraSPARC Compare-and-Branch extensions." msgstr "Usa las extensiones Comparación-y-Ramificación de UltraSPARC." -#: config/sparc/sparc.opt:90 +#: config/sparc/sparc.opt:94 msgid "Use UltraSPARC Fused Multiply-Add extensions." msgstr "Usa las extensiones Multiplicación-Adición de Corto Circuito de UltraSPARC." -#: config/sparc/sparc.opt:94 +#: config/sparc/sparc.opt:98 +#, fuzzy +#| msgid "Generate floating-point multiply-add instructions" +msgid "Use Floating-point Multiply Single to Double (FsMULd) instruction." +msgstr "Genera instrucciones multiply-add de coma flotante" + +#: config/sparc/sparc.opt:102 msgid "Use UltraSPARC Population-Count instruction." msgstr "Usa la instrucción Población-Cuenta de UltraSPARC." -#: config/sparc/sparc.opt:98 +#: config/sparc/sparc.opt:106 msgid "Use UltraSPARC Subtract-Extended-with-Carry instruction." msgstr "Usa la instrucción Resta-Extendida-con-Llevada de UltraSPARC." -#: config/sparc/sparc.opt:102 +#: config/sparc/sparc.opt:110 msgid "Pointers are 64-bit." msgstr "Los punteros son de 64-bit." -#: config/sparc/sparc.opt:106 +#: config/sparc/sparc.opt:114 msgid "Pointers are 32-bit." msgstr "Los punteros son de 32-bit." -#: config/sparc/sparc.opt:110 +#: config/sparc/sparc.opt:118 msgid "Use 64-bit ABI." msgstr "Usa la ABI de 64-bit." -#: config/sparc/sparc.opt:114 +#: config/sparc/sparc.opt:122 msgid "Use 32-bit ABI." msgstr "Usa la ABI de 32-bit." -#: config/sparc/sparc.opt:118 +#: config/sparc/sparc.opt:126 msgid "Use stack bias." msgstr "Usa la tendencia de la pila." -#: config/sparc/sparc.opt:122 +#: config/sparc/sparc.opt:130 msgid "Use structs on stronger alignment for double-word copies." msgstr "Usa structs en la alineación más fuerte para copias double-word." -#: config/sparc/sparc.opt:126 +#: config/sparc/sparc.opt:134 msgid "Optimize tail call instructions in assembler and linker." msgstr "Optimiza las instrucciones de la llamada del extremo en el ensamblador y el enlazador." -#: config/sparc/sparc.opt:130 +#: config/sparc/sparc.opt:138 msgid "Do not generate code that can only run in supervisor mode (default)." msgstr "No genera código que solo pueda correr en modo supervisor (predeterminado)." -#: config/sparc/sparc.opt:134 config/visium/visium.opt:45 +#: config/sparc/sparc.opt:142 config/visium/visium.opt:45 msgid "Use features of and schedule code for given CPU." msgstr "Usa las características y el código de planificador para el CPU dado." -#: config/sparc/sparc.opt:214 +#: config/sparc/sparc.opt:225 msgid "Use given SPARC-V9 code model." msgstr "Usa el modelo de código del SPARC-V9 dado." -#: config/sparc/sparc.opt:218 +#: config/sparc/sparc.opt:229 msgid "Enable debug output." msgstr "Activa la salida de depuración." -#: config/sparc/sparc.opt:222 +#: config/sparc/sparc.opt:233 msgid "Enable strict 32-bit psABI struct return checking." msgstr "Permite la revisión de devolución de struct psABI de 32 bits estricta." -#: config/sparc/sparc.opt:226 +#: config/sparc/sparc.opt:237 msgid "Enable workaround for single erratum of AT697F processor (corresponding to erratum #13 of AT697E processor)." msgstr "Activa evitar el error único del procesador AT697F (corresponde al error #13 del procesador AT697E)." -#: config/sparc/sparc.opt:231 +#: config/sparc/sparc.opt:242 msgid "Enable workarounds for the errata of the UT699 processor." msgstr "Activa evitar el error único del procesador UT699." -#: config/sparc/sparc.opt:260 +#: config/sparc/sparc.opt:246 +#, fuzzy +#| msgid "Enable workarounds for the errata of the UT699 processor." +msgid "Enable workarounds for the errata of the UT699E/UT700 processor." +msgstr "Activa evitar el error único del procesador UT699." + +#: config/sparc/sparc.opt:250 +#, fuzzy +#| msgid "Enable workarounds for the errata of the UT699 processor." +msgid "Enable workarounds for the errata of the GR712RC processor." +msgstr "Activa evitar el error único del procesador UT699." + +#: config/sparc/sparc.opt:283 msgid "Specify the memory model in effect for the program." msgstr "Especifica el modelo de memoria en efecto para el programa." @@ -14676,7 +14700,9 @@ msgstr "Detecta rutas que disparan comportamiento erróneo o indefinido debido a desreferencia de puntero nulo. Aisla esas rutas del flujo de control principal y convierte la sentencia con comportamiento erróneo o indefinido en una trampa." #: common.opt:2495 -msgid "Detect paths that trigger erroneous or undefined behavior due a null value being used in a way forbidden by a returns_nonnull or nonnull attribute. Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap." +#, fuzzy +#| msgid "Detect paths that trigger erroneous or undefined behavior due a null value being used in a way forbidden by a returns_nonnull or nonnull attribute. Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap." +msgid "Detect paths that trigger erroneous or undefined behavior due to a null value being used in a way forbidden by a returns_nonnull or nonnull attribute. Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap." msgstr "Detecta rutas que disparan comportamiento erróneo o indefinido debido a un uso indebido de un valor nuloen un atributo returns_nonnull o nonnull. Aisla esas rutas del flujo de control principal y convierte la sentencia con comportamiento erróneo o indefinido en una trampa." #: common.opt:2502 @@ -15079,7 +15105,7 @@ msgstr "se esperaba un tipo booleano" #: go/gofrontend/expressions.cc:4204 c/c-parser.c:12782 c/c-parser.c:12789 -#: cp/parser.c:32592 cp/parser.c:32599 +#: cp/parser.c:32615 cp/parser.c:32622 #, gcc-internal-format msgid "expected integer" msgstr "se esperaba un entero" @@ -15357,125 +15383,125 @@ msgid "range clause must have array, slice, string, map, or channel type" msgstr "la cláusula de rango debe tener tipo matriz, rebanada, cadena, mapa o canal" -#: go/gofrontend/types.cc:513 +#: go/gofrontend/types.cc:525 msgid "invalid comparison of non-ordered type" msgstr "comparación no válida de tipo que no es ordenado" -#: go/gofrontend/types.cc:529 +#: go/gofrontend/types.cc:541 msgid "slice can only be compared to nil" msgstr "la rebanada sólo se puede comparar con nil" -#: go/gofrontend/types.cc:531 +#: go/gofrontend/types.cc:543 msgid "map can only be compared to nil" msgstr "el mapa sólo se puede comparar con nil" -#: go/gofrontend/types.cc:533 +#: go/gofrontend/types.cc:545 msgid "func can only be compared to nil" msgstr "la función sólo se puede comparar con nil" -#: go/gofrontend/types.cc:539 +#: go/gofrontend/types.cc:551 #, c-format msgid "invalid operation (%s)" msgstr "operación no válida (%s)" -#: go/gofrontend/types.cc:562 +#: go/gofrontend/types.cc:574 msgid "invalid comparison of non-comparable type" msgstr "comparación no válida de tipo que no es comparable" -#: go/gofrontend/types.cc:575 +#: go/gofrontend/types.cc:587 msgid "invalid comparison of generated struct" msgstr "comparación no válida de struct generado" -#: go/gofrontend/types.cc:586 +#: go/gofrontend/types.cc:598 msgid "invalid comparison of non-comparable struct" msgstr "comparación no válida de struct que no es comparable" -#: go/gofrontend/types.cc:596 +#: go/gofrontend/types.cc:608 msgid "invalid comparison of generated array" msgstr "comparación no válida de matriz generada" -#: go/gofrontend/types.cc:603 +#: go/gofrontend/types.cc:615 msgid "invalid comparison of non-comparable array" msgstr "comparación no válida de matriz que no es comparable" -#: go/gofrontend/types.cc:631 +#: go/gofrontend/types.cc:643 msgid "multiple-value function call in single-value context" msgstr "llamada a función de valor múltiple en un contexto de un solo valor" -#: go/gofrontend/types.cc:708 +#: go/gofrontend/types.cc:720 msgid "need explicit conversion" msgstr "necesita conversión implícita" -#: go/gofrontend/types.cc:715 +#: go/gofrontend/types.cc:727 #, c-format msgid "cannot use type %s as type %s" msgstr "no se puede usar el tipo %s como tipo %s" -#: go/gofrontend/types.cc:3849 +#: go/gofrontend/types.cc:3864 msgid "different receiver types" msgstr "tipos de receptor diferentes" -#: go/gofrontend/types.cc:3869 go/gofrontend/types.cc:3882 -#: go/gofrontend/types.cc:3897 +#: go/gofrontend/types.cc:3884 go/gofrontend/types.cc:3897 +#: go/gofrontend/types.cc:3912 msgid "different number of parameters" msgstr "número diferente de parámetros" -#: go/gofrontend/types.cc:3890 +#: go/gofrontend/types.cc:3905 msgid "different parameter types" msgstr "tipos de parámetro diferentes" -#: go/gofrontend/types.cc:3905 +#: go/gofrontend/types.cc:3920 msgid "different varargs" msgstr "varargs diferentes" -#: go/gofrontend/types.cc:3914 go/gofrontend/types.cc:3927 -#: go/gofrontend/types.cc:3942 +#: go/gofrontend/types.cc:3929 go/gofrontend/types.cc:3942 +#: go/gofrontend/types.cc:3958 msgid "different number of results" msgstr "número diferente de resultados" -#: go/gofrontend/types.cc:3935 +#: go/gofrontend/types.cc:3951 msgid "different result types" msgstr "tipos de resultado diferentes" -#: go/gofrontend/types.cc:8423 +#: go/gofrontend/types.cc:8445 #, c-format msgid "need explicit conversion; missing method %s%s%s" msgstr "se necesita conversión explícita; falta el método %s%s%s" -#: go/gofrontend/types.cc:8440 go/gofrontend/types.cc:8582 +#: go/gofrontend/types.cc:8462 go/gofrontend/types.cc:8605 #, c-format msgid "incompatible type for method %s%s%s" msgstr "tipo incompatible para el método %s%s%s" -#: go/gofrontend/types.cc:8444 go/gofrontend/types.cc:8586 +#: go/gofrontend/types.cc:8466 go/gofrontend/types.cc:8609 #, c-format msgid "incompatible type for method %s%s%s (%s)" msgstr "tipo incompatible para el método %s%s%s (%s)" -#: go/gofrontend/types.cc:8523 go/gofrontend/types.cc:8536 +#: go/gofrontend/types.cc:8545 go/gofrontend/types.cc:8558 msgid "pointer to interface type has no methods" msgstr "el puntero a tipo de interfaz no tiene métodos" -#: go/gofrontend/types.cc:8525 go/gofrontend/types.cc:8538 +#: go/gofrontend/types.cc:8547 go/gofrontend/types.cc:8560 msgid "type has no methods" msgstr "el tipo no tiene métodos" -#: go/gofrontend/types.cc:8559 +#: go/gofrontend/types.cc:8581 #, c-format msgid "ambiguous method %s%s%s" msgstr "método ambiguo %s%s%s" -#: go/gofrontend/types.cc:8562 +#: go/gofrontend/types.cc:8584 #, c-format msgid "missing method %s%s%s" msgstr "falta el método %s%s%s" -#: go/gofrontend/types.cc:8603 +#: go/gofrontend/types.cc:8626 #, c-format msgid "method %s%s%s requires a pointer receiver" msgstr "el método %s%s%s requiere un receptor de puntero" -#: go/gofrontend/types.cc:8621 +#: go/gofrontend/types.cc:8644 #, c-format msgid "method %s%s%s is marked go:nointerface" msgstr "el método %s%s%s está marado go:nointerface" @@ -15650,7 +15676,7 @@ msgid "specified bound %wu equals the size of the destination" msgstr "el límite %wu especificado es igual al tamaño del destino" -#: builtins.c:4640 gimplify.c:3149 +#: builtins.c:4640 gimplify.c:3150 #, gcc-internal-format msgid "too few arguments to function %" msgstr "faltan argumentos para la función %" @@ -15712,27 +15738,27 @@ msgid "invalid memory model for %<__atomic_load%>" msgstr "modelo de memoria no válido para %<__atomic_load%>" -#: builtins.c:5881 builtins.c:6068 +#: builtins.c:5881 builtins.c:6074 #, gcc-internal-format msgid "invalid memory model for %<__atomic_store%>" msgstr "modelo de memoria no válido para %<__atomic_store%>" -#: builtins.c:6186 +#: builtins.c:6192 #, gcc-internal-format msgid "non-constant argument 1 to __atomic_always_lock_free" msgstr "el argumento 1 para __atomic_always_lock_free no es una constante" -#: builtins.c:6228 +#: builtins.c:6234 #, gcc-internal-format msgid "non-integer argument 1 to __atomic_is_lock_free" msgstr "el argumento 1 para __atomic_is_lock_free no es un entero" -#: builtins.c:6292 +#: builtins.c:6298 #, gcc-internal-format msgid "__builtin_thread_pointer is not supported on this target" msgstr "no se admite __builtin_thread_pointer en este objetivo" -#: builtins.c:6312 +#: builtins.c:6318 #, gcc-internal-format msgid "__builtin_set_thread_pointer is not supported on this target" msgstr "no se admite __builtin_set_thread_pointer en este objetivo" @@ -15739,7 +15765,7 @@ #. All valid uses of __builtin_va_arg_pack () are removed during #. inlining. -#: builtins.c:6572 expr.c:10797 +#: builtins.c:6578 expr.c:10795 #, gcc-internal-format msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>" msgstr "%Kuso no válido de %<__builtin_va_arg_pack ()%>" @@ -15746,12 +15772,12 @@ #. All valid uses of __builtin_va_arg_pack_len () are removed during #. inlining. -#: builtins.c:6578 +#: builtins.c:6584 #, gcc-internal-format msgid "%Kinvalid use of %<__builtin_va_arg_pack_len ()%>" msgstr "%Kuso no válido de %<__builtin_va_arg_pack_len ()%>" -#: builtins.c:6815 +#: builtins.c:6821 #, gcc-internal-format msgid "%<__builtin_longjmp%> second argument must be 1" msgstr "el segundo argumento de %<__builtin_longjump%> debe ser 1" @@ -15758,62 +15784,62 @@ #. Software implementation of Pointer Bounds Checker is NYI. #. Target support is required. -#: builtins.c:7457 +#: builtins.c:7463 #, gcc-internal-format msgid "Your target platform does not support -fcheck-pointer-bounds" msgstr "Su plataforma objetivo no soporta -fcheck-pointer-bounds" -#: builtins.c:7776 +#: builtins.c:7782 #, gcc-internal-format msgid "target format does not support infinity" msgstr "el formato objetivo no soporta infinito" -#: builtins.c:9394 +#: builtins.c:9400 #, gcc-internal-format msgid "% used in function with fixed args" msgstr "se usó % en una función con argumentos fijos" -#: builtins.c:9402 +#: builtins.c:9408 #, gcc-internal-format msgid "wrong number of arguments to function %" msgstr "número erróneo argumentos para la función %" -#: builtins.c:9417 +#: builtins.c:9423 #, gcc-internal-format msgid "%<__builtin_next_arg%> called without an argument" msgstr "se llamó a %<__builtin_next_arg%> sin un argumento" -#: builtins.c:9422 +#: builtins.c:9428 #, gcc-internal-format msgid "wrong number of arguments to function %<__builtin_next_arg%>" msgstr "número erróneo de argumentos para la función %<__builtin_next_arg%>" -#: builtins.c:9454 +#: builtins.c:9460 #, gcc-internal-format msgid "second parameter of % not last named argument" msgstr "el segundo parámetro de % no es el último argumento nombrado" -#: builtins.c:9467 +#: builtins.c:9473 #, gcc-internal-format msgid "undefined behavior when second parameter of % is declared with % storage" msgstr "la conducta es indefinida cuando el segundo parámetro de % se declara con almacenamiento %" -#: builtins.c:9496 +#: builtins.c:9502 #, gcc-internal-format msgid "%Kfirst argument of %D must be a pointer, second integer constant" msgstr "%Kel primer argumento de %D debe ser un puntero, el segundo una constante entera" -#: builtins.c:9509 +#: builtins.c:9515 #, gcc-internal-format msgid "%Klast argument of %D is not integer constant between 0 and 3" msgstr "%Kel último argumento de %D no es una constante entera entre 0 y 3" -#: builtins.c:9783 +#: builtins.c:9789 #, gcc-internal-format msgid "%Kattempt to free a non-heap object %qD" msgstr "%Kse intenta liberar un objeto %qD que no es de pila" -#: builtins.c:9786 +#: builtins.c:9792 #, gcc-internal-format msgid "%Kattempt to free a non-heap object" msgstr "%Kse intenta liberar un objeto que no es de pila" @@ -16721,12 +16747,12 @@ msgstr "se descarta el atributo % porque ya se inicializó la variable" #. include_self= -#: cgraphunit.c:968 c/c-decl.c:11128 +#: cgraphunit.c:968 c/c-decl.c:11131 #, gcc-internal-format msgid "%q+F used but never defined" msgstr "se usa %q+F pero nunca se define" -#: cgraphunit.c:970 c/c-decl.c:11137 +#: cgraphunit.c:970 c/c-decl.c:11140 #, gcc-internal-format msgid "%q+F declared % but never defined" msgstr "%q+F se declaró % pero nunca se define" @@ -16821,12 +16847,12 @@ msgid "cannot find '%s'" msgstr "no se puede encontrar '%s'" -#: collect-utils.c:183 collect2.c:2361 collect2.c:2560 gcc.c:3080 gcc.c:6787 +#: collect-utils.c:183 collect2.c:2361 collect2.c:2560 gcc.c:3080 gcc.c:6790 #, gcc-internal-format msgid "pex_init failed: %m" msgstr "falló pex_init: %m" -#: collect-utils.c:192 collect2.c:2370 collect2.c:2568 gcc.c:8428 +#: collect-utils.c:192 collect2.c:2370 collect2.c:2568 gcc.c:8431 #, gcc-internal-format msgid "%s: %m" msgstr "%s: %m" @@ -16836,7 +16862,7 @@ msgid "COLLECT_LTO_WRAPPER must be set" msgstr "se debe definir COLLECT_LTO_WRAPPER" -#: collect2.c:966 gcc.c:7313 lto-wrapper.c:1479 +#: collect2.c:966 gcc.c:7316 lto-wrapper.c:1479 #: config/i386/intelmic-mkoffload.c:554 config/nvptx/mkoffload.c:403 #, gcc-internal-format msgid "atexit failed" @@ -17047,7 +17073,7 @@ msgid "error writing %qs" msgstr "error al escribir %qs" -#: coverage.c:1245 +#: coverage.c:1257 #, gcc-internal-format, gfc-internal-format msgid "cannot open %s" msgstr "no se puede abrir %s" @@ -17127,17 +17153,17 @@ msgid "ignoring possibly conflicting option %<-fopt-info-%s%>" msgstr "se descarta la opción posiblemente conflictiva %<-fopt-info-%s%>" -#: dwarf2out.c:1093 +#: dwarf2out.c:1097 #, gcc-internal-format msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive" msgstr "sólo se admiten múltiples personalidades EH con ensambladores que admiten la directiva cfi.personality" -#: dwarf2out.c:13685 +#: dwarf2out.c:13689 #, gcc-internal-format, gfc-internal-format msgid "non-delegitimized UNSPEC %s (%d) found in variable location" msgstr "se encontró UNSPEC %s (%d) que no está delegitimado la ubicación de variable" -#: dwarf2out.c:27308 +#: dwarf2out.c:27319 #, gcc-internal-format msgid "-feliminate-dwarf2-dups is broken for C++, ignoring" msgstr "" @@ -17247,12 +17273,12 @@ msgid "write of %wu-bit data outside the bound of destination object, data truncated into %wu-bit" msgstr "" -#: expr.c:10804 +#: expr.c:10802 #, gcc-internal-format msgid "%Kcall to %qs declared with attribute error: %s" msgstr "%Kla llamada a %qs se redeclaró con error de atributo: %s" -#: expr.c:10811 +#: expr.c:10809 #, gcc-internal-format msgid "%Kcall to %qs declared with attribute warning: %s" msgstr "%Kla llamada a %qs se redecló con aviso de atributo: %s" @@ -17267,12 +17293,12 @@ msgid "the frame size of %wd bytes is larger than %wd bytes" msgstr "el tamaño de marco de %wd bytes es mayor que %wd bytes" -#: final.c:4635 toplev.c:1404 tree-cfgcleanup.c:1148 +#: final.c:4635 toplev.c:1404 tree-cfgcleanup.c:1211 #, gcc-internal-format msgid "could not open final insn dump file %qs: %m" msgstr "no se puede abrir el fichero de volcado de insn final %qs: %m" -#: final.c:4688 tree-cfgcleanup.c:1164 +#: final.c:4688 tree-cfgcleanup.c:1227 #, gcc-internal-format msgid "could not close final insn dump file %qs: %m" msgstr "no se puede cerrar el fichero de volcado de insn final %qs: %m" @@ -17287,7 +17313,7 @@ msgid "comparison is always %d due to width of bit-field" msgstr "la comparación siempre es %d debido a la anchura del campo de bit" -#: fold-const.c:5340 tree-ssa-reassoc.c:2343 tree-ssa-reassoc.c:2974 +#: fold-const.c:5340 tree-ssa-reassoc.c:2343 tree-ssa-reassoc.c:2983 #, gcc-internal-format msgid "assuming signed overflow does not occur when simplifying range test" msgstr "se asume que el desbordamiento con signo no sucede al simplificar la prueba de rango" @@ -17317,7 +17343,7 @@ msgid "assuming signed overflow does not occur when combining constants around a comparison" msgstr "se asume que el desbordamiento con signo no sucede cuando se combinan constantes alrededor de una comparación" -#: fold-const.c:12048 +#: fold-const.c:12049 #, gcc-internal-format msgid "fold check: original tree changed by fold" msgstr "fold check: el árbol original cambió por un pliegue" @@ -17327,7 +17353,7 @@ msgid "total size of local objects too large" msgstr "el tamaño total de los objetos locales es demasiado grande" -#: function.c:1765 gimplify.c:6111 +#: function.c:1765 gimplify.c:6112 #, gcc-internal-format msgid "impossible constraint in %" msgstr "restricción imposible en %" @@ -17427,62 +17453,68 @@ msgid "input file %qs is the same as output file" msgstr "el fichero de entrada %qs es el mismo que el de salida" -#: gcc.c:4498 +#: gcc.c:4476 +#, fuzzy, gcc-internal-format +#| msgid "output file not specified" +msgid "output filename may not be empty" +msgstr "no se ha especificado el fichero de salida" + +#: gcc.c:4501 #, gcc-internal-format msgid "-pipe ignored because -save-temps specified" msgstr "se descarta -pipe porque se especificó -save-temps" -#: gcc.c:4586 +#: gcc.c:4589 #, gcc-internal-format msgid "%<-x %s%> after last input file has no effect" msgstr "%<-x %s%> después del último fichero de entrada no tiene efecto" -#: gcc.c:4768 +#: gcc.c:4771 #, gcc-internal-format msgid "unable to locate default linker script %qs in the library search paths" msgstr "no se puede localizar el guión de enlazador por defecto %qs en las rutas de búsqueda de bibliotecas" -#: gcc.c:4973 +#: gcc.c:4976 #, gcc-internal-format msgid "switch %qs does not start with %<-%>" msgstr "la opción %qs no inicia con %<-%>" -#: gcc.c:4977 +#: gcc.c:4980 #, gcc-internal-format msgid "spec-generated switch is just %<-%>" msgstr "la opción generada de especificación sólo es %<-%>" -#: gcc.c:5070 +#: gcc.c:5073 #, gcc-internal-format, gfc-internal-format msgid "could not open temporary response file %s" msgstr "no se puede abrir el fichero de respuesta temporal %s" -#: gcc.c:5077 +#: gcc.c:5080 #, gcc-internal-format, gfc-internal-format msgid "could not write to temporary response file %s" msgstr "no se puede escribir en el fichero de respuesta temporal %s" -#: gcc.c:5083 +#: gcc.c:5086 #, gcc-internal-format, gfc-internal-format msgid "could not close temporary response file %s" msgstr "no se puede cerrar el fichero de respuesta temporal %s" -#: gcc.c:5206 +#: gcc.c:5209 #, gcc-internal-format msgid "spec %qs invalid" msgstr "la especificación %qs es no válida" -#: gcc.c:5356 +#: gcc.c:5359 #, gcc-internal-format msgid "spec %qs has invalid %<%%0%c%>" msgstr "la especificación %qs tiene un %<%%0%c%> no válido" -#: gcc.c:5677 +#: gcc.c:5680 #, gcc-internal-format msgid "spec %qs has invalid %<%%W%c%>" msgstr "la especificación %qs tiene un %<%%W%c%> no válido" -#: gcc.c:5700 +#: gcc.c:5703 #, gcc-internal-format msgid "spec %qs has invalid %<%%x%c%>" msgstr "la especificación %qs tiene un %<%%x%c%> no válido" @@ -17490,228 +17522,228 @@ #. Catch the case where a spec string contains something like #. '%{foo:%*}'. i.e. there is no * in the pattern on the left #. hand side of the :. -#: gcc.c:5911 +#: gcc.c:5914 #, gcc-internal-format msgid "spec failure: %<%%*%> has not been initialized by pattern match" msgstr "falla de especificación: %<%%*%> no ha sido inicializado por coincidencia de patrón" -#: gcc.c:5954 +#: gcc.c:5957 #, gcc-internal-format msgid "spec failure: unrecognized spec option %qc" msgstr "falla de especificación: no se reconoce la opción de especificación %qc" -#: gcc.c:6016 +#: gcc.c:6019 #, gcc-internal-format msgid "unknown spec function %qs" msgstr "función de especificación %qs desconocida" -#: gcc.c:6046 +#: gcc.c:6049 #, gcc-internal-format msgid "error in args to spec function %qs" msgstr "error en los argumentos para la función de especificación %qs" -#: gcc.c:6100 +#: gcc.c:6103 #, gcc-internal-format msgid "malformed spec function name" msgstr "nombre de la función de especificación malformado" #. ) -#: gcc.c:6103 +#: gcc.c:6106 #, gcc-internal-format msgid "no arguments for spec function" msgstr "no hay argumentos para la función de especificación" -#: gcc.c:6122 +#: gcc.c:6125 #, gcc-internal-format msgid "malformed spec function arguments" msgstr "argumentos de la función de especificación malformados" -#: gcc.c:6396 +#: gcc.c:6399 #, gcc-internal-format msgid "braced spec %qs is invalid at %qc" msgstr "la especificación entre llaves %qs es no válida en %qc" -#: gcc.c:6491 +#: gcc.c:6494 #, gcc-internal-format msgid "braced spec body %qs is invalid" msgstr "el cuerpo de la especificación entre llaves %qs es no válido" -#: gcc.c:7097 +#: gcc.c:7100 #, gcc-internal-format, gfc-internal-format msgid "%s: could not determine length of compare-debug file %s" msgstr "%s: no se puede determinar la longitud del fichero para comparar depuración %s" -#: gcc.c:7108 +#: gcc.c:7111 #, gcc-internal-format, gfc-internal-format msgid "%s: -fcompare-debug failure (length)" msgstr "%s: falló -fcompare-debug (longitud)" -#: gcc.c:7118 gcc.c:7159 +#: gcc.c:7121 gcc.c:7162 #, gcc-internal-format, gfc-internal-format msgid "%s: could not open compare-debug file %s" msgstr "%s: no se puede abrir el fichero para comparar depuración %s" -#: gcc.c:7138 gcc.c:7175 +#: gcc.c:7141 gcc.c:7178 #, gcc-internal-format, gfc-internal-format msgid "%s: -fcompare-debug failure" msgstr "%s: falló -fcompare-debug" -#: gcc.c:7483 +#: gcc.c:7486 #, gcc-internal-format msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC" msgstr "falla de especificación: más de un argumento para SYSROOT_SUFFIX_SPEC" -#: gcc.c:7507 +#: gcc.c:7510 #, gcc-internal-format msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC" msgstr "falla de especificación: más de un argumento para SYSROOT_HEADERS_SUFFIX_SPEC" -#: gcc.c:7812 +#: gcc.c:7815 #, gcc-internal-format msgid "unrecognized command line option %<-%s%>; did you mean %<-%s%>?" msgstr "no se reconoce la opción de línea de órdenes %<-%s%>; ¿quería decir %<-%s%>?" -#: gcc.c:7816 +#: gcc.c:7819 #, gcc-internal-format msgid "unrecognized command line option %<-%s%>" msgstr "no se reconoce la opción de línea de órdenes %<-%s%>" -#: gcc.c:7942 +#: gcc.c:7945 #, gcc-internal-format msgid "not configured with sysroot headers suffix" msgstr "no se configuró con el sufijo de encabezados sysroot" -#: gcc.c:8003 +#: gcc.c:8006 #, gcc-internal-format msgid "no input files" msgstr "no hay ficheros de entrada" -#: gcc.c:8054 +#: gcc.c:8057 #, gcc-internal-format msgid "cannot specify -o with -c, -S or -E with multiple files" msgstr "no se puede especificar -o con -c, -S o -E y con múltiples ficheros" -#: gcc.c:8095 +#: gcc.c:8098 #, gcc-internal-format, gfc-internal-format msgid "%s: %s compiler not installed on this system" msgstr "%s: el compilador %s no está instalado en este sistema" -#: gcc.c:8119 +#: gcc.c:8122 #, gcc-internal-format msgid "recompiling with -fcompare-debug" msgstr "se recompila con -fcompare-debug" -#: gcc.c:8135 +#: gcc.c:8138 #, gcc-internal-format msgid "during -fcompare-debug recompilation" msgstr "durante la recompilación -fcompare-debug" -#: gcc.c:8144 +#: gcc.c:8147 #, gcc-internal-format msgid "comparing final insns dumps" msgstr "se comparan volcados finales de insns" -#: gcc.c:8261 +#: gcc.c:8264 #, gcc-internal-format, gfc-internal-format msgid "-fuse-linker-plugin, but %s not found" msgstr "-fuse-linker-plugin, pero no se encontró %s" -#: gcc.c:8294 +#: gcc.c:8297 #, gcc-internal-format, gfc-internal-format msgid "%s: linker input file unused because linking not done" msgstr "%s: no se usó el fichero de entrada del enlazador porque no se hizo enlace" -#: gcc.c:8350 c-family/c-opts.c:749 +#: gcc.c:8353 c-family/c-opts.c:749 #, gcc-internal-format msgid "cannot use %<-%> as input filename for a precompiled header" msgstr "" -#: gcc.c:8356 +#: gcc.c:8359 #, gcc-internal-format, gfc-internal-format msgid "language %s not recognized" msgstr "no se reconoce el lenguaje %s" -#: gcc.c:8596 +#: gcc.c:8599 #, gcc-internal-format msgid "multilib spec %qs is invalid" msgstr "la especificación multilib %qs es no válida" -#: gcc.c:8798 +#: gcc.c:8801 #, gcc-internal-format msgid "multilib exclusions %qs is invalid" msgstr "las exclusiones multilib %qs son no válidas" -#: gcc.c:8862 +#: gcc.c:8865 #, gcc-internal-format msgid "multilib select %qs %qs is invalid" msgstr "la selección multilib %qs %qs no es válida" -#: gcc.c:9024 +#: gcc.c:9027 #, gcc-internal-format msgid "multilib select %qs is invalid" msgstr "la selección multilib %qs es no válida" -#: gcc.c:9064 +#: gcc.c:9067 #, gcc-internal-format msgid "multilib exclusion %qs is invalid" msgstr "la exclusión multilib %qs es no válida" -#: gcc.c:9279 +#: gcc.c:9282 #, gcc-internal-format msgid "environment variable %qs not defined" msgstr "no se definió la variable de entorno %qs" -#: gcc.c:9418 gcc.c:9423 +#: gcc.c:9421 gcc.c:9426 #, gcc-internal-format msgid "invalid version number %qs" msgstr "número de versión %qs no válido" -#: gcc.c:9466 +#: gcc.c:9469 #, gcc-internal-format, gfc-internal-format msgid "too few arguments to %%:version-compare" msgstr "faltan argumentos para %%:version-compare" -#: gcc.c:9472 +#: gcc.c:9475 #, gcc-internal-format, gfc-internal-format msgid "too many arguments to %%:version-compare" msgstr "demasiados argumentos para %%:version-compare" -#: gcc.c:9514 +#: gcc.c:9517 #, gcc-internal-format msgid "unknown operator %qs in %%:version-compare" msgstr "operador %qs desconocido en %%:version-compare" -#: gcc.c:9638 +#: gcc.c:9641 #, gcc-internal-format, gfc-internal-format msgid "too many arguments to %%:compare-debug-dump-opt" msgstr "demasiados argumentos para %%:compare-debug-dump-opt" -#: gcc.c:9711 +#: gcc.c:9714 #, gcc-internal-format, gfc-internal-format msgid "too many arguments to %%:compare-debug-self-opt" msgstr "demasiados argumentos para %%:compare-debug-self-opt" -#: gcc.c:9747 +#: gcc.c:9750 #, gcc-internal-format, gfc-internal-format msgid "too few arguments to %%:compare-debug-auxbase-opt" msgstr "faltan argumentos para %%:compare-debug-auxbase-opt" -#: gcc.c:9751 +#: gcc.c:9754 #, gcc-internal-format, gfc-internal-format msgid "too many arguments to %%:compare-debug-auxbase-opt" msgstr "demasiados argumentos para %%:compare-debug-auxbase-opt" -#: gcc.c:9758 +#: gcc.c:9761 #, gcc-internal-format, gfc-internal-format msgid "argument to %%:compare-debug-auxbase-opt does not end in .gk" msgstr "el argumento para %%:compare-debug-auxbase-opt no termina en .gk" -#: gcc.c:9832 +#: gcc.c:9835 #, gcc-internal-format, gfc-internal-format msgid "too few arguments to %%:replace-extension" msgstr "faltan argumentos para %%:replace-extension" -#: gcc.c:9885 +#: gcc.c:9888 #, gcc-internal-format, gfc-internal-format msgid "wrong number of arguments to %%:debug-level-gt" msgstr "número erróneo de argumentos para %%:debug-level-gt" @@ -17856,9 +17888,9 @@ #: gimple-ssa-isolate-paths.c:413 gimple-ssa-isolate-paths.c:531 tree.c:12880 #: tree.c:12917 c/c-typeck.c:2906 c/c-typeck.c:2990 c/c-typeck.c:9913 #: c/c-typeck.c:9930 c/gimple-parser.c:1556 c/gimple-parser.c:1564 -#: cp/call.c:6454 cp/call.c:7933 cp/constexpr.c:777 cp/constexpr.c:2174 -#: cp/cvt.c:992 cp/cvt.c:1019 cp/decl.c:7224 cp/decl2.c:5072 cp/pt.c:7993 -#: cp/semantics.c:1764 cp/typeck.c:1648 cp/typeck.c:1843 cp/typeck.c:3718 +#: cp/call.c:6454 cp/call.c:7936 cp/constexpr.c:778 cp/constexpr.c:2190 +#: cp/cvt.c:992 cp/cvt.c:1019 cp/decl.c:7224 cp/decl2.c:5073 cp/pt.c:8075 +#: cp/semantics.c:1767 cp/typeck.c:1648 cp/typeck.c:1843 cp/typeck.c:3718 #, gcc-internal-format msgid "declared here" msgstr "se declara aquí" @@ -18273,227 +18305,227 @@ msgid "attribute % not preceding a case label or default label" msgstr "el atributo % no antecede una etiqueta case o default" -#: gimplify.c:3289 +#: gimplify.c:3290 #, gcc-internal-format msgid "using result of function returning %" msgstr "se usa el resultado de una función que devuelve %" -#: gimplify.c:5969 +#: gimplify.c:5970 #, gcc-internal-format, gfc-internal-format msgid "invalid lvalue in asm output %d" msgstr "l-valor no válido en la salida asm %d" -#: gimplify.c:6112 +#: gimplify.c:6113 #, gcc-internal-format, gfc-internal-format msgid "non-memory input %d must stay in memory" msgstr "la entrada que no es de memoria %d debe permanecer en memoria" -#: gimplify.c:6152 gimplify.c:6161 +#: gimplify.c:6153 gimplify.c:6162 #, gcc-internal-format, gfc-internal-format msgid "memory input %d is not directly addressable" msgstr "la entrada de memoria %d no es directamente direccionable" -#: gimplify.c:6764 +#: gimplify.c:6767 #, gcc-internal-format msgid "threadprivate variable %qE used in target region" msgstr "se usó la variable threadprivate %qE en una región objetivo" -#: gimplify.c:6766 +#: gimplify.c:6769 #, gcc-internal-format msgid "enclosing target region" msgstr "región objetivo contenedora" -#: gimplify.c:6778 +#: gimplify.c:6781 #, gcc-internal-format msgid "threadprivate variable %qE used in untied task" msgstr "se usó la variable threadprivate %qE en una tarea sin atar" -#: gimplify.c:6780 +#: gimplify.c:6783 #, gcc-internal-format msgid "enclosing task" msgstr "tarea contenedora" -#: gimplify.c:6852 +#: gimplify.c:6855 #, gcc-internal-format msgid "%qE not specified in enclosing %qs" msgstr "no se especificó %qE en el %qs que lo contiene" -#: gimplify.c:6854 +#: gimplify.c:6857 #, gcc-internal-format msgid "enclosing %qs" msgstr "%qs contenedora" -#: gimplify.c:6965 +#: gimplify.c:6968 #, gcc-internal-format msgid "%qE not specified in enclosing OpenACC %qs construct" msgstr "no se especificó %qE en la construcción OpenACC %qs que lo contiene" -#: gimplify.c:6967 +#: gimplify.c:6970 #, gcc-internal-format msgid "enclosing OpenACC %qs construct" msgstr "construcción OpenACC %qs que lo contiene" -#: gimplify.c:7018 +#: gimplify.c:7021 #, gcc-internal-format msgid "%qE with % clause used in % function" msgstr "%qE con cláusula % usada en la función %" -#: gimplify.c:7026 +#: gimplify.c:7029 #, gcc-internal-format msgid "%qE requires a % directive for use in a % function" msgstr "%qE requiere una directiva % para poder usarse en una función%" -#: gimplify.c:7092 gimplify.c:7692 +#: gimplify.c:7095 gimplify.c:7695 #, gcc-internal-format msgid "variable %qE declared in enclosing % region" msgstr "la variable %qE se declaró en la región % que la contiene" -#: gimplify.c:7113 +#: gimplify.c:7116 #, gcc-internal-format msgid "%qD referenced in target region does not have a mappable type" msgstr "%qD referenciada en la región de destino no tiene un tipo al que asociarla" -#: gimplify.c:7231 gimplify.c:7263 +#: gimplify.c:7234 gimplify.c:7266 #, gcc-internal-format msgid "iteration variable %qE is predetermined linear" msgstr "la variable de iteración %qE se predetermina lineal" -#: gimplify.c:7234 +#: gimplify.c:7237 #, gcc-internal-format msgid "iteration variable %qE should be private" msgstr "la variable de iteración %qE debe ser private" -#: gimplify.c:7248 +#: gimplify.c:7251 #, gcc-internal-format msgid "iteration variable %qE should not be firstprivate" msgstr "la variable de iteración %qE no debe ser firstprivate" -#: gimplify.c:7251 +#: gimplify.c:7254 #, gcc-internal-format msgid "iteration variable %qE should not be reduction" msgstr "la variable de iteración %qE no debe ser reduction" -#: gimplify.c:7254 +#: gimplify.c:7257 #, gcc-internal-format msgid "iteration variable %qE should not be linear" msgstr "la variable de iteración %qE no debe ser lineal" -#: gimplify.c:7257 +#: gimplify.c:7260 #, gcc-internal-format msgid "iteration variable %qE should not be lastprivate" msgstr "la variable de iteración %qE no debe ser lastprivate" -#: gimplify.c:7260 +#: gimplify.c:7263 #, gcc-internal-format msgid "iteration variable %qE should not be private" msgstr "la variable de iteración %qE no debe ser private" -#: gimplify.c:7562 +#: gimplify.c:7565 #, gcc-internal-format msgid "% clause for variable other than loop iterator specified on construct combined with %" msgstr "cláusula % para una variable que no es iterador de bucle especificada en una construcción combinada con %" -#: gimplify.c:7769 +#: gimplify.c:7772 #, gcc-internal-format msgid "mapping field %qE of variable length structure" msgstr "se asocia el campo %qE de una estructura de longitud variable" -#: gimplify.c:7980 +#: gimplify.c:7983 #, gcc-internal-format msgid "%qE appears more than once in map clauses" msgstr "%qE aparece más de una vez en las cláusulas map" -#: gimplify.c:8284 +#: gimplify.c:8287 #, gcc-internal-format msgid "copyprivate variable %qE is not threadprivate or private in outer context" msgstr "la variable copyprivate %qE no es threadprivate o private en el contexto externo" -#: gimplify.c:8304 +#: gimplify.c:8307 #, gcc-internal-format msgid "%s variable %qE is private in outer context" msgstr "la variable %s %qE es private en el contexto externo" -#: gimplify.c:8330 +#: gimplify.c:8333 #, gcc-internal-format msgid "expected %qs % clause modifier rather than %qs" msgstr "se esperaba el modificador de cláusula %qs % en vez de %qs" -#: gimplify.c:8596 +#: gimplify.c:8599 #, gcc-internal-format msgid "%<_Atomic%> %qD in implicit % clause" msgstr "%<_Atomic%> %qD en cláusula % implícita" -#: gimplify.c:8629 +#: gimplify.c:8632 #, gcc-internal-format msgid "%<_Atomic%> %qD in implicit % clause on % construct" msgstr "%<_Atomic%> %qD en cláusula % implícita en una construcción %" -#: gimplify.c:8802 +#: gimplify.c:8805 #, gcc-internal-format msgid "%<_Atomic%> %qD in % clause on % construct" msgstr "%<_Atomic%> %qD en cláusula % en una construcción %" -#: gimplify.c:8853 +#: gimplify.c:8856 #, gcc-internal-format msgid "same variable used in % and % clauses on % construct" msgstr "se ha usado la misma variable en cláusulas % y % en una construcción %" -#: gimplify.c:8935 +#: gimplify.c:8938 #, gcc-internal-format msgid "incompatible data clause with reduction on %qE; promoting to present_or_copy" msgstr "cláusula de datos incompatible con reducción en %qE; se promociona a present_or_copy" -#: gimplify.c:9080 +#: gimplify.c:9083 #, gcc-internal-format msgid "invalid private reduction on %qE" msgstr "reducción privada no válida en %qE" -#: gimplify.c:10904 omp-low.c:2814 +#: gimplify.c:10907 omp-low.c:2842 #, gcc-internal-format msgid "% construct with % clause must be closely nested inside a loop with % clause with a parameter" msgstr "la construcción % con cláusula % debe estar bien anidada dentro de un bucle con una cláusula % con un parámetro" -#: gimplify.c:10922 +#: gimplify.c:10925 #, gcc-internal-format msgid "variable %qE is not an iteration of outermost loop %d, expected %qE" msgstr "la variable %qE no es una iteración del bucle más externo %d; se esperaba %qE" -#: gimplify.c:10935 +#: gimplify.c:10938 #, gcc-internal-format msgid "number of variables in % clause does not match number of iteration variables" msgstr "el número de variables en la cláusula % no coincide con el número de variables de iteración" -#: gimplify.c:10948 +#: gimplify.c:10951 #, gcc-internal-format msgid "more than one % clause on an % construct" msgstr "más de una cláusula % en una construcción %" -#: gimplify.c:10959 +#: gimplify.c:10962 #, gcc-internal-format msgid "% clause specified together with % clauses on the same construct" msgstr "cláusula % especificada junto con cláusulas % en la misma construcción" -#: gimplify.c:11902 +#: gimplify.c:11905 #, gcc-internal-format msgid "expected %<_Cilk_spawn%> before %<_Cilk_sync%>" msgstr "se esperaba %<_Cilk_spawn%> antes de %<_Cilk_sync%>" -#: gimplify.c:12201 +#: gimplify.c:12204 #, gcc-internal-format msgid "gimplification failed" msgstr "falló la gimplificación" -#: gimplify.c:12729 +#: gimplify.c:12732 #, gcc-internal-format msgid "%qT is promoted to %qT when passed through %<...%>" msgstr "%qT se promueve a %qT cuando pasa a través de %<...%>" -#: gimplify.c:12734 +#: gimplify.c:12737 #, gcc-internal-format msgid "(so you should pass %qT not %qT to %)" msgstr "(así que debe pasar %qT y no %qT a %)" -#: gimplify.c:12741 +#: gimplify.c:12744 #, gcc-internal-format msgid "if this code is reached, the program will abort" msgstr "si se alcanza este código, el programa abortará" @@ -18725,8 +18757,9 @@ msgstr "tipos con número de parámetros diferentes" #: ipa-devirt.c:1229 -#, gcc-internal-format -msgid "type %qT itself violate the C++ One Definition Rule" +#, fuzzy, gcc-internal-format +#| msgid "type %qT itself violate the C++ One Definition Rule" +msgid "type %qT itself violates the C++ One Definition Rule" msgstr "el propio tipo %qT viola la regla de una sola definición de C++" #: ipa-devirt.c:1235 @@ -18825,8 +18858,9 @@ msgstr "hay un campo con el mismo nombre pero distinto tipo definido en otra unidad de traducción" #: ipa-devirt.c:1576 -#, gcc-internal-format -msgid "fields has different layout in another translation unit" +#, fuzzy, gcc-internal-format +#| msgid "fields has different layout in another translation unit" +msgid "fields have different layout in another translation unit" msgstr "los campos tienen distinta disposición en otra unidad de translación" #: ipa-devirt.c:1599 @@ -19208,198 +19242,198 @@ msgid "multiple loop axes specified for routine" msgstr "se especificaron múltiples ejes de bucle para la rutina" -#: omp-low.c:2120 omp-offload.c:1124 +#: omp-low.c:2148 omp-offload.c:1124 #, gcc-internal-format msgid "% overrides other OpenACC loop specifiers" msgstr "% ignora otros especificadores de bucle OpenACC" -#: omp-low.c:2123 omp-offload.c:1125 +#: omp-low.c:2151 omp-offload.c:1125 #, gcc-internal-format msgid "% conflicts with other OpenACC loop specifiers" msgstr "% está en conflicto con otros especificadores de bucle OpenACC" -#: omp-low.c:2127 omp-offload.c:1159 +#: omp-low.c:2155 omp-offload.c:1159 #, gcc-internal-format msgid "inner loop uses same OpenACC parallelism as containing loop" msgstr "el bucle interno usa el mismo paralelismo OpenACC que el bucle que lo contiene" -#: omp-low.c:2174 +#: omp-low.c:2202 #, gcc-internal-format msgid "argument not permitted on %qs clause in OpenACC %" msgstr "argumento no permitido en la cláusula %qs en OpenACC %" -#: omp-low.c:2443 +#: omp-low.c:2471 #, gcc-internal-format msgid "non-OpenACC construct inside of OpenACC routine" msgstr "construcción no OpenACC dentro de rutina OpenACC" -#: omp-low.c:2452 +#: omp-low.c:2480 #, gcc-internal-format msgid "non-OpenACC construct inside of OpenACC region" msgstr "construcción no OpenACC dentro de región OpenACC" -#: omp-low.c:2477 +#: omp-low.c:2505 #, gcc-internal-format msgid "% must be closely nested inside of % region" msgstr "% debe estar estar bien anidada dentro de la región %" -#: omp-low.c:2485 +#: omp-low.c:2513 #, gcc-internal-format msgid "OpenMP constructs other than %<#pragma omp ordered simd%> may not be nested inside % region" msgstr "Las construcciones OpenACC distintas de %<#pragma omp ordered simd%> pueden no estar anidadas dentro de la región %" -#: omp-low.c:2497 +#: omp-low.c:2525 #, gcc-internal-format msgid "only % or % regions are allowed to be strictly nested inside % region" msgstr "solamente a las regiones % o % se les permite estar estrictamente anidadas dentro de la región %" -#: omp-low.c:2514 +#: omp-low.c:2542 #, gcc-internal-format msgid "% region must be strictly nested inside % construct" msgstr "las regiones % deben estar estrictamente anidadas dentro de construcciones %" -#: omp-low.c:2555 +#: omp-low.c:2583 #, gcc-internal-format msgid "OpenACC loop directive must be associated with an OpenACC compute region" msgstr "la directiva de bucle OpenACC debe estar asociada a una región de cómputo OpenACC" -#: omp-low.c:2577 +#: omp-low.c:2605 #, gcc-internal-format msgid "orphaned %qs construct" msgstr "construcción %qs huérfana" -#: omp-low.c:2606 +#: omp-low.c:2634 #, gcc-internal-format msgid "%<#pragma omp cancel for%> inside % for construct" msgstr "%<#pragma omp cancel for%> dentro de % para construcción" -#: omp-low.c:2611 +#: omp-low.c:2639 #, gcc-internal-format msgid "%<#pragma omp cancel for%> inside % for construct" msgstr "%<#pragma omp cancel for%> dentro de % para construcción" -#: omp-low.c:2631 omp-low.c:2644 +#: omp-low.c:2659 omp-low.c:2672 #, gcc-internal-format msgid "%<#pragma omp cancel sections%> inside % sections construct" msgstr "%<#pragma omp cancel section%> dentro de contrucción de secciones %" -#: omp-low.c:2670 +#: omp-low.c:2698 #, gcc-internal-format msgid "%<%s taskgroup%> construct not closely nested inside of % region" msgstr "la construcción %<%s taskgroup%> no está bien anidada dentro de la región %" -#: omp-low.c:2684 +#: omp-low.c:2712 #, gcc-internal-format msgid "invalid arguments" msgstr "argumentos no válidos" -#: omp-low.c:2690 +#: omp-low.c:2718 #, gcc-internal-format msgid "%<%s %s%> construct not closely nested inside of %qs" msgstr "la construcción %<%s %s%> no está bien anidada dentro de %qs" -#: omp-low.c:2718 +#: omp-low.c:2746 #, gcc-internal-format msgid "barrier region may not be closely nested inside of work-sharing, %, %, %, explicit % or % region" msgstr "la región de barrera puede no estar bien anidada dentro de la región de trabajo compartido, %, %, %, % explícita o región %" -#: omp-low.c:2725 +#: omp-low.c:2753 #, gcc-internal-format msgid "work-sharing region may not be closely nested inside of work-sharing, %, %, %, explicit % or % region" msgstr "la región de trabajo compartido puede no estar bien anidada dentro de la región de trabajo compartido, %, %, %, % explícita o región %" -#: omp-low.c:2754 +#: omp-low.c:2782 #, gcc-internal-format msgid "% region may not be closely nested inside of work-sharing, explicit % or % region" msgstr "la región % puede no estar bien anidada dentro de la región de trabajo compartido, de % explícita o de región %" -#: omp-low.c:2778 omp-low.c:2917 +#: omp-low.c:2806 omp-low.c:2945 #, gcc-internal-format msgid "% is only allowed in %" msgstr "% solo se permite en %" -#: omp-low.c:2806 +#: omp-low.c:2834 #, gcc-internal-format msgid "% construct with % clause must be closely nested inside an % loop" msgstr "la construcción % con la cláusula % debe estar bien anidada dentro de un bucle %" -#: omp-low.c:2823 +#: omp-low.c:2851 #, gcc-internal-format msgid "invalid depend kind in omp % %" msgstr "" -#: omp-low.c:2838 +#: omp-low.c:2866 #, gcc-internal-format msgid "% % must be closely nested inside % region" msgstr "% % debe estar bien anidada dentro de una región %" -#: omp-low.c:2851 +#: omp-low.c:2879 #, gcc-internal-format msgid "% region may not be closely nested inside of %, %, explicit % or % region" msgstr "la región % puede no estar bien anidada dentro de la región %, %, explicit % o %" -#: omp-low.c:2862 omp-low.c:2875 +#: omp-low.c:2890 omp-low.c:2903 #, gcc-internal-format msgid "% region must be closely nested inside a loop region with an % clause" msgstr "la región % debe estar bien anidada dentro de una región de bucle con una cláusula %" -#: omp-low.c:2892 +#: omp-low.c:2920 #, gcc-internal-format msgid "% region may not be nested inside a % region with the same name" msgstr "la región % puede no estar bien anidada dentro de una región % con el mismo nombre" -#: omp-low.c:2904 +#: omp-low.c:2932 #, gcc-internal-format msgid "% construct not closely nested inside of % construct" msgstr "construcción % no bien anidada dentro de construcción %" -#: omp-low.c:2925 +#: omp-low.c:2953 #, gcc-internal-format msgid "OpenACC region inside of OpenACC routine, nested parallelism not supported yet" msgstr "región OpenACC dentro de rutina OpenACC; el paralelismo anidado aún no se permite" -#: omp-low.c:2938 +#: omp-low.c:2966 #, gcc-internal-format msgid "OpenACC construct inside of non-OpenACC region" msgstr "construcción OpenACC dentro de región no OpenACC" -#: omp-low.c:2983 +#: omp-low.c:3011 #, gcc-internal-format msgid "%s %qs construct inside of %s %qs region" msgstr "construcción %s %qs dentro de región %s %qs" -#: omp-low.c:2996 omp-low.c:3003 +#: omp-low.c:3024 omp-low.c:3031 #, gcc-internal-format msgid "%qs construct inside of %qs region" msgstr "construcción %qs dentro de región %qs" -#: omp-low.c:3115 +#: omp-low.c:3143 #, gcc-internal-format msgid "setjmp/longjmp inside simd construct" msgstr "setjmp/longjmp dentro de construcción simd" -#: omp-low.c:6341 +#: omp-low.c:6379 #, gcc-internal-format msgid "ignoring sink clause with offset that is not a multiple of the loop step" msgstr "se hace caso omiso de cláusula sumidero con desplazamiento que no es múltiplo del paso del bucle" -#: omp-low.c:6364 +#: omp-low.c:6402 #, gcc-internal-format msgid "first offset must be in opposite direction of loop iterations" msgstr "el primer desplazamiento debe estar en dirección opuesta a las iteraciones del bucle" -#: omp-low.c:9087 +#: omp-low.c:9125 #, gcc-internal-format, gfc-internal-format msgid "invalid exit from %s structured block" msgstr "salida no válida de un bloque estructurado %s" -#: omp-low.c:9089 omp-low.c:9094 +#: omp-low.c:9127 omp-low.c:9132 #, gcc-internal-format, gfc-internal-format msgid "invalid entry to %s structured block" msgstr "entrada no válida a un bloque estructurado %s" #. Otherwise, be vague and lazy, but efficient. -#: omp-low.c:9098 +#: omp-low.c:9136 #, gcc-internal-format, gfc-internal-format msgid "invalid branch to/from %s structured block" msgstr "ramificación no válida desde/para un bloque estructurado %s" @@ -19485,7 +19519,7 @@ msgid "command line option %qs is not supported by this configuration" msgstr "la opción de línea de órdenes %qs no se admite en esta configuración" -#: opts-common.c:1129 opts.c:1773 +#: opts-common.c:1129 opts.c:1780 #, gcc-internal-format msgid "missing argument to %qs" msgstr "faltan argumentos para %qs" @@ -19641,127 +19675,139 @@ msgid "-fsanitize-address-use-after-scope requires -fstack-reuse=none option" msgstr "-fsanitize-address-use-after-scope requiere -fstack-reuse=none option" -#: opts.c:1410 +#: opts.c:1012 +#, fuzzy, gcc-internal-format +#| msgid "transactional memory is not supported with non-call exceptions" +msgid "transactional memory is not supported with %<-fsanitize=address%>" +msgstr "la memoria transaccional no se admite con excepciones que no son llamada" + +#: opts.c:1015 +#, fuzzy, gcc-internal-format +#| msgid "transactional memory is not supported with non-call exceptions" +msgid "transactional memory is not supported with %<-fsanitize=kernel-address%>" +msgstr "la memoria transaccional no se admite con excepciones que no son llamada" + +#: opts.c:1417 #, gcc-internal-format msgid "unrecognized include_flags 0x%x passed to print_specific_help" msgstr "no se reconocen las include_flags 0x%x pasadas a print_specific_help" -#: opts.c:1610 +#: opts.c:1617 #, gcc-internal-format msgid "-fsanitize=all option is not valid" msgstr "la opción -fsanitize=all no es válida" -#: opts.c:1642 +#: opts.c:1649 #, gcc-internal-format msgid "unrecognized argument to -f%ssanitize%s= option: %q.*s; did you mean %qs?" msgstr "no se reconoce el argumento para la opción -f%ssanitize%s=: %q.*s; ¿quiso decir %qs?" -#: opts.c:1649 +#: opts.c:1656 #, gcc-internal-format msgid "unrecognized argument to -f%ssanitize%s= option: %q.*s" msgstr "no se reconoce el argumento para la opción -f%ssanitize%s=: %q.*s" -#: opts.c:1828 +#: opts.c:1835 #, gcc-internal-format msgid "--help argument %q.*s is ambiguous, please be more specific" msgstr "el argumento %q.*s de --help es ambiguo, por favor sea más específico" -#: opts.c:1837 +#: opts.c:1844 #, gcc-internal-format msgid "unrecognized argument to --help= option: %q.*s" msgstr "no se reconoce el argumento para la opción --help=: %q.*s" -#: opts.c:2078 +#: opts.c:2085 #, gcc-internal-format msgid "HSA has not been enabled during configuration" msgstr "HSA no se activó durante la configuración" -#: opts.c:2090 +#: opts.c:2097 #, gcc-internal-format msgid "-foffload-abi option can be specified only for offload compiler" msgstr "la opción -foffload-abi solo puede especificarse para compilador de descarga" -#: opts.c:2098 +#: opts.c:2105 #, gcc-internal-format, gfc-internal-format msgid "structure alignment must be a small power of two, not %d" msgstr "la alineación de la estructura debe ser una potencia pequeña de dos, no %d" -#: opts.c:2217 +#: opts.c:2224 #, gcc-internal-format msgid "unknown stack check parameter %qs" msgstr "parámetro de revisión de pila desconocido %qs" -#: opts.c:2249 +#: opts.c:2256 #, gcc-internal-format msgid "%<-gdwarf%s%> is ambiguous; use %<-gdwarf-%s%> for DWARF version or %<-gdwarf -g%s%> for debug level" msgstr "%<-gdwarf%s%> es ambiguo; use %<-gdwarf-%s%> para la versión DWARF o %<-gdwarf -g%s%> para nivel de depuración" -#: opts.c:2260 +#: opts.c:2267 #, gcc-internal-format, gfc-internal-format msgid "dwarf version %d is not supported" msgstr "no se admite dwarf versión %d" -#: opts.c:2360 +#: opts.c:2367 #, gcc-internal-format, gfc-internal-format msgid "%s: --param arguments should be of the form NAME=VALUE" msgstr "%s: los argumentos --param deben ser de la forma NOMBRE=VALOR" -#: opts.c:2371 +#: opts.c:2378 #, gcc-internal-format msgid "invalid --param name %qs; did you mean %qs?" msgstr "nombre de --param %qs no válido; ¿quiso decir %qs?" -#: opts.c:2374 +#: opts.c:2381 #, gcc-internal-format msgid "invalid --param name %qs" msgstr "nombre de --param %qs no válido" -#: opts.c:2382 +#: opts.c:2389 #, gcc-internal-format msgid "invalid --param value %qs" msgstr "valor de --param %qs no válido" -#: opts.c:2504 +#: opts.c:2511 #, gcc-internal-format msgid "target system does not support debug output" msgstr "el sistema objetivo no admite salida de depuración" -#: opts.c:2513 +#: opts.c:2520 #, gcc-internal-format msgid "debug format %qs conflicts with prior selection" msgstr "el formato de depuración %qs genera un conflicto con una selección previa" -#: opts.c:2531 +#: opts.c:2538 #, gcc-internal-format msgid "unrecognized debug output level %qs" msgstr "no se reconoce el nivel de salida de depuración %qs" -#: opts.c:2533 +#: opts.c:2540 #, gcc-internal-format msgid "debug output level %qs is too high" msgstr "el nivel de salida de depuración %qs es demasiado elevado" -#: opts.c:2553 +#: opts.c:2560 #, gcc-internal-format msgid "getting core file size maximum limit: %m" msgstr "obteniendo el límite del tamaño máximo del fichero core: %m" -#: opts.c:2557 +#: opts.c:2564 #, gcc-internal-format msgid "setting core file size limit to maximum: %m" msgstr "estableciendo el límite del tamaño máximo del fichero core: %m" -#: opts.c:2602 +#: opts.c:2609 #, gcc-internal-format, gfc-internal-format msgid "unrecognized gcc debugging option: %c" msgstr "no se reconoce la opción de depuración de gcc: %c" -#: opts.c:2627 +#: opts.c:2634 #, gcc-internal-format, gfc-internal-format msgid "-Werror=%s: no option -%s" msgstr "-Werror=%s: no existe la opción -%s" -#: opts.c:2629 +#: opts.c:2636 #, gcc-internal-format, gfc-internal-format msgid "-Werror=%s: -%s is not an option that controls warnings" msgstr "-Werror=%s: -%s no es una opción para controlar avisos" @@ -20107,7 +20153,7 @@ msgid "register of %qD used for multiple global register variables" msgstr "se usó el registro de %qD para múltiples variables de registro globales" -#: reginfo.c:789 config/rs6000/rs6000.c:31768 +#: reginfo.c:789 config/rs6000/rs6000.c:31817 #, gcc-internal-format msgid "conflicts with %qD" msgstr "genera un conflicto con %qD" @@ -20709,12 +20755,12 @@ msgid "error closing %s: %m" msgstr "error al cerrar %s: %m" -#: toplev.c:2054 +#: toplev.c:2057 #, gcc-internal-format msgid "self-tests incompatible with -E" msgstr "self-tests es incompatible con -E" -#: toplev.c:2069 +#: toplev.c:2072 #, gcc-internal-format msgid "self-tests are not enabled in this build" msgstr "self-tests no están activadas en este build" @@ -21625,47 +21671,47 @@ msgid "in expansion of macro %qs" msgstr "en expansión de macro %qs" -#: tree-eh.c:4669 +#: tree-eh.c:4684 #, gcc-internal-format, gfc-internal-format msgid "BB %i has multiple EH edges" msgstr "el BB %i tiene múltiples bordes EH" -#: tree-eh.c:4681 +#: tree-eh.c:4696 #, gcc-internal-format, gfc-internal-format msgid "BB %i can not throw but has an EH edge" msgstr "el BB %i no puede hacer throw pero tiene un borde EH" -#: tree-eh.c:4689 +#: tree-eh.c:4704 #, gcc-internal-format, gfc-internal-format msgid "BB %i last statement has incorrectly set lp" msgstr "la última sentencia del BB %i tiene establecido incorrectamente lp" -#: tree-eh.c:4695 +#: tree-eh.c:4710 #, gcc-internal-format, gfc-internal-format msgid "BB %i is missing an EH edge" msgstr "al BB %i le falta un borde EH" -#: tree-eh.c:4701 +#: tree-eh.c:4716 #, gcc-internal-format, gfc-internal-format msgid "Incorrect EH edge %i->%i" msgstr "Borde EH %i->%i incorrecto" -#: tree-eh.c:4735 tree-eh.c:4754 +#: tree-eh.c:4750 tree-eh.c:4769 #, gcc-internal-format, gfc-internal-format msgid "BB %i is missing an edge" msgstr "al BB %i le falta un borde" -#: tree-eh.c:4771 +#: tree-eh.c:4786 #, gcc-internal-format, gfc-internal-format msgid "BB %i too many fallthru edges" msgstr "BB %i demasiados bordes de respaldo" -#: tree-eh.c:4780 +#: tree-eh.c:4795 #, gcc-internal-format, gfc-internal-format msgid "BB %i has incorrect edge" msgstr "BB %i tiene un borde incorrecto" -#: tree-eh.c:4786 +#: tree-eh.c:4801 #, gcc-internal-format, gfc-internal-format msgid "BB %i has incorrect fallthru edge" msgstr "BB %i tiene un borde de respaldo incorrecto" @@ -21766,32 +21812,32 @@ msgid "target does not support atomic profile update, single mode is selected" msgstr "el objetivo no admite actualización de perfil atómica; se selecciona el modo sencillo" -#: tree-ssa-ccp.c:3422 +#: tree-ssa-ccp.c:3420 #, gcc-internal-format, gfc-internal-format msgid "argument %u null where non-null expected" msgstr "argumento %u nulo donde se esperaba no nulo" -#: tree-ssa-ccp.c:3427 +#: tree-ssa-ccp.c:3425 #, gcc-internal-format msgid "in a call to built-in function %qD" msgstr "en una llamada a la función interna %qD" -#: tree-ssa-ccp.c:3431 +#: tree-ssa-ccp.c:3429 #, gcc-internal-format msgid "in a call to function %qD declared here" msgstr "en una llamada a la función %qD declarada aquí" -#: tree-ssa-loop-niter.c:2367 +#: tree-ssa-loop-niter.c:2416 #, gcc-internal-format msgid "missed loop optimization, the loop counter may overflow" msgstr "faltó optimizar el bucle, el contador de bucles se puede desbordar" -#: tree-ssa-loop-niter.c:2964 +#: tree-ssa-loop-niter.c:3013 #, gcc-internal-format, gfc-internal-format msgid "iteration %s invokes undefined behavior" msgstr "la iteración %s invoca comportamiento indefinido" -#: tree-ssa-loop-niter.c:2965 +#: tree-ssa-loop-niter.c:3014 #, gcc-internal-format msgid "within this loop" msgstr "dentro de este bucle" @@ -22145,11 +22191,11 @@ #: c-family/c-attribs.c:2898 c-family/c-attribs.c:2937 #: c-family/c-attribs.c:3019 c-family/c-attribs.c:3062 #: c-family/c-attribs.c:3078 c-family/c-attribs.c:3172 -#: c-family/c-common.c:5631 config/darwin.c:2062 config/arm/arm.c:6741 -#: config/arm/arm.c:6769 config/arm/arm.c:6786 config/avr/avr.c:9460 -#: config/h8300/h8300.c:5480 config/h8300/h8300.c:5504 config/i386/i386.c:7715 -#: config/i386/i386.c:41425 config/ia64/ia64.c:762 -#: config/rs6000/rs6000.c:35369 config/spu/spu.c:3741 +#: c-family/c-common.c:5631 config/darwin.c:2062 config/arm/arm.c:6719 +#: config/arm/arm.c:6747 config/arm/arm.c:6764 config/avr/avr.c:9475 +#: config/h8300/h8300.c:5480 config/h8300/h8300.c:5504 config/i386/i386.c:7721 +#: config/i386/i386.c:41466 config/ia64/ia64.c:762 +#: config/rs6000/rs6000.c:35418 config/spu/spu.c:3741 #: ada/gcc-interface/utils.c:6124 ada/gcc-interface/utils.c:6141 #: ada/gcc-interface/utils.c:6157 ada/gcc-interface/utils.c:6183 #: lto/lto-lang.c:241 @@ -23116,7 +23162,7 @@ msgid "type was previously declared %qE" msgstr "el tipo se declaró previamente %qE" -#: c-family/c-attribs.c:2524 cp/class.c:4715 +#: c-family/c-attribs.c:2524 cp/class.c:4717 #, gcc-internal-format msgid "% may only be specified for a virtual function" msgstr "% solo se puede especificar para funciones virtuales" @@ -23391,7 +23437,7 @@ msgid "the compiler can assume that the address of %qD will always evaluate to %" msgstr "el compilador puede asumir que la dirección de %qD siempre se evaluará como %" -#: c-family/c-common.c:3427 cp/semantics.c:660 cp/typeck.c:8608 +#: c-family/c-common.c:3427 cp/semantics.c:660 cp/typeck.c:8609 #, gcc-internal-format msgid "suggest parentheses around assignment used as truth value" msgstr "se sugieren paréntesis alrededor de la asignación usada como valor verdadero" @@ -24010,62 +24056,62 @@ msgid "extra type qualifiers in format argument (argument %d)" msgstr "calificadores de tipo extra en el argumento de formato (argumento %d)" -#: c-family/c-format.c:3469 +#: c-family/c-format.c:3475 #, gcc-internal-format msgid "%s %<%s%.*s%> expects argument of type %<%s%s%>, but argument %d has type %qT" msgstr "%s %<%s%.*s%> espera un argumento de tipo %<%s%s%>, pero el argumento %d es de tipo %qT" -#: c-family/c-format.c:3479 +#: c-family/c-format.c:3485 #, gcc-internal-format msgid "%s %<%s%.*s%> expects a matching %<%s%s%> argument" msgstr "%s %<%s%.*s%> espera un argumento %<%s%s%> coincidente" -#: c-family/c-format.c:3490 +#: c-family/c-format.c:3496 #, gcc-internal-format msgid "%s %<%s%.*s%> expects argument of type %<%T%s%>, but argument %d has type %qT" msgstr "%s %<%s%.*s%> espera un argumento de tipo %<%T%s%>, pero el argumento %d es de tipo %qT" -#: c-family/c-format.c:3500 +#: c-family/c-format.c:3506 #, gcc-internal-format msgid "%s %<%s%.*s%> expects a matching %<%T%s%> argument" msgstr "%s %<%s%.*s%> espera un argumento %<%T%s%> coincidente" -#: c-family/c-format.c:3562 c-family/c-format.c:3568 c-family/c-format.c:3719 +#: c-family/c-format.c:3568 c-family/c-format.c:3574 c-family/c-format.c:3725 #, gcc-internal-format msgid "%<__gcc_host_wide_int__%> is not defined as a type" msgstr "%<__gcc_host_wide_int__%> no se define como un tipo" -#: c-family/c-format.c:3575 c-family/c-format.c:3729 +#: c-family/c-format.c:3581 c-family/c-format.c:3735 #, gcc-internal-format msgid "%<__gcc_host_wide_int__%> is not defined as % or %" msgstr "%<__gcc_host_wide_int__%> no se define como % o %" -#: c-family/c-format.c:3625 +#: c-family/c-format.c:3631 #, gcc-internal-format msgid "% is not defined as a type" msgstr "% no se define como un tipo" -#: c-family/c-format.c:3678 +#: c-family/c-format.c:3684 #, gcc-internal-format msgid "% is not defined as a type" msgstr "% no se define como un tipo" -#: c-family/c-format.c:3695 +#: c-family/c-format.c:3701 #, gcc-internal-format msgid "% is not defined as a type" msgstr "% no se define como un tipo" -#: c-family/c-format.c:3700 +#: c-family/c-format.c:3706 #, gcc-internal-format msgid "% is not defined as a pointer type" msgstr "% no se define como un tipo puntero" -#: c-family/c-format.c:3973 +#: c-family/c-format.c:3979 #, gcc-internal-format msgid "args to be formatted is not %<...%>" msgstr "los argumentos que recibirán formato no son %<...%>" -#: c-family/c-format.c:3985 +#: c-family/c-format.c:3991 #, gcc-internal-format msgid "strftime formats cannot format arguments" msgstr "los formatos de strftime no pueden dar formato a los argumentos" @@ -24166,7 +24212,7 @@ msgid "repeated %<@%> before Objective-C string" msgstr "%<@%> repetida antes de la cadena Objective-C" -#: c-family/c-lex.c:1191 cp/parser.c:3974 +#: c-family/c-lex.c:1191 cp/parser.c:3976 #, gcc-internal-format msgid "unsupported non-standard concatenation of string literals" msgstr "no se admite la concatenación no estándar de literales de cadena" @@ -24196,7 +24242,7 @@ msgid "%<#pragma omp atomic capture%> uses two different variables for memory" msgstr "%<#pragma omp atomic capture%> usa dos variables diferentes para la memoria" -#: c-family/c-omp.c:485 cp/semantics.c:8196 +#: c-family/c-omp.c:485 cp/semantics.c:8209 #, gcc-internal-format msgid "invalid type for iteration variable %qE" msgstr "tipo no válido para la variable de iteración %qE" @@ -24211,22 +24257,22 @@ msgid "%qE is not initialized" msgstr "%qE no está inicializado" -#: c-family/c-omp.c:527 cp/semantics.c:8084 +#: c-family/c-omp.c:527 cp/semantics.c:8097 #, gcc-internal-format msgid "missing controlling predicate" msgstr "falta el predicado controlador" -#: c-family/c-omp.c:612 cp/semantics.c:7740 +#: c-family/c-omp.c:612 cp/semantics.c:7753 #, gcc-internal-format msgid "invalid controlling predicate" msgstr "predicado controlador no válido" -#: c-family/c-omp.c:619 cp/semantics.c:8090 +#: c-family/c-omp.c:619 cp/semantics.c:8103 #, gcc-internal-format msgid "missing increment expression" msgstr "falta la expresión de incremento" -#: c-family/c-omp.c:683 cp/semantics.c:7855 +#: c-family/c-omp.c:683 cp/semantics.c:7868 #, gcc-internal-format msgid "invalid increment expression" msgstr "expresión de incremento no válida" @@ -24771,8 +24817,8 @@ msgid "wrong type argument to %s" msgstr "argumento de tipo erróneo para %s" -#: c-family/c-warn.c:49 c-family/c-warn.c:62 cp/constexpr.c:1757 -#: cp/constexpr.c:3911 +#: c-family/c-warn.c:49 c-family/c-warn.c:62 cp/constexpr.c:1773 +#: cp/constexpr.c:3935 #, gcc-internal-format msgid "overflow in constant expression" msgstr "desbordamiento en la expresión constante" @@ -25449,7 +25495,7 @@ msgid "this condition has identical branches" msgstr "esta condición tiene bifurcaciones idénticas" -#: c-family/cilk.c:93 cp/parser.c:6570 +#: c-family/cilk.c:93 cp/parser.c:6575 #, gcc-internal-format msgid "%<_Cilk_spawn%> may only be used inside a function" msgstr "%<_Cilk_spawn%> sólo se puede usar dentro de una función" @@ -25611,7 +25657,7 @@ msgid "-march=%s: unsupported ISA substring %qs" msgstr "-march=%s: subcadena ISA %qs no válida" -#: common/config/rs6000/rs6000-common.c:174 config/sparc/sparc.c:1371 +#: common/config/rs6000/rs6000-common.c:174 config/sparc/sparc.c:1482 #, gcc-internal-format, gfc-internal-format msgid "unknown -mdebug-%s switch" msgstr "interruptor -mdebug-%s desconocido" @@ -25938,7 +25984,7 @@ msgid "%Kargument %d must be a constant immediate" msgstr "el %Kargumento %d debe ser un inmediato constante" -#: config/aarch64/aarch64-builtins.c:1160 config/arm/arm-builtins.c:2471 +#: config/aarch64/aarch64-builtins.c:1160 config/arm/arm-builtins.c:2476 #, gcc-internal-format msgid "%Klane index must be a constant immediate" msgstr "el índice %Klane debe ser un inmediato constante" @@ -26025,7 +26071,7 @@ msgid "unknown value %qs for -mtune" msgstr "valor %qs desconocido para -mtune" -#: config/aarch64/aarch64.c:8929 config/arm/arm.c:3094 +#: config/aarch64/aarch64.c:8929 config/arm/arm.c:3072 #, gcc-internal-format, gfc-internal-format msgid "switch -mcpu=%s conflicts with -march=%s switch" msgstr "la opción -mcpu=%s genera un conflicto con la opción -march=%s" @@ -26112,9 +26158,9 @@ msgid "target %s %s=%s is not valid" msgstr "el objetivo %s %s=%s no es válido" -#: config/aarch64/aarch64.c:9544 config/arm/arm.c:30411 -#: config/i386/i386.c:6772 config/rs6000/rs6000.c:39283 -#: config/s390/s390.c:15017 +#: config/aarch64/aarch64.c:9544 config/arm/arm.c:30400 +#: config/i386/i386.c:6778 config/rs6000/rs6000.c:39332 +#: config/s390/s390.c:15024 #, fuzzy, gcc-internal-format #| msgid "attribute %qE argument not a string" msgid "attribute % argument not a string" @@ -26202,7 +26248,7 @@ msgstr "valor %qs erróneo para -mmemory-latency" #: config/alpha/alpha.c:6663 config/alpha/alpha.c:6666 config/arc/arc.c:5816 -#: config/arc/arc.c:6095 config/s390/s390.c:873 config/tilegx/tilegx.c:3542 +#: config/arc/arc.c:6095 config/s390/s390.c:876 config/tilegx/tilegx.c:3542 #: config/tilepro/tilepro.c:3106 #, gcc-internal-format msgid "bad builtin fcode" @@ -26379,235 +26425,235 @@ msgid "insn addresses not freed" msgstr "direcciones de insn no liberadas" -#: config/arm/arm-builtins.c:2349 +#: config/arm/arm-builtins.c:2354 #, fuzzy, gcc-internal-format #| msgid "nested functions not supported on this target" msgid "this builtin is not supported for this target" msgstr "no se admiten funciones anidadas en este objetivo" -#: config/arm/arm-builtins.c:2454 +#: config/arm/arm-builtins.c:2459 #, gcc-internal-format msgid "You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use these intrinsics." msgstr "Debe activar las instrucciones NEON (e.g. -mfloat-abi=softfp -mfpu=neon) para usar estos intrínsecos." -#: config/arm/arm-builtins.c:2492 +#: config/arm/arm-builtins.c:2497 #, gcc-internal-format msgid "You must enable VFP instructions to use these intrinsics." msgstr "Debe activar las instrucciones VFP para usar estos intrínsecos." -#: config/arm/arm-builtins.c:2552 +#: config/arm/arm-builtins.c:2557 #, gcc-internal-format msgid "You must enable crypto instructions (e.g. include -mfloat-abi=softfp -mfpu=crypto-neon...) to use these intrinsics." msgstr "Debe activar las instrucciones crypto (e.g. include -mfloat-abi=softfp -mfpu=crypto-neon...) para usar estos intrínsecos." #. @@@ better error message -#: config/arm/arm-builtins.c:2610 config/arm/arm-builtins.c:2714 +#: config/arm/arm-builtins.c:2615 config/arm/arm-builtins.c:2719 #, gcc-internal-format msgid "selector must be an immediate" msgstr "el selector debe ser un inmediato" -#: config/arm/arm-builtins.c:2618 config/arm/arm-builtins.c:2663 -#: config/arm/arm-builtins.c:2721 config/arm/arm-builtins.c:2730 +#: config/arm/arm-builtins.c:2623 config/arm/arm-builtins.c:2668 +#: config/arm/arm-builtins.c:2726 config/arm/arm-builtins.c:2735 #, gcc-internal-format msgid "the range of selector should be in 0 to 7" msgstr "el rango del selector debe estar entre 0 y 7" -#: config/arm/arm-builtins.c:2623 config/arm/arm-builtins.c:2732 +#: config/arm/arm-builtins.c:2628 config/arm/arm-builtins.c:2737 #, gcc-internal-format msgid "the range of selector should be in 0 to 3" msgstr "el rango del selector debe estar entre 0 y 3" -#: config/arm/arm-builtins.c:2628 config/arm/arm-builtins.c:2734 +#: config/arm/arm-builtins.c:2633 config/arm/arm-builtins.c:2739 #, gcc-internal-format msgid "the range of selector should be in 0 to 1" msgstr "el rango del selector debe estar entre 0 y 1" -#: config/arm/arm-builtins.c:2800 +#: config/arm/arm-builtins.c:2805 #, gcc-internal-format msgid "mask must be an immediate" msgstr "la máscara debe ser un inmediato" -#: config/arm/arm-builtins.c:2805 +#: config/arm/arm-builtins.c:2810 #, gcc-internal-format msgid "the range of mask should be in 0 to 255" msgstr "el rango de la máscara debe estar entre 0 y 255" -#: config/arm/arm-builtins.c:2993 +#: config/arm/arm-builtins.c:2998 #, gcc-internal-format msgid "the range of count should be in 0 to 32. please check the intrinsic _mm_rori_pi16 in code." msgstr "" -#: config/arm/arm-builtins.c:2995 +#: config/arm/arm-builtins.c:3000 #, gcc-internal-format msgid "the range of count should be in 0 to 32. please check the intrinsic _mm_rori_pi32 in code." msgstr "" -#: config/arm/arm-builtins.c:2997 +#: config/arm/arm-builtins.c:3002 #, gcc-internal-format msgid "the range of count should be in 0 to 32. please check the intrinsic _mm_ror_pi16 in code." msgstr "" -#: config/arm/arm-builtins.c:2999 +#: config/arm/arm-builtins.c:3004 #, gcc-internal-format msgid "the range of count should be in 0 to 32. please check the intrinsic _mm_ror_pi32 in code." msgstr "" -#: config/arm/arm-builtins.c:3005 +#: config/arm/arm-builtins.c:3010 #, gcc-internal-format msgid "the range of count should be in 0 to 64. please check the intrinsic _mm_rori_si64 in code." msgstr "" -#: config/arm/arm-builtins.c:3007 +#: config/arm/arm-builtins.c:3012 #, gcc-internal-format msgid "the range of count should be in 0 to 64. please check the intrinsic _mm_ror_si64 in code." msgstr "" -#: config/arm/arm-builtins.c:3012 +#: config/arm/arm-builtins.c:3017 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_srli_pi16 in code." msgstr "" -#: config/arm/arm-builtins.c:3014 +#: config/arm/arm-builtins.c:3019 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_srli_pi32 in code." msgstr "" -#: config/arm/arm-builtins.c:3016 +#: config/arm/arm-builtins.c:3021 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_srli_si64 in code." msgstr "" -#: config/arm/arm-builtins.c:3018 +#: config/arm/arm-builtins.c:3023 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_slli_pi16 in code." msgstr "" -#: config/arm/arm-builtins.c:3020 +#: config/arm/arm-builtins.c:3025 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_slli_pi32 in code." msgstr "" -#: config/arm/arm-builtins.c:3022 +#: config/arm/arm-builtins.c:3027 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_slli_si64 in code." msgstr "" -#: config/arm/arm-builtins.c:3024 +#: config/arm/arm-builtins.c:3029 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_srai_pi16 in code." msgstr "" -#: config/arm/arm-builtins.c:3026 +#: config/arm/arm-builtins.c:3031 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_srai_pi32 in code." msgstr "" -#: config/arm/arm-builtins.c:3028 +#: config/arm/arm-builtins.c:3033 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_srai_si64 in code." msgstr "" -#: config/arm/arm-builtins.c:3030 +#: config/arm/arm-builtins.c:3035 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_srl_pi16 in code." msgstr "" -#: config/arm/arm-builtins.c:3032 +#: config/arm/arm-builtins.c:3037 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_srl_pi32 in code." msgstr "" -#: config/arm/arm-builtins.c:3034 +#: config/arm/arm-builtins.c:3039 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_srl_si64 in code." msgstr "" -#: config/arm/arm-builtins.c:3036 +#: config/arm/arm-builtins.c:3041 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_sll_pi16 in code." msgstr "" -#: config/arm/arm-builtins.c:3038 +#: config/arm/arm-builtins.c:3043 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_sll_pi32 in code." msgstr "" -#: config/arm/arm-builtins.c:3040 +#: config/arm/arm-builtins.c:3045 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_sll_si64 in code." msgstr "" -#: config/arm/arm-builtins.c:3042 +#: config/arm/arm-builtins.c:3047 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_sra_pi16 in code." msgstr "" -#: config/arm/arm-builtins.c:3044 +#: config/arm/arm-builtins.c:3049 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_sra_pi32 in code." msgstr "" -#: config/arm/arm-builtins.c:3046 +#: config/arm/arm-builtins.c:3051 #, gcc-internal-format msgid "the count should be no less than 0. please check the intrinsic _mm_sra_si64 in code." msgstr "" -#: config/arm/arm.c:2800 +#: config/arm/arm.c:2778 #, gcc-internal-format msgid "iWMMXt and NEON are incompatible" msgstr "iWMMXt y NEON son incompatibles" -#: config/arm/arm.c:2806 +#: config/arm/arm.c:2784 #, gcc-internal-format msgid "target CPU does not support ARM mode" msgstr "el CPU objetivo no tiene soporte para el modo ARM" -#: config/arm/arm.c:2810 +#: config/arm/arm.c:2788 #, gcc-internal-format msgid "enabling backtrace support is only meaningful when compiling for the Thumb" msgstr "habilitar el soporte de rastreo hacia atrás sólo tiene significado cuando se compila para el Thumb" -#: config/arm/arm.c:2813 +#: config/arm/arm.c:2791 #, gcc-internal-format msgid "enabling callee interworking support is only meaningful when compiling for the Thumb" msgstr "habilitar el soporte de trabajo interno de llamado sólo tiene significado cuando se compila para el Thumb" -#: config/arm/arm.c:2821 +#: config/arm/arm.c:2799 #, gcc-internal-format msgid "-g with -mno-apcs-frame may not give sensible debugging" msgstr "-g con -mno-apcs-frame no permite una depuración sensible" -#: config/arm/arm.c:2825 +#: config/arm/arm.c:2803 #, gcc-internal-format msgid "iWMMXt unsupported under Thumb mode" msgstr "" -#: config/arm/arm.c:2828 +#: config/arm/arm.c:2806 #, gcc-internal-format msgid "can not use -mtp=cp15 with 16-bit Thumb" msgstr "no se puede usar -mtp=cp15 con Thumb de 16-bit" -#: config/arm/arm.c:2832 +#: config/arm/arm.c:2810 #, gcc-internal-format msgid "RTP PIC is incompatible with Thumb" msgstr "El PIC de RTP es incompatible con Thumb" -#: config/arm/arm.c:2840 +#: config/arm/arm.c:2818 #, gcc-internal-format msgid "-mslow-flash-data only supports non-pic code on armv7-m targets" msgstr "" -#: config/arm/arm.c:2845 +#: config/arm/arm.c:2823 #, gcc-internal-format msgid "-mpure-code only supports non-pic code on armv7-m targets" msgstr "-mpure-code solo admite código no pic en los objetivos armv7-m" -#: config/arm/arm.c:2948 +#: config/arm/arm.c:2926 #, gcc-internal-format msgid "target CPU does not support THUMB instructions" msgstr "el CPU objetivo no admite las instrucciones THUMB" -#: config/arm/arm.c:2993 +#: config/arm/arm.c:2971 #, gcc-internal-format msgid "target CPU does not support unaligned accesses" msgstr "el CPU objetivo no admite accesos sin alinear" @@ -26614,141 +26660,141 @@ #. To support this we need to be able to parse FPU feature options #. from the architecture string. -#: config/arm/arm.c:3247 +#: config/arm/arm.c:3225 #, gcc-internal-format msgid "-mfpu=auto not currently supported without an explicit CPU." msgstr "-mfpu=auto no se admite actualmente sin una CPU explícita." -#: config/arm/arm.c:3322 +#: config/arm/arm.c:3300 #, gcc-internal-format msgid "target CPU does not support interworking" msgstr "el CPU objetivo no admite trabajo interno" -#: config/arm/arm.c:3328 +#: config/arm/arm.c:3306 #, gcc-internal-format msgid "-mapcs-stack-check incompatible with -mno-apcs-frame" msgstr "-mapcs-stack-check es incompatible con -mno-apcs-frame" -#: config/arm/arm.c:3336 +#: config/arm/arm.c:3314 #, gcc-internal-format msgid "-fpic and -mapcs-reent are incompatible" msgstr "-fpic y -mapcs-reent son incompatibles" -#: config/arm/arm.c:3339 +#: config/arm/arm.c:3317 #, gcc-internal-format msgid "APCS reentrant code not supported. Ignored" msgstr "no se admite el código reentrante APCS. Descartado" -#: config/arm/arm.c:3373 +#: config/arm/arm.c:3351 #, gcc-internal-format msgid "selected fp16 options are incompatible" msgstr "las opciones fp16 seleccionadas son incompatibles" -#: config/arm/arm.c:3404 +#: config/arm/arm.c:3382 #, gcc-internal-format msgid "iwmmxt requires an AAPCS compatible ABI for proper operation" msgstr "iwmmxt requiere una ABI compatible con AAPCS para una operación adecuada" -#: config/arm/arm.c:3407 +#: config/arm/arm.c:3385 #, gcc-internal-format msgid "iwmmxt abi requires an iwmmxt capable cpu" msgstr "el abi iwmmxt requiere un cpu capaz de iwmmxt" -#: config/arm/arm.c:3418 +#: config/arm/arm.c:3396 #, gcc-internal-format msgid "AAPCS does not support -mcaller-super-interworking" msgstr "AAPCS no admite -mcaller-super-interworking" -#: config/arm/arm.c:3421 +#: config/arm/arm.c:3399 #, gcc-internal-format msgid "AAPCS does not support -mcallee-super-interworking" msgstr "AAPCS no admite -mcallee-super-interworking" -#: config/arm/arm.c:3426 +#: config/arm/arm.c:3404 #, gcc-internal-format msgid "__fp16 and no ldrh" msgstr "__fp16 sin ldrh" -#: config/arm/arm.c:3437 +#: config/arm/arm.c:3415 #, gcc-internal-format msgid "-mfloat-abi=hard: selected processor lacks an FPU" msgstr "-mfloat-abi=hard: el procesador seleccionado carece de FPU" -#: config/arm/arm.c:3445 +#: config/arm/arm.c:3423 #, gcc-internal-format msgid "-mfloat-abi=hard and VFP" msgstr "-mfloat-abi=hard y VFP" -#: config/arm/arm.c:3481 +#: config/arm/arm.c:3459 #, gcc-internal-format msgid "structure size boundary can only be set to 8, 32 or 64" msgstr "el límite del tamaño de la estructura sólo se puede establecer a 8, 32 o 64" -#: config/arm/arm.c:3483 +#: config/arm/arm.c:3461 #, gcc-internal-format msgid "structure size boundary can only be set to 8 or 32" msgstr "el límite del tamaño de la estructura sólo se puede establecer a 8 o 32" -#: config/arm/arm.c:3508 +#: config/arm/arm.c:3486 #, gcc-internal-format msgid "RTP PIC is incompatible with -msingle-pic-base" msgstr "El PIC de RTP es incompatible con -msingle-pic-base" -#: config/arm/arm.c:3520 +#: config/arm/arm.c:3498 #, gcc-internal-format msgid "-mpic-register= is useless without -fpic" msgstr "-mpic-register= es inútil sin -fpic" -#: config/arm/arm.c:3529 +#: config/arm/arm.c:3507 #, gcc-internal-format, gfc-internal-format msgid "unable to use '%s' for PIC register" msgstr "no se puede usar '%s' para registro PIC" -#: config/arm/arm.c:3548 +#: config/arm/arm.c:3526 #, gcc-internal-format msgid "-freorder-blocks-and-partition not supported on this architecture" msgstr "no se admite -freorder-blocks-and-partition en esta arquitectura" -#: config/arm/arm.c:3639 +#: config/arm/arm.c:3617 #, gcc-internal-format msgid "target CPU does not support ARMv8-M Security Extensions" msgstr "la CPU objetivo no admite las instrucciones de seguridad ARMv8-M" -#: config/arm/arm.c:5707 +#: config/arm/arm.c:5685 #, gcc-internal-format msgid "non-AAPCS derived PCS variant" msgstr "variante PCS derivada de un no AAPCS" -#: config/arm/arm.c:5709 +#: config/arm/arm.c:5687 #, gcc-internal-format msgid "variadic functions must use the base AAPCS variant" msgstr "las funciones variadic debe usar la variante AAPCS base" -#: config/arm/arm.c:5728 +#: config/arm/arm.c:5706 #, gcc-internal-format msgid "PCS variant" msgstr "variante PCS" -#: config/arm/arm.c:5923 +#: config/arm/arm.c:5901 #, gcc-internal-format msgid "Thumb-1 hard-float VFP ABI" msgstr "ABI de VFP de coma flotante dura de Thumb-1" -#: config/arm/arm.c:6362 config/arm/arm.c:6565 config/arm/arm.c:6593 -#: config/arm/arm.c:26560 +#: config/arm/arm.c:6340 config/arm/arm.c:6543 config/arm/arm.c:6571 +#: config/arm/arm.c:26549 #, gcc-internal-format msgid "parameter passing for argument of type %qT changed in GCC 7.1" msgstr "el paso de parámetro para argumentos de tipo %qT ha cambiado en GCC 7.1" -#: config/arm/arm.c:6709 config/arm/arm.c:6727 config/arm/arm.c:6902 -#: config/avr/avr.c:9480 config/avr/avr.c:9496 config/bfin/bfin.c:4673 +#: config/arm/arm.c:6687 config/arm/arm.c:6705 config/arm/arm.c:6880 +#: config/avr/avr.c:9495 config/avr/avr.c:9511 config/bfin/bfin.c:4673 #: config/bfin/bfin.c:4734 config/bfin/bfin.c:4763 #: config/epiphany/epiphany.c:475 config/h8300/h8300.c:5456 -#: config/i386/i386.c:7670 config/i386/i386.c:13041 config/i386/i386.c:41329 -#: config/i386/i386.c:41379 config/i386/i386.c:41449 config/m68k/m68k.c:760 -#: config/mcore/mcore.c:3056 config/nvptx/nvptx.c:4278 config/rl78/rl78.c:781 -#: config/rs6000/rs6000.c:35295 config/rx/rx.c:2696 config/rx/rx.c:2722 -#: config/s390/s390.c:1082 config/sh/sh.c:8394 config/sh/sh.c:8412 +#: config/i386/i386.c:7676 config/i386/i386.c:13047 config/i386/i386.c:41370 +#: config/i386/i386.c:41420 config/i386/i386.c:41490 config/m68k/m68k.c:760 +#: config/mcore/mcore.c:3056 config/nvptx/nvptx.c:4294 config/rl78/rl78.c:781 +#: config/rs6000/rs6000.c:35344 config/rx/rx.c:2696 config/rx/rx.c:2722 +#: config/s390/s390.c:1085 config/sh/sh.c:8394 config/sh/sh.c:8412 #: config/sh/sh.c:8436 config/sh/sh.c:8507 config/sh/sh.c:8530 #: config/spu/spu.c:3683 config/stormy16/stormy16.c:2212 #: config/v850/v850.c:2083 config/visium/visium.c:705 @@ -26756,73 +26802,78 @@ msgid "%qE attribute only applies to functions" msgstr "el atributo %qE se aplica solamente a funciones" -#: config/arm/arm.c:6851 +#: config/arm/arm.c:6829 #, gcc-internal-format msgid "%qE attribute not available to functions with arguments passed on the stack" msgstr "el atributo %qE no está disponible para funciones con argumentos pasados en la pila" -#: config/arm/arm.c:6863 +#: config/arm/arm.c:6841 #, gcc-internal-format msgid "%qE attribute not available to functions with variable number of arguments" msgstr "el atributo %qE no está disponible para funciones con un número variable de argumentos" -#: config/arm/arm.c:6872 +#: config/arm/arm.c:6850 #, gcc-internal-format msgid "%qE attribute not available to functions that return value on the stack" msgstr "el atributo %qE no está disponible para funciones que devuelven valor en la pila" -#: config/arm/arm.c:6894 config/arm/arm.c:6946 +#: config/arm/arm.c:6872 config/arm/arm.c:6924 #, gcc-internal-format msgid "%qE attribute ignored without -mcmse option." msgstr "se descarta el atributo %qE sin la opción -mcmse." -#: config/arm/arm.c:6913 +#: config/arm/arm.c:6891 #, gcc-internal-format msgid "%qE attribute has no effect on functions with static linkage" msgstr "el atributo %qE no tiene efecto en funciones con enlazado estático" -#: config/arm/arm.c:6962 +#: config/arm/arm.c:6940 #, gcc-internal-format msgid "%qE attribute only applies to base type of a function pointer" msgstr "el atributo %qE se aplica solamente al tipo base de un puntero a función" -#: config/arm/arm.c:12245 +#: config/arm/arm.c:8656 #, gcc-internal-format +msgid "accessing thread-local storage is not currently supported with -mpure-code or -mslow-flash-data" +msgstr "" + +#: config/arm/arm.c:12232 +#, gcc-internal-format msgid "%K%s %wd out of range %wd - %wd" msgstr "%K%s %wd fuera de rango %wd - %wd" -#: config/arm/arm.c:12248 +#: config/arm/arm.c:12235 #, gcc-internal-format msgid "%s %wd out of range %wd - %wd" msgstr "%s %wd fuera de rango %wd - %wd" -#: config/arm/arm.c:23495 +#: config/arm/arm.c:23484 #, gcc-internal-format msgid "unable to compute real location of stacked parameter" msgstr "no se puede calcular la ubicación real del parámetro apilado" -#: config/arm/arm.c:24148 +#: config/arm/arm.c:24137 #, fuzzy, gcc-internal-format #| msgid "Unexpected end of module" msgid "Unexpected thumb1 far jump" msgstr "Fin de módulo inesperado" -#: config/arm/arm.c:24412 +#: config/arm/arm.c:24401 #, gcc-internal-format msgid "no low registers available for popping high registers" msgstr "no hay registros inferiores disponibles para extraer registros superiores" -#: config/arm/arm.c:24661 +#: config/arm/arm.c:24650 #, gcc-internal-format msgid "interrupt Service Routines cannot be coded in Thumb mode" msgstr "no se pueden codificar las Rutinas de Servicios de Interrupción en el modo Thumb" -#: config/arm/arm.c:24890 +#: config/arm/arm.c:24879 #, gcc-internal-format msgid "-fstack-check=specific for Thumb-1" msgstr "-fstack-check=specific para Thumb-1" -#: config/arm/arm.c:30435 +#: config/arm/arm.c:30424 #, gcc-internal-format, gfc-internal-format msgid "invalid fpu for attribute(target(\"%s\"))" msgstr "fpu no válida para el atributo(objetivo(\"%s\"))" @@ -26830,13 +26881,13 @@ #. This doesn't really make sense until we support #. general dynamic selection of the architecture and all #. sub-features. -#: config/arm/arm.c:30443 +#: config/arm/arm.c:30432 #, gcc-internal-format msgid "auto fpu selection not currently permitted here" msgstr "selección automática de fpu actualmente no permitida aquí" -#: config/arm/arm.c:30450 config/i386/i386.c:6838 config/i386/i386.c:6885 -#: config/s390/s390.c:15083 config/s390/s390.c:15133 config/s390/s390.c:15150 +#: config/arm/arm.c:30439 config/i386/i386.c:6844 config/i386/i386.c:6891 +#: config/s390/s390.c:15090 config/s390/s390.c:15140 config/s390/s390.c:15157 #, gcc-internal-format, gfc-internal-format msgid "attribute(target(\"%s\")) is unknown" msgstr "se desconoce attribute(target(\"%s\"))" @@ -26933,163 +26984,176 @@ msgid "function attributes %qs and %qs have no effect on %qs function" msgstr "los atributos de función %qs y %qs no tienen efecto en funciones %qs" -#: config/avr/avr.c:1074 +#: config/avr/avr.c:1068 #, gcc-internal-format msgid "%qs function cannot have arguments" msgstr "la función %qs no puede tener argumentos" -#: config/avr/avr.c:1077 +#: config/avr/avr.c:1071 #, gcc-internal-format msgid "%qs function cannot return a value" msgstr "la función %qs no puede devolver un valor" -#: config/avr/avr.c:1084 -#, gcc-internal-format -msgid "%qs appears to be a misspelled %s handler, missing __vector prefix" +#: config/avr/avr.c:1085 +#, fuzzy, gcc-internal-format +#| msgid "%qs appears to be a misspelled %s handler, missing __vector prefix" +msgid "%qs appears to be a misspelled %qs handler, missing %<__vector%> prefix" msgstr "%qs parece ser un manejador %s mal escrito; falta el prefijo __vector" -#: config/avr/avr.c:1311 +#: config/avr/avr.c:1098 #, gcc-internal-format +msgid "%qs is a reserved indentifier in AVR-LibC. Consider %<#include %> before using the %qs macro" +msgstr "" + +#: config/avr/avr.c:1327 +#, gcc-internal-format msgid "% contains only 2 bytes of address" msgstr "% sólo contiene 2 bytes de dirección" -#: config/avr/avr.c:2543 +#: config/avr/avr.c:2559 #, gcc-internal-format msgid "pointer offset from symbol maybe incorrect" msgstr "el desplazamiento del puntero desde el símbolo tal vez es incorrecto" -#: config/avr/avr.c:2682 +#: config/avr/avr.c:2698 #, gcc-internal-format msgid "accessing data memory with program memory address" msgstr "se accede a memoria de datos con dirección de memoria de programa" -#: config/avr/avr.c:2743 +#: config/avr/avr.c:2759 #, gcc-internal-format msgid "accessing program memory with data memory address" msgstr "se accede a memoria de programa con dirección de memoria de datos" -#: config/avr/avr.c:3222 +#: config/avr/avr.c:3238 #, gcc-internal-format, gfc-internal-format msgid "fixed register %s used to pass parameter to function" msgstr "se usó el registro fijo %s para pasar un parámetro a la función" -#: config/avr/avr.c:3492 +#: config/avr/avr.c:3508 #, gcc-internal-format msgid "writing to address space %qs not supported" msgstr "no se admite escribir al espacio de direcciones %qs" -#: config/avr/avr.c:9515 +#: config/avr/avr.c:9530 #, gcc-internal-format msgid "%qE attribute only applies to variables in static storage" msgstr "el atributo %qE se aplica solamente a variables en almacenamiento estático" -#: config/avr/avr.c:9522 +#: config/avr/avr.c:9537 #, gcc-internal-format msgid "%qE attribute only supported for reduced Tiny cores" msgstr "solo se admite el atributo %qE núcleos Tiny reducidos" -#: config/avr/avr.c:9539 config/bfin/bfin.c:4795 config/i386/winnt.c:59 -#: config/nvptx/nvptx.c:4301 +#: config/avr/avr.c:9554 config/bfin/bfin.c:4795 config/i386/winnt.c:59 +#: config/nvptx/nvptx.c:4317 #, gcc-internal-format msgid "%qE attribute only applies to variables" msgstr "el atributo %qE solamente se aplica a variables" -#: config/avr/avr.c:9550 +#: config/avr/avr.c:9565 #, gcc-internal-format msgid "%qE attribute allows only an integer constant argument" msgstr "el atributo %qE sólo permite una constante entera como argumento" -#: config/avr/avr.c:9560 +#: config/avr/avr.c:9575 #, gcc-internal-format msgid "%qE attribute address out of range" msgstr "la dirección del atributo %qE está fuera de rango" -#: config/avr/avr.c:9573 +#: config/avr/avr.c:9588 #, gcc-internal-format msgid "both %s and %qE attribute provide address" msgstr "tanto el atributo %s como el %qE proporcionan dirección" -#: config/avr/avr.c:9583 +#: config/avr/avr.c:9598 #, gcc-internal-format msgid "%qE attribute on non-volatile variable" msgstr "atributo %qE en variable no volátil" -#: config/avr/avr.c:9653 +#: config/avr/avr.c:9668 #, gcc-internal-format msgid "address spaces are not supported for reduced Tiny devices" msgstr "no se admiten espacios de direcciones para dispositivos Tiny reducidos" -#: config/avr/avr.c:9660 +#: config/avr/avr.c:9675 #, gcc-internal-format msgid "address space %qs not supported for devices with flash size up to %d KiB" msgstr "no se admite el espacio de direcciones %qs para dispositivos con tamaño de flash de hasta %d KiB" -#: config/avr/avr.c:9831 +#: config/avr/avr.c:9846 #, gcc-internal-format msgid "pointer targeting address space %qs must be const in %qT" msgstr "el espacio de direcciones %qs que apuntan a punteros debe ser const en %qT" -#: config/avr/avr.c:9834 +#: config/avr/avr.c:9849 #, gcc-internal-format msgid "pointer targeting address space %qs must be const in %s %q+D" msgstr "el espacio de direcciones %qs que apuntan a punteros debe ser const en %s %q+D" -#: config/avr/avr.c:9880 +#: config/avr/avr.c:9895 #, gcc-internal-format msgid "variable %q+D must be const in order to be put into read-only section by means of %qs" msgstr "la variable %q+D debe ser const para que se ponga en la sección de sólo lectura a través de %qs" -#: config/avr/avr.c:9919 +#: config/avr/avr.c:9934 #, gcc-internal-format msgid "static IO declaration for %q+D needs an address" msgstr "la declaración de ES estática para %q+D necesita una dirección" -#: config/avr/avr.c:9951 +#: config/avr/avr.c:9966 #, gcc-internal-format msgid "IO definition for %q+D needs an address" msgstr "la definición de ES para %q+D necesita una dirección" -#: config/avr/avr.c:10058 +#: config/avr/avr.c:10073 #, gcc-internal-format msgid "only uninitialized variables can be placed in the .noinit section" msgstr "Sólo las variables sin inicializar se pueden colocar en la sección .noinit" -#: config/avr/avr.c:10138 +#. This might happen with C++ if stuff needs constructing. +#: config/avr/avr.c:10149 +#, fuzzy, gcc-internal-format +#| msgid "uninitialized variable %q+D put into program memory area" +msgid "variable %q+D with dynamic initialization put into program memory area" +msgstr "se colocó la variable %q+D sin inicializar en el área de memoria del programa" + +#: config/avr/avr.c:10160 #, gcc-internal-format msgid "uninitialized variable %q+D put into program memory area" msgstr "se colocó la variable %q+D sin inicializar en el área de memoria del programa" -#: config/avr/avr.c:10224 +#: config/avr/avr.c:10247 #, gcc-internal-format msgid "%q+D has incompatible attributes %qs and %qs" msgstr "%q+D tiene atributos incompatibles %qs y %qs" -#: config/avr/avr.c:10287 +#: config/avr/avr.c:10310 #, gcc-internal-format msgid "architecture %qs supported for assembler only" msgstr "la arquitectura %qs sólo se admite para ensamblador" -#: config/avr/avr.c:12823 +#: config/avr/avr.c:12872 #, gcc-internal-format msgid "conversion from address space %qs to address space %qs" msgstr "vonversión del espacio de direcciones %qs al espacio de direcciones %qs" -#: config/avr/avr.c:13916 config/avr/avr.c:13929 +#: config/avr/avr.c:13965 config/avr/avr.c:13978 #, gcc-internal-format, gfc-internal-format msgid "%s expects a compile time integer constant" msgstr "%s expera una constante entera en tiempo de compilación" -#: config/avr/avr.c:13943 +#: config/avr/avr.c:13992 #, gcc-internal-format, gfc-internal-format msgid "%s expects a compile time long integer constant as first argument" msgstr "%s espera una constante entera long en tiempo de compilación como primer argumento" -#: config/avr/avr.c:13971 +#: config/avr/avr.c:14020 #, gcc-internal-format, gfc-internal-format msgid "rounding to %d bits has no effect for fixed-point value with %d fractional bits" msgstr "redondear a %d bits no tiene ningún efecto en valores de coma fija con %d bits de fracción" -#: config/avr/avr.c:13980 +#: config/avr/avr.c:14029 #, gcc-internal-format msgid "rounding result will always be 0" msgstr "el resultado del redondeo será siempre 0" @@ -27372,12 +27436,12 @@ msgid "invalid IACC argument" msgstr "argumento IACC no válido" -#: config/frv/frv.c:8708 +#: config/frv/frv.c:8708 config/sparc/sparc.c:10545 #, gcc-internal-format msgid "%qs expects a constant argument" msgstr "%qs espera una constante como argumento" -#: config/frv/frv.c:8713 +#: config/frv/frv.c:8713 config/sparc/sparc.c:10551 #, gcc-internal-format msgid "constant argument out of range for %qs" msgstr "el argumento constante está fuera de rango para %qs" @@ -27555,7 +27619,7 @@ msgid "code model %qs not supported in x32 mode" msgstr "el modelo de código %qs no se admite en modo x32" -#: config/i386/i386.c:5372 config/i386/i386.c:5381 config/i386/i386.c:6556 +#: config/i386/i386.c:5372 config/i386/i386.c:5381 config/i386/i386.c:6562 #, gcc-internal-format, gfc-internal-format msgid "code model %s does not support PIC mode" msgstr "el modelo de código %s no admite el modo PIC" @@ -27685,287 +27749,287 @@ msgid "% is ignored in 64bit mode" msgstr "se descarta % en el modo de 64bit" -#: config/i386/i386.c:5938 +#: config/i386/i386.c:5944 #, gcc-internal-format msgid "-mpreferred-stack-boundary is not supported for this target" msgstr "no se admite -mpreferred-stack-boundary en este objetivo" -#: config/i386/i386.c:5941 +#: config/i386/i386.c:5947 #, gcc-internal-format, gfc-internal-format msgid "-mpreferred-stack-boundary=%d is not between %d and %d" msgstr "-mpreferred-stack-boundary=%d no está entre %d y %d" -#: config/i386/i386.c:5964 +#: config/i386/i386.c:5970 #, gcc-internal-format, gfc-internal-format msgid "-mincoming-stack-boundary=%d is not between %d and 12" msgstr "-mincoming-stack-boundary=%d no está entre %d y 12" -#: config/i386/i386.c:5977 +#: config/i386/i386.c:5983 #, gcc-internal-format msgid "-mnop-mcount is not compatible with this target" msgstr "-mnop-mcount no es compatible con este objetivo" -#: config/i386/i386.c:5980 +#: config/i386/i386.c:5986 #, gcc-internal-format msgid "-mnop-mcount is not implemented for -fPIC" msgstr "-mnop-mcount no está implementada para -fPIC" -#: config/i386/i386.c:5986 +#: config/i386/i386.c:5992 #, gcc-internal-format msgid "%<-msseregparm%> used without SSE enabled" msgstr "se usó %<-msseregparm%> sin SSE activado" -#: config/i386/i386.c:5987 +#: config/i386/i386.c:5993 #, gcc-internal-format msgid "% used without SSE enabled" msgstr "se usó % sin SSE activado" -#: config/i386/i386.c:5997 +#: config/i386/i386.c:6003 #, gcc-internal-format msgid "SSE instruction set disabled, using 387 arithmetics" msgstr "el conjunto de instrucciones SSE está desactivado, usando la aritmética 387" -#: config/i386/i386.c:6004 +#: config/i386/i386.c:6010 #, gcc-internal-format msgid "387 instruction set disabled, using SSE arithmetics" msgstr "el conjunto de instrucciones 387 está desactivado, usando la aritmética SSE" -#: config/i386/i386.c:6054 +#: config/i386/i386.c:6060 #, gcc-internal-format msgid "stack probing requires %<-maccumulate-outgoing-args%> for correctness" msgstr "la prueba de pila requiere %<-maccumulate-outgoing-args%> para ser correcta" -#: config/i386/i386.c:6056 +#: config/i386/i386.c:6062 #, gcc-internal-format msgid "stack probing requires % for correctness" msgstr "la prueba de pila requiere % para ser correcta" -#: config/i386/i386.c:6070 +#: config/i386/i386.c:6076 #, gcc-internal-format msgid "fixed ebp register requires %<-maccumulate-outgoing-args%>" msgstr "el registro ebp fijo requiere %<-maccumulate-outgoing-args%>" -#: config/i386/i386.c:6072 +#: config/i386/i386.c:6078 #, gcc-internal-format msgid "fixed ebp register requires %" msgstr "el registro ebp fijo requiere %" -#: config/i386/i386.c:6178 +#: config/i386/i386.c:6184 #, gcc-internal-format msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic" msgstr "-mfentry no se admite para 32-bit en combinación con -fpic" -#: config/i386/i386.c:6185 +#: config/i386/i386.c:6191 #, gcc-internal-format msgid "-mno-fentry isn%'t compatible with SEH" msgstr "-mno-fentry no es compatible con SEH" -#: config/i386/i386.c:6252 config/rs6000/rs6000.c:5475 +#: config/i386/i386.c:6258 config/rs6000/rs6000.c:5477 #, gcc-internal-format, gfc-internal-format msgid "unknown option for -mrecip=%s" msgstr "opción desconocida para -mrecip=%s" -#: config/i386/i386.c:6866 +#: config/i386/i386.c:6872 #, gcc-internal-format, gfc-internal-format msgid "option(\"%s\") was already specified" msgstr "ya se había especificado option(\"%s\")" -#: config/i386/i386.c:7168 +#: config/i386/i386.c:7174 #, gcc-internal-format msgid "Only DWARF debug format is supported for interrupt service routine." msgstr "Solo se admite el formato de depuración DWARF para la rutina de servicio de interrupciones." -#: config/i386/i386.c:7267 +#: config/i386/i386.c:7273 #, gcc-internal-format, gfc-internal-format msgid "%s instructions aren't allowed in %s service routine" msgstr "las instrucciones %s no se permiten en la rutina de servicio %s" -#: config/i386/i386.c:7271 +#: config/i386/i386.c:7277 #, gcc-internal-format, gfc-internal-format msgid "%s instructions aren't allowed in function with no_caller_saved_registers attribute" msgstr "Las instrucciones %s no están permitidas en funciones con el atributo no_caller_saved_registers" -#: config/i386/i386.c:7683 config/i386/i386.c:7734 +#: config/i386/i386.c:7689 config/i386/i386.c:7740 #, gcc-internal-format msgid "fastcall and regparm attributes are not compatible" msgstr "los atributos fastcall y regparm no son compatibles" -#: config/i386/i386.c:7688 +#: config/i386/i386.c:7694 #, gcc-internal-format msgid "regparam and thiscall attributes are not compatible" msgstr "los atributos regparam y thiscall no son compatibles" -#: config/i386/i386.c:7695 config/i386/i386.c:41349 +#: config/i386/i386.c:7701 config/i386/i386.c:41390 #, gcc-internal-format msgid "%qE attribute requires an integer constant argument" msgstr "el atributo %qE requiere un argumento constante entero" -#: config/i386/i386.c:7701 +#: config/i386/i386.c:7707 #, gcc-internal-format msgid "argument to %qE attribute larger than %d" msgstr "el argumento para el atributo %qE es más grande que %d" -#: config/i386/i386.c:7726 config/i386/i386.c:7769 +#: config/i386/i386.c:7732 config/i386/i386.c:7775 #, gcc-internal-format msgid "fastcall and cdecl attributes are not compatible" msgstr "los atributos fastcall y cdecl no son compatibles" -#: config/i386/i386.c:7730 +#: config/i386/i386.c:7736 #, gcc-internal-format msgid "fastcall and stdcall attributes are not compatible" msgstr "los atributos fastcall y stdcall no son compatibles" -#: config/i386/i386.c:7738 config/i386/i386.c:7787 +#: config/i386/i386.c:7744 config/i386/i386.c:7793 #, gcc-internal-format msgid "fastcall and thiscall attributes are not compatible" msgstr "los atributos fastcall y thiscall no son compatibles" -#: config/i386/i386.c:7748 config/i386/i386.c:7765 +#: config/i386/i386.c:7754 config/i386/i386.c:7771 #, gcc-internal-format msgid "stdcall and cdecl attributes are not compatible" msgstr "los atributos stdcall y cdecl no son compatibles" -#: config/i386/i386.c:7752 +#: config/i386/i386.c:7758 #, gcc-internal-format msgid "stdcall and fastcall attributes are not compatible" msgstr "los atributos stdcall y fastcall no son compatibles" -#: config/i386/i386.c:7756 config/i386/i386.c:7783 +#: config/i386/i386.c:7762 config/i386/i386.c:7789 #, gcc-internal-format msgid "stdcall and thiscall attributes are not compatible" msgstr "los atributos stdcall y thiscall no son compatibles" -#: config/i386/i386.c:7773 config/i386/i386.c:7791 +#: config/i386/i386.c:7779 config/i386/i386.c:7797 #, gcc-internal-format msgid "cdecl and thiscall attributes are not compatible" msgstr "los atributos cdecl y thiscall no son compatibles" -#: config/i386/i386.c:7779 +#: config/i386/i386.c:7785 #, gcc-internal-format msgid "%qE attribute is used for non-class method" msgstr "se usó el atributo %qE para método no de clase" -#: config/i386/i386.c:8023 +#: config/i386/i386.c:8029 #, gcc-internal-format msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled" msgstr "se llama a %qD con el atributo sseregparm sin activar SSE/SSE2" -#: config/i386/i386.c:8026 +#: config/i386/i386.c:8032 #, gcc-internal-format msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled" msgstr "se llama a %qT con el atributo sseregparm sin activar SSE/SSE2" -#: config/i386/i386.c:8342 +#: config/i386/i386.c:8348 #, gcc-internal-format msgid "X32 does not support ms_abi attribute" msgstr "X32 no admite el atributo ms_abi" -#: config/i386/i386.c:8374 +#: config/i386/i386.c:8380 #, gcc-internal-format msgid "ms_hook_prologue is not compatible with nested function" msgstr "ms_hook_prologue no es compatible con la función anidada" -#: config/i386/i386.c:8687 +#: config/i386/i386.c:8693 #, gcc-internal-format msgid "AVX512F vector argument without AVX512F enabled changes the ABI" msgstr "el argumento de vector AVX512F sin AVX512F activado cambia la ABI" -#: config/i386/i386.c:8693 +#: config/i386/i386.c:8699 #, gcc-internal-format msgid "AVX512F vector return without AVX512F enabled changes the ABI" msgstr "el retorno de vector AVX512F sin AVX512F activado cambia la ABI" -#: config/i386/i386.c:8707 +#: config/i386/i386.c:8713 #, gcc-internal-format msgid "AVX vector argument without AVX enabled changes the ABI" msgstr "el argumento de vector AVX sin AVX activado cambia la ABI" -#: config/i386/i386.c:8713 +#: config/i386/i386.c:8719 #, gcc-internal-format msgid "AVX vector return without AVX enabled changes the ABI" msgstr "el retorno de vector AVX sin AVX activado cambia la ABI" -#: config/i386/i386.c:8729 +#: config/i386/i386.c:8735 #, gcc-internal-format msgid "SSE vector argument without SSE enabled changes the ABI" msgstr "el argumento de vector SSE sin SSE activado cambia la ABI" -#: config/i386/i386.c:8735 +#: config/i386/i386.c:8741 #, gcc-internal-format msgid "SSE vector return without SSE enabled changes the ABI" msgstr "la devolución de vector SSE sin SSE activado cambia la ABI" -#: config/i386/i386.c:8751 +#: config/i386/i386.c:8757 #, gcc-internal-format msgid "MMX vector argument without MMX enabled changes the ABI" msgstr "el argumento de vector MMX sin MMX activado cambia la ABI" -#: config/i386/i386.c:8757 +#: config/i386/i386.c:8763 #, gcc-internal-format msgid "MMX vector return without MMX enabled changes the ABI" msgstr "la devolución de vector MMX sin MMX activado cambia la ABI" -#: config/i386/i386.c:8939 +#: config/i386/i386.c:8945 #, gcc-internal-format msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4" msgstr "la ABI para pasar un struct con un miembro de matriz flexible cambió en GCC 4.4" -#: config/i386/i386.c:9056 +#: config/i386/i386.c:9062 #, gcc-internal-format msgid "the ABI of passing union with long double has changed in GCC 4.4" msgstr "la ABI para pasar un union con long double cambió en GCC 4.4" -#: config/i386/i386.c:9174 +#: config/i386/i386.c:9180 #, gcc-internal-format msgid "the ABI of passing structure with complex float member has changed in GCC 4.4" msgstr "la ABI para pasar una estructura con un miembro de coma flotante compleja cambió en GCC 4.4" -#: config/i386/i386.c:9337 +#: config/i386/i386.c:9343 #, gcc-internal-format msgid "SSE register return with SSE disabled" msgstr "se devuelve el registro SSE con SSE desactivado" -#: config/i386/i386.c:9343 +#: config/i386/i386.c:9349 #, gcc-internal-format msgid "SSE register argument with SSE disabled" msgstr "argumento de registro SSE con SSE desactivado" -#: config/i386/i386.c:9359 +#: config/i386/i386.c:9365 #, gcc-internal-format msgid "x87 register return with x87 disabled" msgstr "se devuelve el registro x87 con x87 desactivado" -#: config/i386/i386.c:9655 config/i386/i386.c:9926 config/i386/i386.c:10449 +#: config/i386/i386.c:9661 config/i386/i386.c:9932 config/i386/i386.c:10455 #, gcc-internal-format msgid "calling %qD with SSE calling convention without SSE/SSE2 enabled" msgstr "se llama a %qD con el convenio de llamadas SSE sin activar SSE/SSE2" -#: config/i386/i386.c:9657 config/i386/i386.c:9928 config/i386/i386.c:10451 +#: config/i386/i386.c:9663 config/i386/i386.c:9934 config/i386/i386.c:10457 #, gcc-internal-format msgid "this is a GCC bug that can be worked around by adding attribute used to function called" msgstr "esto es un error de GCC que se puede sortear añadiendo el atributo usado a la función llamada" -#: config/i386/i386.c:10351 +#: config/i386/i386.c:10357 #, gcc-internal-format, gfc-internal-format msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6" msgstr "La ABI para pasar parámetros con alineación de %d-bytes cambió en GCC 4.6" -#: config/i386/i386.c:13734 +#: config/i386/i386.c:13740 #, gcc-internal-format msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit" msgstr "el atributo ms_hook_prologue no es compatible con -mfentry para 32-bit" -#: config/i386/i386.c:13824 +#: config/i386/i386.c:13830 #, gcc-internal-format msgid "Dynamic Realign Argument Pointer (DRAP) not supported in interrupt service routine. This may be worked around by avoiding functions with aggregate return." msgstr "No se admite Puntero de Argumento de Realineamiento Dinámico (DRAP) en la rutina de servicio de interrupciones. Esto puede sortearse evitando funciones con retorno agregado." -#: config/i386/i386.c:14836 +#: config/i386/i386.c:14842 #, gcc-internal-format msgid "-fsplit-stack does not support fastcall with nested function" msgstr "-fsplit-stack no admite fastcall con funciones anidadas" -#: config/i386/i386.c:14856 +#: config/i386/i386.c:14862 #, gcc-internal-format msgid "-fsplit-stack does not support 2 register parameters for a nested function" msgstr "-fsplit-stack no admite 2 parámetros de registro para una función anidada" @@ -27972,297 +28036,297 @@ #. FIXME: We could make this work by pushing a register #. around the addition and comparison. -#: config/i386/i386.c:14867 +#: config/i386/i386.c:14873 #, gcc-internal-format msgid "-fsplit-stack does not support 3 register parameters" msgstr "-fsplit-stack no admite 3 parámetros de registro" -#: config/i386/i386.c:17672 config/i386/i386.c:17686 +#: config/i386/i386.c:17678 config/i386/i386.c:17692 #, gcc-internal-format msgid "unsupported size for integer register" msgstr "no se admite el tamaño para registro de enteros" -#: config/i386/i386.c:17718 +#: config/i386/i386.c:17724 #, gcc-internal-format msgid "extended registers have no high halves" msgstr "los registros extendidos no tiene mitades superiores" -#: config/i386/i386.c:17733 +#: config/i386/i386.c:17739 #, gcc-internal-format msgid "unsupported operand size for extended register" msgstr "no se admite el tamaño de operando para el registro extendido" -#: config/i386/i386.c:17924 +#: config/i386/i386.c:17930 #, gcc-internal-format msgid "non-integer operand used with operand code 'z'" msgstr "se usó un operando que no es entero con el código de operando 'z'" -#: config/i386/i386.c:28283 +#: config/i386/i386.c:28289 #, gcc-internal-format msgid "interrupt service routine can't be called directly" msgstr "no se puede llamar directamente a la rutina de servicio de interrupciones" -#: config/i386/i386.c:32550 +#: config/i386/i386.c:32591 #, gcc-internal-format msgid "No dispatcher found for the versioning attributes" msgstr "No se ha encontrado despachador para los atributos de versión" -#: config/i386/i386.c:32600 +#: config/i386/i386.c:32641 #, gcc-internal-format, gfc-internal-format msgid "No dispatcher found for %s" msgstr "No se encontró despachador para %s" -#: config/i386/i386.c:32610 +#: config/i386/i386.c:32651 #, gcc-internal-format, gfc-internal-format msgid "No dispatcher found for the versioning attributes : %s" msgstr "No se encontró despachador para los atributos de versión : %s" -#: config/i386/i386.c:32858 +#: config/i386/i386.c:32899 #, gcc-internal-format msgid "Function versions cannot be marked as gnu_inline, bodies have to be generated" msgstr "Las versiones de funciones no pueden marcarse como gnu_inline; hay que generar cuerpos" -#: config/i386/i386.c:32863 config/i386/i386.c:33291 +#: config/i386/i386.c:32904 config/i386/i386.c:33332 #, gcc-internal-format msgid "Virtual function multiversioning not supported" msgstr "No se admiten versiones múltiples de funciones virtuales" -#: config/i386/i386.c:32926 +#: config/i386/i386.c:32967 #, gcc-internal-format msgid "missing % attribute for multi-versioned %D" msgstr "falta el atributo % para %D multiversionado" -#: config/i386/i386.c:32929 +#: config/i386/i386.c:32970 #, gcc-internal-format msgid "previous declaration of %D" msgstr "declaración previa de %D" -#: config/i386/i386.c:33148 +#: config/i386/i386.c:33189 #, gcc-internal-format msgid "multiversioning needs ifunc which is not supported on this target" msgstr "el versionado múltiple necesita ifunc, que no se admite en este objetivo" -#: config/i386/i386.c:33540 +#: config/i386/i386.c:33581 #, gcc-internal-format msgid "Parameter to builtin must be a string constant or literal" msgstr "El parámetro para la función interna debe ser una cadena constante o literal" -#: config/i386/i386.c:33565 config/i386/i386.c:33615 +#: config/i386/i386.c:33606 config/i386/i386.c:33656 #, gcc-internal-format, gfc-internal-format msgid "Parameter to builtin not valid: %s" msgstr "El parámetro para la función interna no es válido: %s" -#: config/i386/i386.c:34294 config/i386/i386.c:35692 +#: config/i386/i386.c:34335 config/i386/i386.c:35733 #, gcc-internal-format msgid "the last argument must be a 2-bit immediate" msgstr "el tercer argumento debe ser un inmediato de 2-bit" -#: config/i386/i386.c:34689 +#: config/i386/i386.c:34730 #, gcc-internal-format msgid "the fifth argument must be an 8-bit immediate" msgstr "el quinto argumento debe ser un inmediato de 8-bit" -#: config/i386/i386.c:34784 +#: config/i386/i386.c:34825 #, gcc-internal-format msgid "the third argument must be an 8-bit immediate" msgstr "el tercer argumento debe ser un inmediato de 8-bit" -#: config/i386/i386.c:35623 +#: config/i386/i386.c:35664 #, gcc-internal-format msgid "the last argument must be an 1-bit immediate" msgstr "el último argumento debe ser un inmediato de 1-bit" -#: config/i386/i386.c:35638 +#: config/i386/i386.c:35679 #, gcc-internal-format msgid "the last argument must be a 3-bit immediate" msgstr "el último argumento debe ser un inmediato de 3-bit" -#: config/i386/i386.c:35671 +#: config/i386/i386.c:35712 #, gcc-internal-format msgid "the last argument must be a 4-bit immediate" msgstr "el último argumento debe ser un inmediato de 4-bit" -#: config/i386/i386.c:35711 +#: config/i386/i386.c:35752 #, gcc-internal-format msgid "the last argument must be a 1-bit immediate" msgstr "el último argumento debe ser un inmediato de 1-bit" -#: config/i386/i386.c:35724 +#: config/i386/i386.c:35765 #, gcc-internal-format msgid "the last argument must be a 5-bit immediate" msgstr "el tercer argumento debe ser un inmediato de 5-bit" -#: config/i386/i386.c:35734 +#: config/i386/i386.c:35775 #, gcc-internal-format msgid "the next to last argument must be an 8-bit immediate" msgstr "el penúltimo argumento debe ser un inmediato de 8-bit" -#: config/i386/i386.c:35739 config/i386/i386.c:36529 +#: config/i386/i386.c:35780 config/i386/i386.c:36570 #, gcc-internal-format msgid "the last argument must be an 8-bit immediate" msgstr "el último argumento debe ser un inmediato de 8-bit" -#: config/i386/i386.c:35907 +#: config/i386/i386.c:35948 #, gcc-internal-format msgid "the third argument must be comparison constant" msgstr "el tercer argumento debe ser una constante de comparación" -#: config/i386/i386.c:35912 +#: config/i386/i386.c:35953 #, gcc-internal-format msgid "incorrect comparison mode" msgstr "modo de comparación incorrecto" -#: config/i386/i386.c:35918 config/i386/i386.c:36119 +#: config/i386/i386.c:35959 config/i386/i386.c:36160 #, gcc-internal-format msgid "incorrect rounding operand" msgstr "operando de redondeo incorrecto" -#: config/i386/i386.c:36101 +#: config/i386/i386.c:36142 #, gcc-internal-format msgid "the immediate argument must be a 4-bit immediate" msgstr "el argumento inmediato debe ser un inmediato de 4-bit" -#: config/i386/i386.c:36107 +#: config/i386/i386.c:36148 #, gcc-internal-format msgid "the immediate argument must be a 5-bit immediate" msgstr "el argumento inmediato debe ser un inmediato de 5-bit" -#: config/i386/i386.c:36110 +#: config/i386/i386.c:36151 #, gcc-internal-format msgid "the immediate argument must be an 8-bit immediate" msgstr "el argumento inmediato debe ser un inmediato de 8-bit" -#: config/i386/i386.c:36527 +#: config/i386/i386.c:36568 #, gcc-internal-format msgid "the last argument must be a 32-bit immediate" msgstr "el último argumento debe ser un inmediato de 32-bit" -#: config/i386/i386.c:36609 config/rs6000/rs6000.c:15973 +#: config/i386/i386.c:36650 config/rs6000/rs6000.c:16009 #, gcc-internal-format msgid "selector must be an integer constant in the range 0..%wi" msgstr "el selector debe ser una constante entera en el rango 0..%wi" -#: config/i386/i386.c:36814 +#: config/i386/i386.c:36855 #, gcc-internal-format msgid "%qE needs unknown isa option" msgstr "%qE necesita la opción isa desconocida" -#: config/i386/i386.c:36818 +#: config/i386/i386.c:36859 #, gcc-internal-format msgid "%qE needs isa option %s" msgstr "%qE necesita la opción isa %s" -#: config/i386/i386.c:37566 +#: config/i386/i386.c:37607 #, gcc-internal-format msgid "last argument must be an immediate" msgstr "el último argumento debe ser un inmediato" -#: config/i386/i386.c:38270 config/i386/i386.c:38452 +#: config/i386/i386.c:38311 config/i386/i386.c:38493 #, gcc-internal-format msgid "the last argument must be scale 1, 2, 4, 8" msgstr "el último argumento debe ser un escalar 1, 2, 4, 8" -#: config/i386/i386.c:38505 +#: config/i386/i386.c:38546 #, gcc-internal-format msgid "the forth argument must be scale 1, 2, 4, 8" msgstr "el argumento delantero debe ser un escalar 1, 2, 4, 8" -#: config/i386/i386.c:38511 +#: config/i386/i386.c:38552 #, gcc-internal-format msgid "incorrect hint operand" msgstr "operando de pista incorrecto" -#: config/i386/i386.c:38530 +#: config/i386/i386.c:38571 #, gcc-internal-format msgid "the xabort's argument must be an 8-bit immediate" msgstr "el argumento de xabort debe ser un inmediato de 8-bit" -#: config/i386/i386.c:41336 +#: config/i386/i386.c:41377 #, gcc-internal-format msgid "%qE attribute only available for 32-bit" msgstr "el atributo %qE solamente está disponible para 64-bit" -#: config/i386/i386.c:41357 +#: config/i386/i386.c:41398 #, gcc-internal-format msgid "argument to %qE attribute is neither zero, nor one" msgstr "el argumento del atributo %qE no es cero ni uno" -#: config/i386/i386.c:41390 config/i386/i386.c:41399 +#: config/i386/i386.c:41431 config/i386/i386.c:41440 #, gcc-internal-format msgid "ms_abi and sysv_abi attributes are not compatible" msgstr "los atributos ms_abi y sysv_abi no son compatibles" -#: config/i386/i386.c:41435 config/rs6000/rs6000.c:35378 +#: config/i386/i386.c:41476 config/rs6000/rs6000.c:35427 #, gcc-internal-format msgid "%qE incompatible attribute ignored" msgstr "se descarta el atributo incompatible %qE" -#: config/i386/i386.c:41479 +#: config/i386/i386.c:41520 #, gcc-internal-format msgid "interrupt service routine should have a pointer as the first argument" msgstr "la rutina de servicio de interrupciones debería tener un puntero como primer argumento" -#: config/i386/i386.c:41486 +#: config/i386/i386.c:41527 #, gcc-internal-format, gfc-internal-format msgid "interrupt service routine should have unsigned %sint as the second argument" msgstr "" -#: config/i386/i386.c:41496 +#: config/i386/i386.c:41537 #, gcc-internal-format msgid "interrupt service routine can only have a pointer argument and an optional integer argument" msgstr "la rutina de servicio de interrupciones solo puede tener un argumento puntero y un argumento entero opcional" -#: config/i386/i386.c:41499 +#: config/i386/i386.c:41540 #, gcc-internal-format msgid "interrupt service routine can't have non-void return value" msgstr "ls rutina de servicio de interrupción no puede tener valor de retorno que no sea void" -#: config/i386/i386.c:44401 +#: config/i386/i386.c:44442 #, gcc-internal-format msgid "alternatives not allowed in asm flag output" msgstr "no se permiten alternativas en la salida del indicador asm" -#: config/i386/i386.c:44465 +#: config/i386/i386.c:44506 #, gcc-internal-format msgid "unknown asm flag output %qs" msgstr "salida del indicador asm %qs desconocida" -#: config/i386/i386.c:44494 +#: config/i386/i386.c:44535 #, gcc-internal-format msgid "invalid type for asm flag output" msgstr "tipo no válido para la salida del indicador asm" -#: config/i386/i386.c:50765 +#: config/i386/i386.c:50806 #, gcc-internal-format msgid "Unknown architecture specific memory model" msgstr "Modelo de memoria específico de la arquitectura desconocido" -#: config/i386/i386.c:50772 +#: config/i386/i386.c:50813 #, gcc-internal-format msgid "HLE_ACQUIRE not used with ACQUIRE or stronger memory model" msgstr "HLE_ACQUIRE no se usa con ACQUIRE o modelos de memoria más fuertes" -#: config/i386/i386.c:50778 +#: config/i386/i386.c:50819 #, gcc-internal-format msgid "HLE_RELEASE not used with RELEASE or stronger memory model" msgstr "HLE_RELEASE no se usa con RELEASE o modelos de memoria más fuertes" -#: config/i386/i386.c:50802 config/i386/i386.c:50923 +#: config/i386/i386.c:50843 config/i386/i386.c:50964 #, gcc-internal-format, gfc-internal-format msgid "unsupported simdlen %d" msgstr "simdlen %d no admitido" -#: config/i386/i386.c:50821 +#: config/i386/i386.c:50862 #, gcc-internal-format msgid "unsupported return type %qT for simd\n" msgstr "no se admite el tipo de retorno %qT para simd\n" -#: config/i386/i386.c:50843 +#: config/i386/i386.c:50884 #, gcc-internal-format msgid "unsupported argument type %qT for simd\n" msgstr "no se admite el tipo de argumento %qT para simd\n" -#: config/i386/i386.c:51169 +#: config/i386/i386.c:51210 #, gcc-internal-format msgid "Pointer Checker requires MPX support on this target. Use -mmpx options to enable MPX." msgstr "El Comprobador de Punteros requiere suporte MPX en este objetivo. Utilice las opciones -mmpx para activar MPX." @@ -28382,7 +28446,7 @@ msgid "argument %qd is not a constant" msgstr "el argumento %qd no es una constante" -#: config/iq2000/iq2000.c:2912 config/xtensa/xtensa.c:2455 +#: config/iq2000/iq2000.c:2912 config/xtensa/xtensa.c:2456 #, gcc-internal-format msgid "PRINT_OPERAND_ADDRESS, null pointer" msgstr "PRINT_OPERAND_ADDRESS, puntero nulo" @@ -28392,7 +28456,7 @@ msgid "PRINT_OPERAND: Unknown punctuation '%c'" msgstr "PRINT_OPERAND: Puntuación desconocida '%c'" -#: config/iq2000/iq2000.c:3076 config/xtensa/xtensa.c:2299 +#: config/iq2000/iq2000.c:3076 config/xtensa/xtensa.c:2300 #, gcc-internal-format msgid "PRINT_OPERAND null pointer" msgstr "PRINT_OPERAND puntero nulo" @@ -28493,7 +28557,7 @@ msgid "interrupt_thread is available only on fido" msgstr "interrupt_thread sólo está disponible en fido" -#: config/m68k/m68k.c:1108 config/rs6000/rs6000.c:28119 +#: config/m68k/m68k.c:1108 config/rs6000/rs6000.c:28168 #, gcc-internal-format msgid "stack limit expression is not supported" msgstr "no se admite la expresión del límite de la pila" @@ -28999,8 +29063,8 @@ msgid "MSP430 builtin functions only work inside interrupt handlers" msgstr "las funciones internas de MSP430 solo funcionan dentro de manejadores de interrupciones" -#: config/msp430/msp430.c:2606 config/rx/rx.c:2635 config/xtensa/xtensa.c:3375 -#: config/xtensa/xtensa.c:3401 +#: config/msp430/msp430.c:2606 config/rx/rx.c:2635 config/xtensa/xtensa.c:3376 +#: config/xtensa/xtensa.c:3402 #, gcc-internal-format msgid "bad builtin code" msgstr "código interno erróneo" @@ -29253,27 +29317,27 @@ msgid "PTX does not support weak declarations (only weak definitions)" msgstr "PTX no admite declaraciones débiles (solamente definiciones débiles)" -#: config/nvptx/nvptx.c:4283 +#: config/nvptx/nvptx.c:4299 #, gcc-internal-format msgid "%qE attribute requires a void return type" msgstr "el atributo %qE requiere tipo de retorno void" -#: config/nvptx/nvptx.c:4306 +#: config/nvptx/nvptx.c:4322 #, gcc-internal-format msgid "%qE attribute not allowed with auto storage class" msgstr "no se permite el atributo %qE con una clase de auto almacenamiento" -#: config/nvptx/nvptx.c:4674 +#: config/nvptx/nvptx.c:4690 #, gcc-internal-format, gfc-internal-format msgid "using vector_length (%d), ignoring %d" msgstr "se usa vector_length (%d); se hace caso omiso de %d" -#: config/nvptx/nvptx.c:4675 +#: config/nvptx/nvptx.c:4691 #, gcc-internal-format, gfc-internal-format msgid "using vector_length (%d), ignoring runtime setting" msgstr "se usa vector_length (%d); se hace caso omiso de la configuración de tiempo de ejecución" -#: config/nvptx/nvptx.c:4685 +#: config/nvptx/nvptx.c:4701 #, gcc-internal-format, gfc-internal-format msgid "using num_workers (%d), ignoring %d" msgstr "se usa num_workers (%d); se hace caso omiso de %d" @@ -29298,7 +29362,7 @@ msgid "-g option disabled" msgstr "opción -g desactivada" -#: config/pa/pa.c:8769 +#: config/pa/pa.c:8793 #, gcc-internal-format, gfc-internal-format msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u" msgstr "la alineación (%u) para %s excede la alineación máxima para los datos comunes globales. Se usará %u" @@ -29433,157 +29497,157 @@ msgid "junk at end of #pragma longcall" msgstr "basura al final de #pragma longcall" -#: config/rs6000/rs6000-c.c:5575 +#: config/rs6000/rs6000-c.c:5578 #, gcc-internal-format msgid "vec_lvsl is deprecated for little endian; use assignment for unaligned loads and stores" msgstr "vec_lvsl está obsoleta para little endian; utilize asignación para cargas y almacenajes no alineados" -#: config/rs6000/rs6000-c.c:5579 +#: config/rs6000/rs6000-c.c:5582 #, gcc-internal-format msgid "vec_lvsr is deprecated for little endian; use assignment for unaligned loads and stores" msgstr "vec_lvsr está obsoleta para little endian; utilize asignación para cargas y almacenajes no alineados" -#: config/rs6000/rs6000-c.c:5589 +#: config/rs6000/rs6000-c.c:5592 #, gcc-internal-format msgid "vec_mul only accepts 2 arguments" msgstr "vec_mul sólo acepta 2 argumentos" -#: config/rs6000/rs6000-c.c:5640 +#: config/rs6000/rs6000-c.c:5643 #, gcc-internal-format msgid "vec_cmpne only accepts 2 arguments" msgstr "vec_cmpne sólo acepta 2 argumentos" -#: config/rs6000/rs6000-c.c:5710 +#: config/rs6000/rs6000-c.c:5713 #, gcc-internal-format msgid "vec_adde only accepts 3 arguments" msgstr "vec_adde sólo acepta 3 argumentos" -#: config/rs6000/rs6000-c.c:5774 +#: config/rs6000/rs6000-c.c:5777 #, gcc-internal-format msgid "vec_addec only accepts 3 arguments" msgstr "vec_addec sólo acepta 3 argumentos" -#: config/rs6000/rs6000-c.c:5862 +#: config/rs6000/rs6000-c.c:5865 #, gcc-internal-format, gfc-internal-format msgid "%s only accepts %d arguments" msgstr "%s sólo acepta %d argumentos" -#: config/rs6000/rs6000-c.c:5867 +#: config/rs6000/rs6000-c.c:5870 #, gcc-internal-format, gfc-internal-format msgid "%s only accepts 1 argument" msgstr "%s sólo acepta 1 argumento" -#: config/rs6000/rs6000-c.c:5872 +#: config/rs6000/rs6000-c.c:5875 #, gcc-internal-format, gfc-internal-format msgid "%s only accepts 2 arguments" msgstr "%s sólo acepta 2 argumentos" -#: config/rs6000/rs6000-c.c:5938 +#: config/rs6000/rs6000-c.c:5941 #, gcc-internal-format msgid "vec_extract only accepts 2 arguments" msgstr "vec_extract sólo acepta 2 argumentos" -#: config/rs6000/rs6000-c.c:6107 +#: config/rs6000/rs6000-c.c:6110 #, gcc-internal-format msgid "vec_insert only accepts 3 arguments" msgstr "vec_insert sólo acepta 3 argumentos" -#: config/rs6000/rs6000-c.c:6381 +#: config/rs6000/rs6000-c.c:6388 #, gcc-internal-format msgid "passing arg %d of %qE discards qualifiers from pointer target type" msgstr "el paso del argumento %d de %qE descarta los calificadores del tipo del destino del puntero" -#: config/rs6000/rs6000-c.c:6435 +#: config/rs6000/rs6000-c.c:6442 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s not supported in this compiler configuration" msgstr "No se admite la función interna %s en esta configuración del compilador" -#: config/rs6000/rs6000-c.c:6443 +#: config/rs6000/rs6000-c.c:6450 #, gcc-internal-format, gfc-internal-format msgid "invalid parameter combination for AltiVec intrinsic %s" msgstr "combinación de parámetros no válida para el intrínseco AltiVec %s" -#: config/rs6000/rs6000.c:3642 +#: config/rs6000/rs6000.c:3644 #, gcc-internal-format msgid "-mrecip requires -ffinite-math or -ffast-math" msgstr "-recip requiere -ffinite-math o -ffast-math" -#: config/rs6000/rs6000.c:3644 +#: config/rs6000/rs6000.c:3646 #, gcc-internal-format msgid "-mrecip requires -fno-trapping-math or -ffast-math" msgstr "-mrecip requiere -fno-trapping-math o -ffast-math" -#: config/rs6000/rs6000.c:3646 +#: config/rs6000/rs6000.c:3648 #, gcc-internal-format msgid "-mrecip requires -freciprocal-math or -ffast-math" msgstr "-mrecip requiere -freciprocal-math o -ffast-math" -#: config/rs6000/rs6000.c:3746 +#: config/rs6000/rs6000.c:3748 #, gcc-internal-format msgid "-m64 requires PowerPC64 architecture, enabling" msgstr "-m64 requiere la arquitectura PowerPC64, activando" -#: config/rs6000/rs6000.c:3929 +#: config/rs6000/rs6000.c:3931 #, gcc-internal-format msgid "-malign-power is not supported for 64-bit Darwin; it is incompatible with the installed C and C++ libraries" msgstr "no se admite -malign-power para Darwin de 64-bit; es incompatible con las bibliotecas C y C++ instaladas" -#: config/rs6000/rs6000.c:4021 +#: config/rs6000/rs6000.c:4023 #, gcc-internal-format msgid "will not generate power9 instructions because assembler lacks power9 support" msgstr "no generará instrucciones power9 porque el ensamblador no las admite" -#: config/rs6000/rs6000.c:4030 +#: config/rs6000/rs6000.c:4032 #, gcc-internal-format msgid "will not generate power8 instructions because assembler lacks power8 support" msgstr "no generará instrucciones power8 porque el ensamblador no las admite" -#: config/rs6000/rs6000.c:4039 +#: config/rs6000/rs6000.c:4041 #, gcc-internal-format msgid "will not generate power7 instructions because assembler lacks power7 support" msgstr "no generará instrucciones power7 porque el ensamblador no las admite" -#: config/rs6000/rs6000.c:4048 +#: config/rs6000/rs6000.c:4050 #, gcc-internal-format msgid "will not generate power6 instructions because assembler lacks power6 support" msgstr "no generará instrucciones power6 porque el ensamblador no las admite" -#: config/rs6000/rs6000.c:4057 +#: config/rs6000/rs6000.c:4059 #, gcc-internal-format msgid "will not generate power5 instructions because assembler lacks power5 support" msgstr "no generará instrucciones power5 porque el ensamblador no las admite" -#: config/rs6000/rs6000.c:4145 +#: config/rs6000/rs6000.c:4147 #, gcc-internal-format msgid "not configured for SPE ABI" msgstr "no se configuró para ABI SPE" -#: config/rs6000/rs6000.c:4150 +#: config/rs6000/rs6000.c:4152 #, gcc-internal-format msgid "not configured for SPE instruction set" msgstr "no configurado para el conjunto de instrucciones SPE" -#: config/rs6000/rs6000.c:4156 +#: config/rs6000/rs6000.c:4158 #, gcc-internal-format msgid "target attribute or pragma changes SPE ABI" msgstr "el atributo o pragma target cabia la ABI SPE" -#: config/rs6000/rs6000.c:4163 +#: config/rs6000/rs6000.c:4165 #, gcc-internal-format msgid "AltiVec not supported in this target" msgstr "no se admite AltiVec en este objetivo" -#: config/rs6000/rs6000.c:4165 config/rs6000/rs6000.c:4170 +#: config/rs6000/rs6000.c:4167 config/rs6000/rs6000.c:4172 #, gcc-internal-format msgid "SPE not supported in this target" msgstr "no se admite SPE en este objetivo" -#: config/rs6000/rs6000.c:4198 +#: config/rs6000/rs6000.c:4200 #, gcc-internal-format msgid "-mmultiple is not supported on little endian systems" msgstr "no se admite -mmultiple en sistemas little endian" -#: config/rs6000/rs6000.c:4205 +#: config/rs6000/rs6000.c:4207 #, gcc-internal-format msgid "-mstring is not supported on little endian systems" msgstr "no se admite -mstring en sistemas little endian" @@ -29590,67 +29654,67 @@ #. Enforce that none of the ISA_3_0_MASKS_SERVER flags #. were explicitly cleared. -#: config/rs6000/rs6000.c:4301 config/rs6000/rs6000.c:4312 +#: config/rs6000/rs6000.c:4303 config/rs6000/rs6000.c:4314 #, gcc-internal-format msgid "-mpower9-minmax incompatible with explicitly disabled options" msgstr "-mpower9-minmax es incompatible con las opciones desactivadas explícitamente" -#: config/rs6000/rs6000.c:4304 +#: config/rs6000/rs6000.c:4306 #, gcc-internal-format msgid "Power9 target option is incompatible with -mcpu= for less than power9" msgstr "la opción del objetivo Power9 es incompatible con -mcpu= para menor que power9" -#: config/rs6000/rs6000.c:4336 +#: config/rs6000/rs6000.c:4338 #, gcc-internal-format msgid "-mcrypto requires -maltivec" msgstr "-mcrypto requiere -maltivec" -#: config/rs6000/rs6000.c:4343 +#: config/rs6000/rs6000.c:4345 #, gcc-internal-format msgid "-mdirect-move requires -mvsx" msgstr "-mdirect-move requiere -mvsx" -#: config/rs6000/rs6000.c:4350 +#: config/rs6000/rs6000.c:4352 #, gcc-internal-format msgid "-mpower8-vector requires -maltivec" msgstr "-mpower8-vector requiere -maltivec" -#: config/rs6000/rs6000.c:4358 +#: config/rs6000/rs6000.c:4360 #, gcc-internal-format msgid "-mpower8-vector requires -mvsx" msgstr "-mpower8-vector requiere -mvsx" -#: config/rs6000/rs6000.c:4377 +#: config/rs6000/rs6000.c:4379 #, gcc-internal-format msgid "-mvsx-timode requires -mvsx" msgstr "-mvsx-timode requiere -mvsx" -#: config/rs6000/rs6000.c:4384 +#: config/rs6000/rs6000.c:4386 #, gcc-internal-format msgid "-mhard-dfp requires -mhard-float" msgstr "-mhard-dfp requiere -mhard-float" -#: config/rs6000/rs6000.c:4437 +#: config/rs6000/rs6000.c:4439 #, gcc-internal-format msgid "-mupper-regs-df requires -mvsx" msgstr "-mupper-regs-df requiere -mvsx" -#: config/rs6000/rs6000.c:4444 +#: config/rs6000/rs6000.c:4446 #, gcc-internal-format msgid "-mupper-regs-di requires -mvsx" msgstr "-mupper-regs-di requiere -mvsx" -#: config/rs6000/rs6000.c:4451 +#: config/rs6000/rs6000.c:4453 #, gcc-internal-format msgid "-mupper-regs-sf requires -mpower8-vector" msgstr "-mupper-regs-sf requiere -mpower8-vector" -#: config/rs6000/rs6000.c:4500 +#: config/rs6000/rs6000.c:4502 #, gcc-internal-format msgid "-mpower8-fusion-sign requires -mpower8-fusion" msgstr "-mpower8-fusion-sign requiere -mpower8-fusion" -#: config/rs6000/rs6000.c:4503 +#: config/rs6000/rs6000.c:4505 #, gcc-internal-format msgid "-mtoc-fusion requires -mpower8-fusion" msgstr "-mtoc-fusion requiere -mpower8-fusion" @@ -29659,244 +29723,244 @@ #. error messages. However, if users have managed to select #. power9-fusion without selecting power8-fusion, they #. already know about undocumented flags. -#: config/rs6000/rs6000.c:4520 +#: config/rs6000/rs6000.c:4522 #, gcc-internal-format msgid "-mpower9-fusion requires -mpower8-fusion" msgstr "-mpower9-fusion requiere -mpower8-fusion" -#: config/rs6000/rs6000.c:4573 +#: config/rs6000/rs6000.c:4575 #, gcc-internal-format msgid "-mpower9-vector requires -mpower8-vector" msgstr "-mpower9-vector requiere -mpower8-vector" -#: config/rs6000/rs6000.c:4618 +#: config/rs6000/rs6000.c:4620 #, gcc-internal-format msgid "-mpower9-dform requires -mpower9-vector" msgstr "-mpower9-dform requiere -mpower9-vector" -#: config/rs6000/rs6000.c:4647 +#: config/rs6000/rs6000.c:4649 #, gcc-internal-format msgid "-mpower9-dform, -mpower9-dform-vector, -mpower9-dform-scalar require -mdirect-move" msgstr "-mpower9-dform, -mpower9-dform-vector, -mpower9-dform-scalar requieren -mdirect-move" -#: config/rs6000/rs6000.c:4670 +#: config/rs6000/rs6000.c:4672 #, gcc-internal-format msgid "-mpower9-dform requires -mupper-regs-df" msgstr "-mpower9-dform requiere -mupper-regs-df" -#: config/rs6000/rs6000.c:4677 +#: config/rs6000/rs6000.c:4679 #, gcc-internal-format msgid "-mpower9-dform requires -mupper-regs-sf" msgstr "-mpower9-dform requiere -mupper-regs-sf" -#: config/rs6000/rs6000.c:4697 +#: config/rs6000/rs6000.c:4699 #, gcc-internal-format msgid "-mvsx-timode might need -mlra" msgstr "" -#: config/rs6000/rs6000.c:4722 +#: config/rs6000/rs6000.c:4724 #, gcc-internal-format msgid "-mallow-movmisalign requires -mvsx" msgstr "" -#: config/rs6000/rs6000.c:4737 +#: config/rs6000/rs6000.c:4739 #, gcc-internal-format msgid "-mefficient-unaligned-vsx requires -mvsx" msgstr "" -#: config/rs6000/rs6000.c:4745 +#: config/rs6000/rs6000.c:4747 #, gcc-internal-format msgid "-mefficient-unaligned-vsx requires -mallow-movmisalign" msgstr "" -#: config/rs6000/rs6000.c:4759 +#: config/rs6000/rs6000.c:4761 #, gcc-internal-format msgid "-mvsx-small-integer requires -mpower8-vector, -mupper-regs-di, and -mdirect-move" msgstr "" -#: config/rs6000/rs6000.c:4771 +#: config/rs6000/rs6000.c:4773 #, gcc-internal-format msgid "target attribute or pragma changes long double size" msgstr "el atributo o pragma target cambia el tamaño de double long" -#: config/rs6000/rs6000.c:4797 +#: config/rs6000/rs6000.c:4799 #, gcc-internal-format msgid "-mfloat128 requires VSX support" msgstr "" -#: config/rs6000/rs6000.c:4807 +#: config/rs6000/rs6000.c:4809 #, gcc-internal-format msgid "-mfloat128-type requires VSX support" msgstr "" -#: config/rs6000/rs6000.c:4823 +#: config/rs6000/rs6000.c:4825 #, gcc-internal-format msgid "-mfloat128 requires -mfloat128-type" msgstr "" -#: config/rs6000/rs6000.c:4836 +#: config/rs6000/rs6000.c:4838 #, fuzzy, gcc-internal-format #| msgid "-mrecip requires -mfused-madd" msgid "-mfloat128-hardware requires -mfloat128-type" msgstr "-mrecip requiere -mfused-madd" -#: config/rs6000/rs6000.c:4859 +#: config/rs6000/rs6000.c:4861 #, gcc-internal-format msgid "-mfloat128-hardware requires full ISA 3.0 support" msgstr "" -#: config/rs6000/rs6000.c:4867 +#: config/rs6000/rs6000.c:4869 #, fuzzy, gcc-internal-format #| msgid "-mrecip requires -mfused-madd" msgid "-mfloat128-hardware requires -m64" msgstr "-mrecip requiere -mfused-madd" -#: config/rs6000/rs6000.c:4931 +#: config/rs6000/rs6000.c:4933 #, gcc-internal-format, gfc-internal-format msgid "unknown vectorization library ABI type (%s) for -mveclibabi= switch" msgstr "tipo de ABI de biblioteca de vectorización desconocida (%s) para la opción -mveclibabi=" -#: config/rs6000/rs6000.c:4952 config/rs6000/rs6000.c:4967 +#: config/rs6000/rs6000.c:4954 config/rs6000/rs6000.c:4969 #, gcc-internal-format msgid "target attribute or pragma changes AltiVec ABI" msgstr "el atributo o pragma target cambia la ABI Altivec" -#: config/rs6000/rs6000.c:4980 +#: config/rs6000/rs6000.c:4982 #, gcc-internal-format msgid "target attribute or pragma changes darwin64 ABI" msgstr "el atributo o pragma target cambia la ABI darwin64" -#: config/rs6000/rs6000.c:5046 +#: config/rs6000/rs6000.c:5048 #, gcc-internal-format msgid "target attribute or pragma changes single precision floating point" msgstr "el atributo o pragma target cambia la coma flotante de precisión sencilla" -#: config/rs6000/rs6000.c:5049 +#: config/rs6000/rs6000.c:5051 #, gcc-internal-format msgid "target attribute or pragma changes double precision floating point" msgstr "el atributo o pragma target cambia la coma flotante de precisión doble" -#: config/rs6000/rs6000.c:5151 +#: config/rs6000/rs6000.c:5153 #, gcc-internal-format msgid "%qs is not a valid number in -mstack-protector-guard-offset=" msgstr "" -#: config/rs6000/rs6000.c:5156 +#: config/rs6000/rs6000.c:5158 #, fuzzy, gcc-internal-format #| msgid "%qs is not a valid option to the preprocessor" msgid "%qs is not a valid offset in -mstack-protector-guard-offset=" msgstr "%qs no es una opción válida para el preprocesador" -#: config/rs6000/rs6000.c:5168 +#: config/rs6000/rs6000.c:5170 #, gcc-internal-format msgid "%qs is not a valid base register in -mstack-protector-guard-reg=" msgstr "" -#: config/rs6000/rs6000.c:5176 +#: config/rs6000/rs6000.c:5178 #, gcc-internal-format msgid "-mstack-protector-guard=tls needs a valid base register" msgstr "" -#: config/rs6000/rs6000.c:8171 +#: config/rs6000/rs6000.c:8202 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6" msgid "the layout of aggregates containing vectors with %d-byte alignment has changed in GCC 5" msgstr "La ABI para pasar parámetros con alineación de %d-bytes cambió en GCC 4.6" -#: config/rs6000/rs6000.c:11584 +#: config/rs6000/rs6000.c:11615 #, gcc-internal-format msgid "GCC vector returned by reference: non-standard ABI extension with no compatibility guarantee" msgstr "Se devolvió un vector GCC por referencia: extensión de ABI no estándar sin garantía de compatibilidad" -#: config/rs6000/rs6000.c:11746 +#: config/rs6000/rs6000.c:11777 #, gcc-internal-format msgid "cannot return value in vector register because altivec instructions are disabled, use -maltivec to enable them" msgstr "no se puede devolver un valor en el registro vector porque las instrucciones altivec están desactivadas, use -maltivec para activarlas" -#: config/rs6000/rs6000.c:11946 +#: config/rs6000/rs6000.c:11977 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6" msgid "the ABI of passing aggregates with %d-byte alignment has changed in GCC 5" msgstr "La ABI para pasar parámetros con alineación de %d-bytes cambió en GCC 4.6" -#: config/rs6000/rs6000.c:12215 +#: config/rs6000/rs6000.c:12246 #, gcc-internal-format msgid "cannot pass argument in vector register because altivec instructions are disabled, use -maltivec to enable them" msgstr "no se puede pasar argumentos en el registro vector porque las instrucciones altivec están desactivadas, use -maltivec para activarlas" -#: config/rs6000/rs6000.c:13067 +#: config/rs6000/rs6000.c:13098 #, fuzzy, gcc-internal-format #| msgid "the ABI of passing structure with complex float member has changed in GCC 4.4" msgid "the ABI of passing homogeneous float aggregates has changed in GCC 5" msgstr "la ABI para pasar una estructura con un miembro de coma flotante compleja cambió en GCC 4.4" -#: config/rs6000/rs6000.c:13242 +#: config/rs6000/rs6000.c:13273 #, gcc-internal-format msgid "GCC vector passed by reference: non-standard ABI extension with no compatibility guarantee" msgstr "vector GCC pasado por referencia: extensión ABI que no es estándar sin garantía de compatibilidad" -#: config/rs6000/rs6000.c:14036 +#: config/rs6000/rs6000.c:14067 #, gcc-internal-format, gfc-internal-format msgid "internal error: builtin function %s already processed" msgstr "error interno: la función interna %s ya se procesó" -#: config/rs6000/rs6000.c:14540 +#: config/rs6000/rs6000.c:14571 #, fuzzy, gcc-internal-format #| msgid "argument 1 must be a 5-bit signed literal" msgid "argument 1 must be an 8-bit field value" msgstr "el argumento 1 debe ser una literal con signo de 5-bit" -#: config/rs6000/rs6000.c:14586 +#: config/rs6000/rs6000.c:14617 #, gcc-internal-format msgid "argument 1 must be a 5-bit signed literal" msgstr "el argumento 1 debe ser una literal con signo de 5-bit" -#: config/rs6000/rs6000.c:14689 config/rs6000/rs6000.c:16557 +#: config/rs6000/rs6000.c:14720 config/rs6000/rs6000.c:16593 #, gcc-internal-format msgid "argument 2 must be a 5-bit unsigned literal" msgstr "el argumento 2 debe ser una literal sin signo de 5-bit" -#: config/rs6000/rs6000.c:14707 +#: config/rs6000/rs6000.c:14738 #, fuzzy, gcc-internal-format #| msgid "argument 2 must be a 5-bit unsigned literal" msgid "argument 1 must be a 6-bit unsigned literal" msgstr "el argumento 2 debe ser una literal sin signo de 5-bit" -#: config/rs6000/rs6000.c:14721 +#: config/rs6000/rs6000.c:14752 #, fuzzy, gcc-internal-format #| msgid "argument 2 must be a 5-bit unsigned literal" msgid "argument 2 must be a 7-bit unsigned literal" msgstr "el argumento 2 debe ser una literal sin signo de 5-bit" -#: config/rs6000/rs6000.c:14760 +#: config/rs6000/rs6000.c:14791 #, gcc-internal-format msgid "argument 1 of __builtin_altivec_predicate must be a constant" msgstr "el argumento 1 de __builtin_altivec_predicate debe ser una constante" -#: config/rs6000/rs6000.c:14817 +#: config/rs6000/rs6000.c:14848 #, gcc-internal-format msgid "argument 1 of __builtin_altivec_predicate is out of range" msgstr "el argumento 1 de __builtin_altivec_predicate está fuera de rango" -#: config/rs6000/rs6000.c:15305 +#: config/rs6000/rs6000.c:15336 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "%srtd%s is ignored in 64bit mode" msgid "builtin %s is only valid in 64-bit mode" msgstr "se descarta %srtd%s en el modo de 64bit" -#: config/rs6000/rs6000.c:15354 +#: config/rs6000/rs6000.c:15385 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "argument 2 must be a 5-bit unsigned literal" msgid "argument %d must be an unsigned literal" msgstr "el argumento 2 debe ser una literal sin signo de 5-bit" -#: config/rs6000/rs6000.c:15356 +#: config/rs6000/rs6000.c:15387 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "argument 1 of __builtin_spe_predicate is out of range" msgid "argument %d is an unsigned literal that is out of range" msgstr "el argumento 1 de __builtin_spe_predicate está fuera de rango" -#: config/rs6000/rs6000.c:15494 +#: config/rs6000/rs6000.c:15525 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "%s only accepts 1 argument" msgid "builtin %s only accepts a string argument" @@ -29903,7 +29967,7 @@ msgstr "%s sólo acepta 1 argumento" #. Invalid CPU argument. -#: config/rs6000/rs6000.c:15513 +#: config/rs6000/rs6000.c:15544 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "%qs is an invalid argument to -mcpu=" msgid "cpu %s is an invalid argument to builtin %s" @@ -29910,79 +29974,84 @@ msgstr "%qs es un argumento no válido para -mcpu=" #. Invalid HWCAP argument. -#: config/rs6000/rs6000.c:15541 +#: config/rs6000/rs6000.c:15572 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "%qs is an invalid argument to -mcpu=" msgid "hwcap %s is an invalid argument to builtin %s" msgstr "%qs es un argumento no válido para -mcpu=" -#: config/rs6000/rs6000.c:15615 +#: config/rs6000/rs6000.c:15598 +#, gcc-internal-format, gfc-internal-format +msgid "%s needs GLIBC (2.23 and newer) that exports hardware capability bits" +msgstr "" + +#: config/rs6000/rs6000.c:15651 #, gcc-internal-format msgid "argument 3 must be a 4-bit unsigned literal" msgstr "el argumento 3 debe ser una literal sin signo de 4-bit" -#: config/rs6000/rs6000.c:15640 +#: config/rs6000/rs6000.c:15676 #, gcc-internal-format msgid "argument 3 must be a 2-bit unsigned literal" msgstr "el argumento 3 debe ser una literal sin signo de 2-bit" -#: config/rs6000/rs6000.c:15660 +#: config/rs6000/rs6000.c:15696 #, gcc-internal-format msgid "argument 3 must be a 1-bit unsigned literal" msgstr "el argumento 3 debe ser una literal sin signo de 1-bit" -#: config/rs6000/rs6000.c:15672 +#: config/rs6000/rs6000.c:15708 #, fuzzy, gcc-internal-format #| msgid "argument 1 must be a map" msgid "argument 1 must be 0 or 2" msgstr "el argumento 1 debe ser un mapa" -#: config/rs6000/rs6000.c:15684 +#: config/rs6000/rs6000.c:15720 #, fuzzy, gcc-internal-format #| msgid "argument 3 must be a 1-bit unsigned literal" msgid "argument 1 must be a 1-bit unsigned literal" msgstr "el argumento 3 debe ser una literal sin signo de 1-bit" -#: config/rs6000/rs6000.c:15698 +#: config/rs6000/rs6000.c:15734 #, fuzzy, gcc-internal-format #| msgid "argument 2 must be a 5-bit unsigned literal" msgid "argument 2 must be a 6-bit unsigned literal" msgstr "el argumento 2 debe ser una literal sin signo de 5-bit" -#: config/rs6000/rs6000.c:15710 +#: config/rs6000/rs6000.c:15746 #, fuzzy, gcc-internal-format #| msgid "number must be 0 or 1" msgid "argument 2 must be 0 or 1" msgstr "el número debe ser 0 ó 1" -#: config/rs6000/rs6000.c:15717 +#: config/rs6000/rs6000.c:15753 #, fuzzy, gcc-internal-format #| msgid "argument %d of %qE must be in the range %d...%d" msgid "argument 3 must be in the range 0..15" msgstr "el argumento %d de %qE debe estar dentro del rango %d...%d" -#: config/rs6000/rs6000.c:15906 +#: config/rs6000/rs6000.c:15942 #, gcc-internal-format msgid "argument to %qs must be a 2-bit unsigned literal" msgstr "el argumento para %qs debe ser una literal sin signo de 2-bit" -#: config/rs6000/rs6000.c:16063 +#: config/rs6000/rs6000.c:16099 #, gcc-internal-format msgid "unresolved overload for Altivec builtin %qF" msgstr "sobrecarga sin resolver para el interno Altivec %qF" -#: config/rs6000/rs6000.c:16237 +#: config/rs6000/rs6000.c:16273 #, gcc-internal-format msgid "argument to dss must be a 2-bit unsigned literal" msgstr "el argumento para dss debe ser una literal sin signo de 2-bit" -#: config/rs6000/rs6000.c:16285 +#: config/rs6000/rs6000.c:16321 #, fuzzy, gcc-internal-format #| msgid "second argument to %<__builtin_expect%> must be a constant" msgid "second argument to vec_vextract4b must be 0..12" msgstr "el segundo argumento de %<__builtin_expect%> debe ser una constante" -#: config/rs6000/rs6000.c:16302 +#: config/rs6000/rs6000.c:16338 #, fuzzy, gcc-internal-format #| msgid "third argument to %<__builtin_prefetch%> must be a constant" msgid "third argument to vec_vinsert4b must be 0..12" @@ -29989,218 +30058,218 @@ msgstr "el tercer argumento de %<__builtin_prefetch%> debe ser una constante" # continuar aqui -#: config/rs6000/rs6000.c:16677 +#: config/rs6000/rs6000.c:16713 #, gcc-internal-format msgid "argument 1 of __builtin_paired_predicate must be a constant" msgstr "el argumento 1 de __builtin_paired_predicate debe ser una constante" -#: config/rs6000/rs6000.c:16724 +#: config/rs6000/rs6000.c:16760 #, gcc-internal-format msgid "argument 1 of __builtin_paired_predicate is out of range" msgstr "el argumento 1 de __builtin_paired_predicate está fuera de rango" -#: config/rs6000/rs6000.c:16749 +#: config/rs6000/rs6000.c:16785 #, gcc-internal-format msgid "argument 1 of __builtin_spe_predicate must be a constant" msgstr "el argumento 1 de __builtin_spe_predicate debe ser una constante" -#: config/rs6000/rs6000.c:16821 +#: config/rs6000/rs6000.c:16857 #, gcc-internal-format msgid "argument 1 of __builtin_spe_predicate is out of range" msgstr "el argumento 1 de __builtin_spe_predicate está fuera de rango" -#: config/rs6000/rs6000.c:16903 +#: config/rs6000/rs6000.c:16939 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s is only valid for the cell processor" msgstr "La función interna %s sólo es válida para el procesador cell" -#: config/rs6000/rs6000.c:16905 +#: config/rs6000/rs6000.c:16941 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mvsx option" msgstr "La función interna %s requiere la opción -mvsx" -#: config/rs6000/rs6000.c:16907 +#: config/rs6000/rs6000.c:16943 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Builtin function %s requires the -mvsx option" msgid "Builtin function %s requires the -mhtm option" msgstr "La función interna %s requiere la opción -mvsx" -#: config/rs6000/rs6000.c:16909 +#: config/rs6000/rs6000.c:16945 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -maltivec option" msgstr "La función interna %s requiere la opción -maltivec" -#: config/rs6000/rs6000.c:16911 +#: config/rs6000/rs6000.c:16947 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mpaired option" msgstr "La función interna %s requiere la opción -mpaired" -#: config/rs6000/rs6000.c:16913 +#: config/rs6000/rs6000.c:16949 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mspe option" msgstr "La función interna %s requiere la opción -mspe" -#: config/rs6000/rs6000.c:16916 +#: config/rs6000/rs6000.c:16952 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Builtin function %s requires the -mpaired option" msgid "Builtin function %s requires the -mhard-dfp and -mpower8-vector options" msgstr "La función interna %s requiere la opción -mpaired" -#: config/rs6000/rs6000.c:16919 +#: config/rs6000/rs6000.c:16955 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Builtin function %s requires the -mpaired option" msgid "Builtin function %s requires the -mhard-dfp option" msgstr "La función interna %s requiere la opción -mpaired" -#: config/rs6000/rs6000.c:16921 +#: config/rs6000/rs6000.c:16957 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Builtin function %s requires the -mspe option" msgid "Builtin function %s requires the -mpower8-vector option" msgstr "La función interna %s requiere la opción -mspe" -#: config/rs6000/rs6000.c:16924 config/rs6000/rs6000.c:16930 +#: config/rs6000/rs6000.c:16960 config/rs6000/rs6000.c:16966 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Builtin function %s requires the -mspe option" msgid "Builtin function %s requires the -mcpu=power9 and -m64 options" msgstr "La función interna %s requiere la opción -mspe" -#: config/rs6000/rs6000.c:16927 config/rs6000/rs6000.c:16933 +#: config/rs6000/rs6000.c:16963 config/rs6000/rs6000.c:16969 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Builtin function %s requires the -mspe option" msgid "Builtin function %s requires the -mcpu=power9 option" msgstr "La función interna %s requiere la opción -mspe" -#: config/rs6000/rs6000.c:16936 +#: config/rs6000/rs6000.c:16972 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Builtin function %s requires the -maltivec option" msgid "Builtin function %s requires the -mhard-float and -mlong-double-128 options" msgstr "La función interna %s requiere la opción -maltivec" -#: config/rs6000/rs6000.c:16939 +#: config/rs6000/rs6000.c:16975 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Builtin function %s requires the -mpaired option" msgid "Builtin function %s requires the -mhard-float option" msgstr "La función interna %s requiere la opción -mpaired" -#: config/rs6000/rs6000.c:16941 +#: config/rs6000/rs6000.c:16977 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "Builtin function %s requires the -maltivec option" msgid "Builtin function %s requires the -mfloat128 option" msgstr "La función interna %s requiere la opción -maltivec" -#: config/rs6000/rs6000.c:16943 +#: config/rs6000/rs6000.c:16979 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s is not supported with the current options" msgstr "La función interna %s no se admite con las opciones actuales" -#: config/rs6000/rs6000.c:18786 +#: config/rs6000/rs6000.c:18833 #, gcc-internal-format, gfc-internal-format msgid "internal error: builtin function %s had an unexpected return type %s" msgstr "error interno: la función interna %s tiene un tipo de devolución inesperado %s" -#: config/rs6000/rs6000.c:18803 +#: config/rs6000/rs6000.c:18850 #, gcc-internal-format, gfc-internal-format msgid "internal error: builtin function %s, argument %d had unexpected argument type %s" msgstr "error interno: función interna %s, el argumento %d tiene el tipo de argumento inesperado %s" -#: config/rs6000/rs6000.c:28088 +#: config/rs6000/rs6000.c:28135 #, gcc-internal-format msgid "stack frame too large" msgstr "marco de pila demasiado grande" -#: config/rs6000/rs6000.c:31766 +#: config/rs6000/rs6000.c:31815 #, fuzzy, gcc-internal-format #| msgid "-fsplit-stack does not support 3 register parameters" msgid "-fsplit-stack uses register r29" msgstr "-fsplit-stack no admite 3 parámetros de registro" -#: config/rs6000/rs6000.c:31774 +#: config/rs6000/rs6000.c:31823 #, fuzzy, gcc-internal-format #| msgid "#pragma GCC target is not supported for this machine" msgid "Stack frame larger than 2G is not supported for -fsplit-stack" msgstr "No se admite #pragma GCC target en este objetivo" -#: config/rs6000/rs6000.c:32762 +#: config/rs6000/rs6000.c:32811 #, gcc-internal-format msgid "no profiling of 64-bit code for this ABI" msgstr "no hay análisis de perfil del código de 64-bit para esta ABI" -#: config/rs6000/rs6000.c:35065 +#: config/rs6000/rs6000.c:35114 #, gcc-internal-format msgid "You cannot take the address of a nested function if you use the -mno-pointers-to-nested-functions option." msgstr "No se puede tomar la dirección de una función anindada si se usa la opción -mno-pointers-to-nested-functions." -#: config/rs6000/rs6000.c:35147 +#: config/rs6000/rs6000.c:35196 #, gcc-internal-format msgid "use of % in AltiVec types is invalid" msgstr "el uso de % en tipos AltiVec es no válido" -#: config/rs6000/rs6000.c:35149 +#: config/rs6000/rs6000.c:35198 #, gcc-internal-format msgid "use of boolean types in AltiVec types is invalid" msgstr "el uso de tipos booleanos en tipos AltiVec es no válido" -#: config/rs6000/rs6000.c:35151 +#: config/rs6000/rs6000.c:35200 #, gcc-internal-format msgid "use of % in AltiVec types is invalid" msgstr "el uso de % en tipos AltiVec es no válido" -#: config/rs6000/rs6000.c:35153 +#: config/rs6000/rs6000.c:35202 #, gcc-internal-format msgid "use of decimal floating point types in AltiVec types is invalid" msgstr "el uso de tipos de coma flotante decimal en tipos AltiVec es no válido" -#: config/rs6000/rs6000.c:35159 +#: config/rs6000/rs6000.c:35208 #, gcc-internal-format msgid "use of % in AltiVec types is invalid for 64-bit code without -mvsx" msgstr "el uso de % en tipos AltiVec es no válido para código de 64 bit sin -mvsx" -#: config/rs6000/rs6000.c:35162 +#: config/rs6000/rs6000.c:35211 #, gcc-internal-format msgid "use of % in AltiVec types is deprecated; use %" msgstr "el uso de % en tipos AltiVec es obsoleto; use %" -#: config/rs6000/rs6000.c:35167 +#: config/rs6000/rs6000.c:35216 #, gcc-internal-format msgid "use of % in AltiVec types is invalid without -mvsx" msgstr "el uso de % en tipos AltiVec es no válido sin -mvsx" -#: config/rs6000/rs6000.c:35170 +#: config/rs6000/rs6000.c:35219 #, gcc-internal-format msgid "use of % in AltiVec types is invalid without -mvsx" msgstr "el uso de % en tipos AltiVec es no válido sin -mvsx" -#: config/rs6000/rs6000.c:38943 +#: config/rs6000/rs6000.c:38992 #, gcc-internal-format, gfc-internal-format msgid "emitting microcode insn %s\t[%s] #%d" msgstr "se emite el insn de microcódigo %s\t[%s] #%d" -#: config/rs6000/rs6000.c:38947 +#: config/rs6000/rs6000.c:38996 #, gcc-internal-format, gfc-internal-format msgid "emitting conditional microcode insn %s\t[%s] #%d" msgstr "se emite el insn de microcódigo condicional %s\t[%s] #%d" -#: config/rs6000/rs6000.c:39255 +#: config/rs6000/rs6000.c:39304 #, gcc-internal-format, gfc-internal-format msgid "invalid cpu \"%s\" for %s\"%s\"%s" msgstr "cpu \"%s\" no válido para %s\"%s\"%s" -#: config/rs6000/rs6000.c:39258 +#: config/rs6000/rs6000.c:39307 #, gcc-internal-format, gfc-internal-format msgid "%s\"%s\"%s is not allowed" msgstr "%s\"%s\"%s no está definido" -#: config/rs6000/rs6000.c:39260 +#: config/rs6000/rs6000.c:39309 #, gcc-internal-format, gfc-internal-format msgid "%s\"%s\"%s is invalid" msgstr "%s\"%s\"%s es no válido" -#: config/rs6000/rs6000.c:39777 +#: config/rs6000/rs6000.c:39826 #, gcc-internal-format, gfc-internal-format msgid "-mno-%s turns off -m%s" msgstr "" -#: config/rs6000/rs6000.c:39794 +#: config/rs6000/rs6000.c:39843 #, gcc-internal-format msgid "-mno-power9-vector turns off -mpower9-dform" msgstr "" @@ -30391,6 +30460,7 @@ msgstr "-mas100-syntax es incompatible con -gdwarf" #: config/rs6000/freebsd64.h:113 config/rs6000/linux64.h:135 +#: config/rs6000/rtems.h:96 #, gcc-internal-format msgid "-m64 requires a PowerPC64 cpu" msgstr "-m64 requiere un procesador PowerPC64" @@ -30483,7 +30553,7 @@ msgid "builtin vec_step can only be used on vector types." msgstr "" -#: config/s390/s390-c.c:685 config/s390/s390.c:913 +#: config/s390/s390-c.c:685 config/s390/s390.c:916 #, gcc-internal-format msgid "constant value required for builtin %qF argument %d" msgstr "" @@ -30511,9 +30581,10 @@ msgstr "--resource requiere -o" #: config/s390/s390-c.c:889 -#, gcc-internal-format -msgid "%qF requires -march=arch12 or higher" -msgstr "" +#, fuzzy, gcc-internal-format +#| msgid "--resource requires -o" +msgid "%qF requires z14 or higher" +msgstr "--resource requiere -o" #: config/s390/s390-c.c:903 #, gcc-internal-format @@ -30533,9 +30604,10 @@ msgstr "sobrecarga ambigua para %qs en %<%s %E%>" #: config/s390/s390-c.c:966 -#, gcc-internal-format -msgid "%qs matching variant requires -march=arch12 or higher" -msgstr "" +#, fuzzy, gcc-internal-format +#| msgid "%qs is deprecated" +msgid "%qs matching variant requires z14 or higher" +msgstr "%qs es obsoleto" #: config/s390/s390-c.c:972 #, fuzzy, gcc-internal-format @@ -30549,162 +30621,162 @@ msgid "constant argument %d for builtin %qF is out of range for target type" msgstr "el argumento constante está fuera de rango para %qs" -#: config/s390/s390.c:769 +#: config/s390/s390.c:772 #, fuzzy, gcc-internal-format #| msgid "constant argument out of range for %qs" msgid "constant argument %d for builtin %qF is out of range (0.." msgstr "el argumento constante está fuera de rango para %qs." -#: config/s390/s390.c:786 +#: config/s390/s390.c:789 #, fuzzy, gcc-internal-format #| msgid "constant argument out of range for %qs" msgid "constant argument %d for builtin %qF is out of range (" msgstr "el argumento constante está fuera de rango para %qs" -#: config/s390/s390.c:837 +#: config/s390/s390.c:840 #, gcc-internal-format msgid "builtin %qF is not supported without -mhtm (default with -march=zEC12 and higher)." msgstr "" -#: config/s390/s390.c:843 +#: config/s390/s390.c:846 #, gcc-internal-format msgid "builtin %qF requires -mvx (default with -march=z13 and higher)." msgstr "" -#: config/s390/s390.c:850 +#: config/s390/s390.c:853 #, gcc-internal-format -msgid "Builtin %qF requires arch12 or higher." +msgid "Builtin %qF requires z14 or higher." msgstr "" -#: config/s390/s390.c:869 +#: config/s390/s390.c:872 #, fuzzy, gcc-internal-format #| msgid "" msgid "unresolved overloaded builtin" msgstr "" -#: config/s390/s390.c:876 config/tilegx/tilegx.c:3545 +#: config/s390/s390.c:879 config/tilegx/tilegx.c:3545 #: config/tilepro/tilepro.c:3109 #, gcc-internal-format msgid "bad builtin icode" msgstr "icode interno erróneo" -#: config/s390/s390.c:1004 +#: config/s390/s390.c:1007 #, fuzzy, gcc-internal-format #| msgid "Invalid argument %qs for %" msgid "invalid argument %d for builtin %qF" msgstr "Argumento %qs no válido para %" -#: config/s390/s390.c:1105 +#: config/s390/s390.c:1108 #, gcc-internal-format msgid "requested %qE attribute is not a comma separated pair of non-negative integer constants or too large (max. %d)" msgstr "" -#: config/s390/s390.c:9980 +#: config/s390/s390.c:9987 #, gcc-internal-format msgid "total size of local variables exceeds architecture limit" msgstr "el tamaño total de las variables locales excede el límite de la arquitectura" -#: config/s390/s390.c:11094 +#: config/s390/s390.c:11101 #, gcc-internal-format msgid "frame size of function %qs is %wd bytes exceeding user provided stack limit of %d bytes. An unconditional trap is added." msgstr "el tamaño de marco de la función %qs de %wd bytes excede el límite de pila definido por el usuario de %d bytes. Se agrega una trampa incondicional." -#: config/s390/s390.c:11110 +#: config/s390/s390.c:11117 #, gcc-internal-format msgid "frame size of function %qs is %wd bytes which is more than half the stack size. The dynamic check would not be reliable. No check emitted for this function." msgstr "el tamaño de marco de la función %qs de %wd bytes es mayor que la mitad del tamaño de la pila. La revisión dinámica no será confiable. No se emitirá revisión para esta función." -#: config/s390/s390.c:11138 +#: config/s390/s390.c:11145 #, gcc-internal-format msgid "frame size of %qs is %wd bytes" msgstr "el tamaño de marco de %qs es de %wd bytes" -#: config/s390/s390.c:11142 +#: config/s390/s390.c:11149 #, gcc-internal-format msgid "%qs uses dynamic stack allocation" msgstr "%qs utiliza alojamiento dinámico de pila" -#: config/s390/s390.c:11520 +#: config/s390/s390.c:11527 #, gcc-internal-format msgid "CPUs older than z900 are not supported for -fsplit-stack" msgstr "" -#: config/s390/s390.c:14666 +#: config/s390/s390.c:14673 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "% is deprecated and will be removed in a future release" msgid "%sarch=%s%s is deprecated and will be removed in future releases; use at least %sarch=z900%s" msgstr "% es obsoleto y se eliminará en una versión futura" -#: config/s390/s390.c:14678 +#: config/s390/s390.c:14685 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "% is deprecated and will be removed in a future release" msgid "%stune=%s%s is deprecated and will be removed in future releases; use at least %stune=z900%s" msgstr "% es obsoleto y se eliminará en una versión futura" -#: config/s390/s390.c:14690 +#: config/s390/s390.c:14697 #, gcc-internal-format, gfc-internal-format msgid "z/Architecture mode not supported on %s" msgstr "no se admite el modo z/Architecture en %s" -#: config/s390/s390.c:14693 +#: config/s390/s390.c:14700 #, gcc-internal-format msgid "64-bit ABI not supported in ESA/390 mode" msgstr "no se admite la ABI de 64-bit en el modo ESA/390" -#: config/s390/s390.c:14710 +#: config/s390/s390.c:14717 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "hardware decimal floating point instructions not available on %s" msgid "hardware vector support not available on %s" msgstr "las instrucciones de coma flotante decimal de hardware no están disponibles en %s" -#: config/s390/s390.c:14713 +#: config/s390/s390.c:14720 #, gcc-internal-format msgid "hardware vector support not available with -msoft-float" msgstr "" -#: config/s390/s390.c:14741 +#: config/s390/s390.c:14748 #, gcc-internal-format, gfc-internal-format msgid "hardware decimal floating point instructions not available on %s" msgstr "las instrucciones de coma flotante decimal de hardware no están disponibles en %s" -#: config/s390/s390.c:14745 +#: config/s390/s390.c:14752 #, gcc-internal-format msgid "hardware decimal floating point instructions not available in ESA/390 mode" msgstr "las instrucciones de coma flotante decimal de hardware no están disponibles en el modo ESA/390" -#: config/s390/s390.c:14757 +#: config/s390/s390.c:14764 #, gcc-internal-format msgid "-mhard-dfp can%'t be used in conjunction with -msoft-float" msgstr "-mhard-dfp no se puede usar en conjunción con -msoft-float" -#: config/s390/s390.c:14765 +#: config/s390/s390.c:14772 #, gcc-internal-format msgid "-mbackchain -mpacked-stack -mhard-float are not supported in combination" msgstr "no se admiten -mbackchain -mpacked-stack -mhard-float en combinación" -#: config/s390/s390.c:14771 +#: config/s390/s390.c:14778 #, gcc-internal-format msgid "stack size must be greater than the stack guard value" msgstr "el tamaño de la pila debe ser mayor que el valor de la guardia de pila" -#: config/s390/s390.c:14773 +#: config/s390/s390.c:14780 #, gcc-internal-format msgid "stack size must not be greater than 64k" msgstr "el tamaño de la pila no debe ser mayor a 64k" -#: config/s390/s390.c:14776 +#: config/s390/s390.c:14783 #, gcc-internal-format msgid "-mstack-guard implies use of -mstack-size" msgstr "-mstack-guard implica el uso de -mstack-size" #. argument is not a plain number -#: config/s390/s390.c:14874 +#: config/s390/s390.c:14881 #, fuzzy, gcc-internal-format #| msgid "argument to %qs should be a non-negative integer" msgid "arguments to %qs should be non-negative integers" msgstr "el argumento para %qs debe ser un entero no negativo" -#: config/s390/s390.c:14881 +#: config/s390/s390.c:14888 #, fuzzy, gcc-internal-format #| msgid "argument to %qE attribute larger than %d" msgid "argument to %qs is too large (max. %d)" @@ -30711,7 +30783,7 @@ msgstr "el argumento para el atributo %qE es más grande que %d" #. Value is not allowed for the target attribute. -#: config/s390/s390.c:15089 +#: config/s390/s390.c:15096 #, fuzzy, gcc-internal-format #| msgid "%<__int128%> is not supported by this target" msgid "value %qs is not supported by attribute %" @@ -30769,27 +30841,28 @@ msgid "-mrelax is only supported for RTP PIC" msgstr "-mrelax sólo se admite pare el PIC de RTP" -#: config/sparc/sparc.c:1393 +#: config/sparc/sparc.c:1509 #, gcc-internal-format, gfc-internal-format msgid "%s is not supported by this configuration" msgstr "%s no se admite en esta configuración" -#: config/sparc/sparc.c:1400 +#: config/sparc/sparc.c:1516 #, gcc-internal-format msgid "-mlong-double-64 not allowed with -m64" msgstr "no se permite -mlong-double-64 con -m64" -#: config/sparc/sparc.c:1420 +#: config/sparc/sparc.c:1536 #, gcc-internal-format, gfc-internal-format msgid "bad value (%s) for -mcmodel= switch" msgstr "valor erróneo (%s) para el interruptor -mcmodel=" -#: config/sparc/sparc.c:1425 -#, gcc-internal-format -msgid "-mcmodel= is not supported on 32 bit systems" +#: config/sparc/sparc.c:1541 +#, fuzzy, gcc-internal-format +#| msgid "-mcmodel= is not supported on 32 bit systems" +msgid "-mcmodel= is not supported on 32-bit systems" msgstr "-mcmodel= no se admite en sistemas de 32 bit" -#: config/sparc/sparc.c:1432 +#: config/sparc/sparc.c:1548 #, gcc-internal-format msgid "-fcall-saved-REG is not supported for out registers" msgstr "no se admite -fcall-saved-REG para registros de salida" @@ -31077,22 +31150,22 @@ msgid "invalid constant in %<#pragma %s%>" msgstr "constante no válida en %<#pragma pack%> - se descarta" -#: config/xtensa/xtensa.c:2185 +#: config/xtensa/xtensa.c:2186 #, gcc-internal-format msgid "boolean registers required for the floating-point option" msgstr "se requieren registros booleanos para la opción de coma flotante" -#: config/xtensa/xtensa.c:2220 +#: config/xtensa/xtensa.c:2221 #, gcc-internal-format, gfc-internal-format msgid "-f%s is not supported with CONST16 instructions" msgstr "no se admite -f%s con instrucciones CONST16" -#: config/xtensa/xtensa.c:2227 +#: config/xtensa/xtensa.c:2228 #, gcc-internal-format msgid "PIC is required but not supported with CONST16 instructions" msgstr "se requiere PIC pero no se admite con instrucciones CONST16" -#: config/xtensa/xtensa.c:3543 +#: config/xtensa/xtensa.c:3544 #, gcc-internal-format msgid "only uninitialized variables can be placed in a .bss section" msgstr "sólo las variables sin inicializar se pueden colocar en una sección .bss" @@ -31182,7 +31255,7 @@ msgid "could not read the BRIG file" msgstr "no se puede abrir el fichero %s" -#: c/c-array-notation.c:217 c/c-array-notation.c:246 cp/call.c:8205 +#: c/c-array-notation.c:217 c/c-array-notation.c:246 cp/call.c:8210 #: cp/cp-array-notation.c:250 #, fuzzy, gcc-internal-format #| msgid "invalid option argument %qs" @@ -31595,9 +31668,9 @@ msgstr "la etiqueta %qD se define aquí" #: c/c-decl.c:3601 c/c-decl.c:3872 c/c-typeck.c:8091 cp/class.c:1480 -#: cp/class.c:3379 cp/decl.c:3907 cp/decl.c:10592 cp/decl.c:10999 -#: cp/friend.c:383 cp/friend.c:392 cp/parser.c:3166 cp/parser.c:3259 -#: cp/parser.c:3290 cp/parser.c:6043 cp/parser.c:20681 +#: cp/class.c:3381 cp/decl.c:3907 cp/decl.c:10592 cp/decl.c:10999 +#: cp/friend.c:383 cp/friend.c:392 cp/parser.c:3168 cp/parser.c:3261 +#: cp/parser.c:3292 cp/parser.c:6048 cp/parser.c:20704 #, gcc-internal-format msgid "%qD declared here" msgstr "%qD se declara aquí" @@ -31731,7 +31804,7 @@ msgid "%<[*]%> not allowed in other than function prototype scope" msgstr "no se permite %<[*]%> en otro lugar que no sea el ámbido de prototipo de función" -#: c/c-decl.c:4606 cp/decl2.c:1408 +#: c/c-decl.c:4606 cp/decl2.c:1409 #, gcc-internal-format msgid "%q+D in declare target directive does not have mappable type" msgstr "" @@ -32793,7 +32866,7 @@ msgid "two or more data types in declaration specifiers" msgstr "dos o más tipos de datos en los especificadores de la declaración" -#: c/c-decl.c:9853 cp/parser.c:27656 +#: c/c-decl.c:9853 cp/parser.c:27679 #, gcc-internal-format msgid "% is too long for GCC" msgstr "% es demasiado largo para GCC" @@ -32942,17 +33015,17 @@ msgid "ISO C does not support plain % meaning %" msgstr "ISO C no admite % simples que significan %" -#: c/c-decl.c:10925 c/c-decl.c:10938 c/c-decl.c:10964 +#: c/c-decl.c:10925 c/c-decl.c:10941 c/c-decl.c:10967 #, gcc-internal-format msgid "ISO C does not support complex integer types" msgstr "ISO C no admite tipos enteros complejos" -#: c/c-decl.c:11372 cp/semantics.c:5330 +#: c/c-decl.c:11375 cp/semantics.c:5343 #, gcc-internal-format msgid "%<#pragma omp declare reduction%> combiner refers to variable %qD which is not % nor %" msgstr "" -#: c/c-decl.c:11376 cp/semantics.c:5334 +#: c/c-decl.c:11379 cp/semantics.c:5347 #, gcc-internal-format msgid "%<#pragma omp declare reduction%> initializer refers to variable %qD which is not % nor %" msgstr "" @@ -33005,7 +33078,7 @@ msgid "version control conflict marker in file" msgstr "" -#: c/c-parser.c:1035 cp/parser.c:27863 +#: c/c-parser.c:1035 cp/parser.c:27886 #, gcc-internal-format msgid "expected end of line" msgstr "se esperaba fin de línea" @@ -33047,7 +33120,7 @@ msgstr "nombre de tipo %qE desconocido" #: c/c-parser.c:1656 c/c-parser.c:10365 c/c-parser.c:15447 c/c-parser.c:15875 -#: c/c-parser.c:16351 cp/parser.c:35355 cp/parser.c:38379 +#: c/c-parser.c:16351 cp/parser.c:35378 cp/parser.c:38402 #, gcc-internal-format msgid "expected declaration specifiers" msgstr "se esperaban especificadores de declaración" @@ -33063,7 +33136,7 @@ msgid "expected %<;%>, identifier or %<(%>" msgstr "se esperaba %<;>, identificador o %<(%>" -#: c/c-parser.c:1714 cp/parser.c:29516 cp/parser.c:29590 +#: c/c-parser.c:1714 cp/parser.c:29539 cp/parser.c:29613 #, gcc-internal-format msgid "prefix attributes are ignored for methods" msgstr "se descartan los atributos de prefijo para los métodos" @@ -33078,8 +33151,8 @@ msgid "unexpected attribute" msgstr "atributo inesperado" -#: c/c-parser.c:1780 c/c-parser.c:5035 c/c-parser.c:5376 cp/parser.c:10721 -#: cp/parser.c:10908 +#: c/c-parser.c:1780 c/c-parser.c:5035 c/c-parser.c:5376 cp/parser.c:10730 +#: cp/parser.c:10917 #, fuzzy, gcc-internal-format #| msgid "getter/setter attribute must be followed by %<=%>" msgid "% attribute not followed by %<;%>" @@ -33122,7 +33195,7 @@ msgid "%<__auto_type%> may only be used with a single declarator" msgstr "% sólo se puede especificar para variables o declaraciones de función" -#: c/c-parser.c:2028 cp/parser.c:12724 cp/parser.c:12881 +#: c/c-parser.c:2028 cp/parser.c:12733 cp/parser.c:12890 #, gcc-internal-format msgid "expected %<,%> or %<;%>" msgstr "se esperaba %<,%> o %<;%>" @@ -33150,7 +33223,7 @@ msgid "ISO C90 does not support %<_Static_assert%>" msgstr "ISO C90 no admite %<_Static_assert%>" -#: c/c-parser.c:2234 c/c-parser.c:3925 c/c-parser.c:10423 cp/parser.c:38038 +#: c/c-parser.c:2234 c/c-parser.c:3925 c/c-parser.c:10423 cp/parser.c:38061 #, gcc-internal-format msgid "expected string literal" msgstr "se esperaba una cadena literal" @@ -33218,14 +33291,14 @@ #: c/c-parser.c:10030 c/c-parser.c:10083 c/c-parser.c:10099 c/c-parser.c:10145 #: c/c-parser.c:10737 c/c-parser.c:10778 c/c-parser.c:12750 c/c-parser.c:12984 #: c/c-parser.c:14838 c/c-parser.c:17638 c/c-parser.c:17967 -#: c/gimple-parser.c:1008 c/gimple-parser.c:1046 cp/parser.c:27866 -#: cp/parser.c:30359 cp/parser.c:30389 cp/parser.c:30459 cp/parser.c:32558 -#: cp/parser.c:37752 cp/parser.c:38523 +#: c/gimple-parser.c:1008 c/gimple-parser.c:1046 cp/parser.c:27889 +#: cp/parser.c:30382 cp/parser.c:30412 cp/parser.c:30482 cp/parser.c:32581 +#: cp/parser.c:37775 cp/parser.c:38546 #, gcc-internal-format msgid "expected identifier" msgstr "se esperaba un identificador" -#: c/c-parser.c:2780 cp/parser.c:18016 +#: c/c-parser.c:2780 cp/parser.c:18039 #, gcc-internal-format msgid "comma at end of enumerator list" msgstr "coma al final de la lista de enumeradores" @@ -33361,7 +33434,7 @@ msgid "expected %<}%> before %" msgstr "se esperaba %<}%> antes de %" -#: c/c-parser.c:4908 cp/parser.c:11026 +#: c/c-parser.c:4908 cp/parser.c:11035 #, gcc-internal-format msgid "% without a previous %" msgstr "% sin un % previo" @@ -33387,12 +33460,12 @@ msgid "a label can only be part of a statement and a declaration is not a statement" msgstr "una etiqueta sólo puede ser parte de una declaración y una declaración no es un enunciado" -#: c/c-parser.c:5252 cp/parser.c:10573 +#: c/c-parser.c:5252 cp/parser.c:10582 #, gcc-internal-format msgid "-fcilkplus must be enabled to use %<_Cilk_for%>" msgstr "" -#: c/c-parser.c:5262 cp/parser.c:10599 +#: c/c-parser.c:5262 cp/parser.c:10608 #, gcc-internal-format msgid "-fcilkplus must be enabled to use %<_Cilk_sync%>" msgstr "" @@ -33406,17 +33479,17 @@ #. c_parser_skip_until_found stops at a closing nesting #. delimiter without consuming it, but here we need to consume #. it to proceed further. -#: c/c-parser.c:5397 c/gimple-parser.c:1391 cp/parser.c:10677 +#: c/c-parser.c:5397 c/gimple-parser.c:1391 cp/parser.c:10686 #, gcc-internal-format msgid "expected statement" msgstr "se esperaba una declaración" -#: c/c-parser.c:5501 cp/parser.c:12259 +#: c/c-parser.c:5501 cp/parser.c:12268 #, gcc-internal-format msgid "suggest braces around empty body in an % statement" msgstr "se sugieren llaves alrededor del cuerpo vacío en una declaración %" -#: c/c-parser.c:5535 cp/parser.c:12262 +#: c/c-parser.c:5535 cp/parser.c:12271 #, gcc-internal-format msgid "suggest braces around empty body in an % statement" msgstr "se sugieren llaves alrededor del cuerpo vacío en una declaración %" @@ -33426,7 +33499,7 @@ msgid "if statement cannot contain %" msgstr "" -#: c/c-parser.c:5667 cp/parser.c:11261 +#: c/c-parser.c:5667 cp/parser.c:11270 #, gcc-internal-format msgid "suggest explicit braces to avoid ambiguous %" msgstr "se sugieren llaves explícitas para evitar un % ambiguo" @@ -33446,7 +33519,7 @@ msgid "invalid iterating variable in fast enumeration" msgstr "variable de iteración no válida en la enumeración rápida" -#: c/c-parser.c:6014 cp/parser.c:11462 +#: c/c-parser.c:6014 cp/parser.c:11471 #, gcc-internal-format msgid "missing loop condition in loop with % pragma" msgstr "" @@ -33636,17 +33709,17 @@ msgid "%<__builtin_complex%> operands of different types" msgstr "los operandos de %<__builtin_complex%> son de tipos diferentes" -#: c/c-parser.c:8121 cp/parser.c:6676 +#: c/c-parser.c:8121 cp/parser.c:6681 #, gcc-internal-format msgid "wrong number of arguments to %<__builtin_shuffle%>" msgstr "número erróneo de argumentos para %<__builtin_shuffle%>" -#: c/c-parser.c:8202 cp/parser.c:6587 +#: c/c-parser.c:8202 cp/parser.c:6592 #, gcc-internal-format msgid "-fcilkplus must be enabled to use %<_Cilk_spawn%>" msgstr "" -#: c/c-parser.c:8209 cp/parser.c:6593 +#: c/c-parser.c:8209 cp/parser.c:6598 #, gcc-internal-format msgid "consecutive %<_Cilk_spawn%> keywords are not permitted" msgstr "" @@ -33701,64 +33774,64 @@ msgid "no type or storage class may be specified here," msgstr "ninguna clase de almacenamiento o tipo se puede especificar aquí," -#: c/c-parser.c:9946 c/c-parser.c:10003 cp/parser.c:30419 +#: c/c-parser.c:9946 c/c-parser.c:10003 cp/parser.c:30442 #, gcc-internal-format msgid "unknown property attribute" msgstr "atributo de propiedad desconocido" -#: c/c-parser.c:9967 cp/parser.c:30379 +#: c/c-parser.c:9967 cp/parser.c:30402 #, gcc-internal-format msgid "missing %<=%> (after % attribute)" msgstr "falta un %<=%> (después del atributo %)" -#: c/c-parser.c:9970 cp/parser.c:30382 +#: c/c-parser.c:9970 cp/parser.c:30405 #, gcc-internal-format msgid "missing %<=%> (after % attribute)" msgstr "falta un %<=%> (después del atributo %)" -#: c/c-parser.c:9984 cp/parser.c:30397 +#: c/c-parser.c:9984 cp/parser.c:30420 #, gcc-internal-format msgid "the % attribute may only be specified once" msgstr "el atributo % sólo se puede especificar una vez" -#: c/c-parser.c:9989 cp/parser.c:30403 +#: c/c-parser.c:9989 cp/parser.c:30426 #, gcc-internal-format msgid "setter name must terminate with %<:%>" msgstr "el nombre del setter debe terminar con %<:%>" -#: c/c-parser.c:9996 cp/parser.c:30411 +#: c/c-parser.c:9996 cp/parser.c:30434 #, gcc-internal-format msgid "the % attribute may only be specified once" msgstr "el atributo % sólo se puede especificar una vez" #: c/c-parser.c:10191 c/c-parser.c:15872 c/c-parser.c:16130 c/c-parser.c:16189 -#: c/c-parser.c:16273 cp/parser.c:35352 cp/parser.c:35646 cp/parser.c:35734 -#: cp/parser.c:35805 cp/parser.c:38116 cp/parser.c:38131 cp/parser.c:38147 -#: cp/parser.c:38163 cp/parser.c:38179 cp/parser.c:38207 cp/parser.c:38220 -#: cp/parser.c:38243 cp/parser.c:38256 +#: c/c-parser.c:16273 cp/parser.c:35375 cp/parser.c:35669 cp/parser.c:35757 +#: cp/parser.c:35828 cp/parser.c:38139 cp/parser.c:38154 cp/parser.c:38170 +#: cp/parser.c:38186 cp/parser.c:38202 cp/parser.c:38230 cp/parser.c:38243 +#: cp/parser.c:38266 cp/parser.c:38279 #, fuzzy, gcc-internal-format #| msgid "%<#pragma omp flush%> may only be used in compound statements" msgid "%<#pragma %s%> may only be used in compound statements" msgstr "%<#pragma omp flush%> sólo se puede usar en declaraciones compuestas" -#: c/c-parser.c:10214 cp/parser.c:38233 +#: c/c-parser.c:10214 cp/parser.c:38256 #, fuzzy, gcc-internal-format #| msgid "%<#pragma GCC option%> is not a string" msgid "%<#pragma acc routine%> must be at file scope" msgstr "%<#pragma GCC option%> no es una cadena" -#: c/c-parser.c:10292 cp/parser.c:38314 +#: c/c-parser.c:10292 cp/parser.c:38337 #, gcc-internal-format msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct" msgstr "%<#pragma omp section%> sólo se puede usar en construcciones %<#pragma omp sections%>" -#: c/c-parser.c:10311 cp/parser.c:38333 +#: c/c-parser.c:10311 cp/parser.c:38356 #, fuzzy, gcc-internal-format #| msgid "for statement expected" msgid "for, while or do statement expected" msgstr "se esperaba una declaración for" -#: c/c-parser.c:10323 cp/parser.c:38106 +#: c/c-parser.c:10323 cp/parser.c:38129 #, gcc-internal-format msgid "%<#pragma GCC pch_preprocess%> must be first" msgstr "%<#pragma GCC pch_preprocess%> debe ser primero" @@ -33774,12 +33847,12 @@ msgid "%<#pragma grainsize%> must be inside a function" msgstr "no se permite #pragma GCC optimize dentro de funciones" -#: c/c-parser.c:10663 cp/parser.c:30809 +#: c/c-parser.c:10663 cp/parser.c:30832 #, gcc-internal-format msgid "too many %qs clauses" msgstr "demasiadas cláusulas %qs" -#: c/c-parser.c:10684 cp/parser.c:31341 +#: c/c-parser.c:10684 cp/parser.c:31364 #, fuzzy, gcc-internal-format #| msgid "expected integer expression" msgid "expected integer expression before ')'" @@ -33796,59 +33869,59 @@ msgid "%qD is not a variable" msgstr "%qD no es una variable" -#: c/c-parser.c:10986 cp/semantics.c:6815 +#: c/c-parser.c:10986 cp/semantics.c:6828 #, fuzzy, gcc-internal-format #| msgid "%qD is not a variable" msgid "%qD is not a pointer variable" msgstr "%qD no es una variable" -#: c/c-parser.c:11027 cp/parser.c:31419 +#: c/c-parser.c:11027 cp/parser.c:31442 #, gcc-internal-format msgid "collapse argument needs positive constant integer expression" msgstr "el argumento de collapse necesita una expresión entera constante positiva" -#: c/c-parser.c:11097 cp/parser.c:31476 +#: c/c-parser.c:11097 cp/parser.c:31499 #, fuzzy, gcc-internal-format #| msgid "expected %" msgid "expected %" msgstr "se esperaba %" -#: c/c-parser.c:11099 cp/parser.c:31478 +#: c/c-parser.c:11099 cp/parser.c:31501 #, gcc-internal-format msgid "expected % or %" msgstr "se esperaba % o %" -#: c/c-parser.c:11199 cp/parser.c:31578 +#: c/c-parser.c:11199 cp/parser.c:31601 #, fuzzy, gcc-internal-format #| msgid "expected %<;%>, %<,%> or %<)%>" msgid "expected %, %, % or %" msgstr "se esperaba %<;%>, %<,%> o %<)%>" -#: c/c-parser.c:11219 c/c-parser.c:16182 c/c-parser.c:16266 cp/parser.c:31596 -#: cp/parser.c:35638 cp/parser.c:35726 +#: c/c-parser.c:11219 c/c-parser.c:16182 c/c-parser.c:16266 cp/parser.c:31619 +#: cp/parser.c:35661 cp/parser.c:35749 #, fuzzy, gcc-internal-format #| msgid "expected %" msgid "expected %" msgstr "se esperaba %" -#: c/c-parser.c:11266 cp/parser.c:31649 +#: c/c-parser.c:11266 cp/parser.c:31672 #, gcc-internal-format msgid "too many % clauses with %qs modifier" msgstr "" -#: c/c-parser.c:11273 cp/parser.c:31656 +#: c/c-parser.c:11273 cp/parser.c:31679 #, fuzzy, gcc-internal-format #| msgid "too many %qs clauses" msgid "too many % clauses" msgstr "demasiadas cláusulas %qs" -#: c/c-parser.c:11275 cp/parser.c:31658 +#: c/c-parser.c:11275 cp/parser.c:31681 #, fuzzy, gcc-internal-format #| msgid "too many %qs clauses" msgid "too many % clauses without modifier" msgstr "demasiadas cláusulas %qs" -#: c/c-parser.c:11281 cp/parser.c:31664 +#: c/c-parser.c:11281 cp/parser.c:31687 #, gcc-internal-format msgid "if any % clause has modifier, then all % clauses have to use modifier" msgstr "" @@ -33878,25 +33951,25 @@ msgid "% value must be positive" msgstr "el valor de % debe ser positivo" -#: c/c-parser.c:11502 cp/semantics.c:6999 +#: c/c-parser.c:11502 cp/semantics.c:7012 #, fuzzy, gcc-internal-format #| msgid "% value must be positive" msgid "% value must be positive" msgstr "el valor de % debe ser positivo" -#: c/c-parser.c:11548 cp/semantics.c:7028 +#: c/c-parser.c:11548 cp/semantics.c:7041 #, fuzzy, gcc-internal-format #| msgid "'%s' at %L must be nonnegative" msgid "% value must be non-negative" msgstr "'%s' en %L debe ser no negativo" -#: c/c-parser.c:11611 c/c-parser.c:11617 cp/parser.c:31875 cp/parser.c:31882 +#: c/c-parser.c:11611 c/c-parser.c:11617 cp/parser.c:31898 cp/parser.c:31905 #, fuzzy, gcc-internal-format #| msgid "expected %" msgid "expected %" msgstr "se esperaba %" -#: c/c-parser.c:11625 c/c-parser.c:11631 cp/parser.c:31891 cp/parser.c:31898 +#: c/c-parser.c:11625 c/c-parser.c:11631 cp/parser.c:31914 cp/parser.c:31921 #, fuzzy, gcc-internal-format #| msgid "expected %" msgid "expected %" @@ -33908,65 +33981,65 @@ msgid "% value must be positive" msgstr "el valor de % debe ser positivo" -#: c/c-parser.c:11762 cp/parser.c:31200 +#: c/c-parser.c:11762 cp/parser.c:31223 #, fuzzy, gcc-internal-format #| msgid "too many arguments" msgid "too many % arguments" msgstr "demasiados argumentos" -#: c/c-parser.c:11796 cp/parser.c:31233 +#: c/c-parser.c:11796 cp/parser.c:31256 #, fuzzy, gcc-internal-format #| msgid "unexpected attribute" msgid "unexpected argument" msgstr "atributo inesperado" -#: c/c-parser.c:11823 cp/semantics.c:6323 +#: c/c-parser.c:11823 cp/semantics.c:6336 #, fuzzy, gcc-internal-format #| msgid "% value must be positive" msgid "%qs value must be positive" msgstr "el valor de % debe ser positivo" -#: c/c-parser.c:11962 cp/semantics.c:7128 +#: c/c-parser.c:11962 cp/semantics.c:7141 #, fuzzy, gcc-internal-format #| msgid "%qE attribute argument not an integer constant" msgid "% argument needs positive integral constant" msgstr "el argumento del atributo %qE no es una constante entera" -#: c/c-parser.c:12027 cp/parser.c:31955 +#: c/c-parser.c:12027 cp/parser.c:31978 #, fuzzy, gcc-internal-format #| msgid "collapse argument needs positive constant integer expression" msgid "ordered argument needs positive constant integer expression" msgstr "el argumento de collapse necesita una expresión entera constante positiva" -#: c/c-parser.c:12118 c/c-parser.c:16964 cp/parser.c:37047 +#: c/c-parser.c:12118 c/c-parser.c:16964 cp/parser.c:37070 #, fuzzy, gcc-internal-format #| msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, % or %" msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or identifier" msgstr "se esperaba %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, % o %" -#: c/c-parser.c:12227 cp/parser.c:32168 +#: c/c-parser.c:12227 cp/parser.c:32191 #, fuzzy, gcc-internal-format #| msgid "both % and % in declaration specifiers" msgid "both % and % modifiers specified" msgstr "se usaron al mismo tiempo % y % en los especificadores de declaración" -#: c/c-parser.c:12281 cp/parser.c:32184 +#: c/c-parser.c:12281 cp/parser.c:32207 #, gcc-internal-format msgid "schedule % does not take a % parameter" msgstr "el planificador % no toma un parámetro %" -#: c/c-parser.c:12285 cp/parser.c:32187 +#: c/c-parser.c:12285 cp/parser.c:32210 #, gcc-internal-format msgid "schedule % does not take a % parameter" msgstr "el planificador % no toma un parámetro %" -#: c/c-parser.c:12297 cp/semantics.c:6395 +#: c/c-parser.c:12297 cp/semantics.c:6408 #, fuzzy, gcc-internal-format #| msgid "% value must be positive" msgid "chunk size value must be positive" msgstr "el valor de % debe ser positivo" -#: c/c-parser.c:12320 cp/parser.c:32207 +#: c/c-parser.c:12320 cp/parser.c:32230 #, gcc-internal-format msgid "invalid schedule kind" msgstr "género de planificador no válido" @@ -33983,19 +34056,19 @@ msgid "% value must be positive" msgstr "el valor de % debe ser positivo" -#: c/c-parser.c:12529 cp/semantics.c:6486 +#: c/c-parser.c:12529 cp/semantics.c:6499 #, fuzzy, gcc-internal-format #| msgid "% value must be positive" msgid "% value must be positive" msgstr "el valor de % debe ser positivo" -#: c/c-parser.c:12573 cp/semantics.c:6596 +#: c/c-parser.c:12573 cp/semantics.c:6609 #, fuzzy, gcc-internal-format #| msgid "%Hcollapse argument needs positive constant integer expression" msgid "% clause alignment expression must be positive constant integer expression" msgstr "%Hel argumento de collapse necesita ser una expresión entera constante positiva" -#: c/c-parser.c:12636 cp/parser.c:32465 +#: c/c-parser.c:12636 cp/parser.c:32488 #, fuzzy, gcc-internal-format #| msgid "code model % not supported yet" msgid "using parameters for % step is not supported yet" @@ -34019,19 +34092,19 @@ msgid "% clause expression must be positive constant integer expression" msgstr "%Hel argumento de collapse necesita ser una expresión entera constante positiva" -#: c/c-parser.c:12888 cp/parser.c:32701 cp/parser.c:32924 +#: c/c-parser.c:12888 cp/parser.c:32724 cp/parser.c:32947 #, fuzzy, gcc-internal-format #| msgid "invalid schedule kind" msgid "invalid depend kind" msgstr "género de planificador no válido" -#: c/c-parser.c:12972 cp/parser.c:32774 +#: c/c-parser.c:12972 cp/parser.c:32797 #, fuzzy, gcc-internal-format #| msgid "invalid mask" msgid "invalid map kind" msgstr "máscara no válida" -#: c/c-parser.c:13068 cp/parser.c:32871 +#: c/c-parser.c:13068 cp/parser.c:32894 #, fuzzy, gcc-internal-format #| msgid "invalid schedule kind" msgid "invalid dist_schedule kind" @@ -34043,76 +34116,76 @@ msgid "invalid proc_bind kind" msgstr "género de planificador no válido" -#: c/c-parser.c:13352 cp/parser.c:33149 +#: c/c-parser.c:13352 cp/parser.c:33172 #, fuzzy, gcc-internal-format #| msgid "expected %<#pragma omp%> clause" msgid "expected %<#pragma acc%> clause" msgstr "se esperaba una cláusula %<#pragma omp%>" -#: c/c-parser.c:13363 c/c-parser.c:13646 cp/parser.c:33160 cp/parser.c:33476 +#: c/c-parser.c:13363 c/c-parser.c:13646 cp/parser.c:33183 cp/parser.c:33499 #, gcc-internal-format msgid "%qs is not valid for %qs" msgstr "%qs no es válido para %qs" -#: c/c-parser.c:13509 cp/parser.c:33336 +#: c/c-parser.c:13509 cp/parser.c:33359 #, fuzzy, gcc-internal-format #| msgid "%qs must be used with %qs" msgid "%qs must be the first clause of %qs" msgstr "%qs se debe usar con %qs" -#: c/c-parser.c:13635 cp/parser.c:33465 +#: c/c-parser.c:13635 cp/parser.c:33488 #, gcc-internal-format msgid "expected %<#pragma omp%> clause" msgstr "se esperaba una cláusula %<#pragma omp%>" -#: c/c-parser.c:13773 cp/parser.c:36151 +#: c/c-parser.c:13773 cp/parser.c:36174 #, gcc-internal-format msgid "no valid clauses specified in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.c:13783 cp/parser.c:36161 +#: c/c-parser.c:13783 cp/parser.c:36184 #, fuzzy, gcc-internal-format #| msgid "Array section in '%s' call at %L" msgid "array section in %<#pragma acc declare%>" msgstr "Sección de matriz en la llamada '%s' en %L" -#: c/c-parser.c:13803 cp/parser.c:36181 +#: c/c-parser.c:13803 cp/parser.c:36204 #, fuzzy, gcc-internal-format #| msgid "invalid use of %<--%> on bool variable %qD" msgid "%qD must be a global variable in %<#pragma acc declare link%>" msgstr "uso no válido de %<--%> en la variable booleana %qD" -#: c/c-parser.c:13814 cp/parser.c:36192 +#: c/c-parser.c:13814 cp/parser.c:36215 #, fuzzy, gcc-internal-format #| msgid "invalid type in declaration" msgid "invalid OpenACC clause at file scope" msgstr "tipo no válido en la declaración" -#: c/c-parser.c:13821 cp/parser.c:36199 +#: c/c-parser.c:13821 cp/parser.c:36222 #, fuzzy, gcc-internal-format #| msgid "declaration of % variable %qD in % loop initial declaration" msgid "invalid use of % variable %qD in %<#pragma acc declare%>" msgstr "declaración de la variable % %qD en la declaración inicial del bucle %" -#: c/c-parser.c:13829 cp/parser.c:36207 +#: c/c-parser.c:13829 cp/parser.c:36230 #, fuzzy, gcc-internal-format #| msgid "invalid use of %<--%> on bool variable %qD" msgid "invalid use of % variable %qD in %<#pragma acc declare%>" msgstr "uso no válido de %<--%> en la variable booleana %qD" -#: c/c-parser.c:13841 cp/parser.c:36219 +#: c/c-parser.c:13841 cp/parser.c:36242 #, fuzzy, gcc-internal-format #| msgid "Variable %qs is used more than once in the argument list of method %qs" msgid "variable %qD used more than once with %<#pragma acc declare%>" msgstr "La variable %qs se usa más de una vez en la lista de argumentos del método %qs" -#: c/c-parser.c:13933 cp/parser.c:36305 +#: c/c-parser.c:13933 cp/parser.c:36328 #, fuzzy, gcc-internal-format #| msgid "expected a string after %<#pragma message%>" msgid "expected % after %<#pragma acc %s%>" msgstr "se esperaba una cadena después de %<#pragma message%>" -#: c/c-parser.c:13949 cp/parser.c:36322 +#: c/c-parser.c:13949 cp/parser.c:36345 #, fuzzy, gcc-internal-format #| msgid "%<#pragma GCC option%> is not a string" msgid "%<#pragma acc %s data%> has no data movement clause" @@ -34129,7 +34202,7 @@ msgid "expected function name" msgstr "se esperaba función" -#: c/c-parser.c:14191 cp/parser.c:37466 +#: c/c-parser.c:14191 cp/parser.c:37489 #, fuzzy, gcc-internal-format #| msgid "%q+D is not a function," msgid "%qD does not refer to a function" @@ -34141,46 +34214,46 @@ msgid "%<#pragma acc routine%> not immediately followed by function declaration or definition" msgstr "no se puede usar el especificador % en una declaración de función que no es una definición" -#: c/c-parser.c:14251 cp/parser.c:37520 cp/parser.c:37562 +#: c/c-parser.c:14251 cp/parser.c:37543 cp/parser.c:37585 #, fuzzy, gcc-internal-format #| msgid "the % specifier cannot be used in a function declaration that is not a definition" msgid "%<#pragma acc routine%> not immediately followed by a single function declaration or definition" msgstr "no se puede usar el especificador % en una declaración de función que no es una definición" -#: c/c-parser.c:14268 cp/parser.c:37576 +#: c/c-parser.c:14268 cp/parser.c:37599 #, fuzzy, gcc-internal-format #| msgid "%<#pragma GCC pch_preprocess%> must be first" msgid "%<#pragma acc routine%> already applied to %qD" msgstr "%<#pragma GCC pch_preprocess%> debe ser primero" -#: c/c-parser.c:14277 cp/parser.c:37585 +#: c/c-parser.c:14277 cp/parser.c:37608 #, fuzzy, gcc-internal-format #| msgid "%<#pragma GCC pch_preprocess%> must be first" msgid "%<#pragma acc routine%> must be applied before use" msgstr "%<#pragma GCC pch_preprocess%> debe ser primero" -#: c/c-parser.c:14278 cp/parser.c:37586 +#: c/c-parser.c:14278 cp/parser.c:37609 #, fuzzy, gcc-internal-format #| msgid "%<#pragma GCC pch_preprocess%> must be first" msgid "%<#pragma acc routine%> must be applied before definition" msgstr "%<#pragma GCC pch_preprocess%> debe ser primero" -#: c/c-parser.c:14321 cp/parser.c:36497 +#: c/c-parser.c:14321 cp/parser.c:36520 #, gcc-internal-format msgid "%<#pragma acc update%> must contain at least one % or % or % clause" msgstr "" -#: c/c-parser.c:14729 cp/parser.c:33847 cp/parser.c:33873 +#: c/c-parser.c:14729 cp/parser.c:33870 cp/parser.c:33896 #, gcc-internal-format msgid "invalid form of %<#pragma omp atomic%>" msgstr "forma no válida de %<#pragma omp atomic%>" -#: c/c-parser.c:14733 cp/parser.c:33904 cp/parser.c:33920 +#: c/c-parser.c:14733 cp/parser.c:33927 cp/parser.c:33943 #, gcc-internal-format msgid "invalid operator for %<#pragma omp atomic%>" msgstr "operador no válido para %<#pragma omp atomic%>" -#: c/c-parser.c:14782 cp/semantics.c:8525 cp/semantics.c:8535 +#: c/c-parser.c:14782 cp/semantics.c:8538 cp/semantics.c:8548 #, fuzzy, gcc-internal-format #| msgid "%<#pragma omp atomic capture%> uses two different variables for memory" msgid "%<#pragma omp atomic capture%> uses two different expressions for memory" @@ -34191,28 +34264,28 @@ msgid "expected %<(%> or end of line" msgstr "se esperaba %<(%> o fin de línea" -#: c/c-parser.c:14913 cp/parser.c:34451 +#: c/c-parser.c:14913 cp/parser.c:34474 #, gcc-internal-format msgid "% clause parameter is less than %" msgstr "" -#: c/c-parser.c:14924 cp/parser.c:34462 +#: c/c-parser.c:14924 cp/parser.c:34485 #, gcc-internal-format msgid "% clause may not be specified together with % clause with a parameter" msgstr "" -#: c/c-parser.c:14943 cp/parser.c:34490 cp/parser.c:38700 +#: c/c-parser.c:14943 cp/parser.c:34513 cp/parser.c:38723 #, gcc-internal-format msgid "for statement expected" msgstr "se esperaba una declaración for" -#: c/c-parser.c:14949 cp/parser.c:34497 +#: c/c-parser.c:14949 cp/parser.c:34520 #, fuzzy, gcc-internal-format #| msgid "for statement expected" msgid "_Cilk_for statement expected" msgstr "se esperaba una declaración for" -#: c/c-parser.c:15018 cp/semantics.c:8074 cp/semantics.c:8161 +#: c/c-parser.c:15018 cp/semantics.c:8087 cp/semantics.c:8174 #, gcc-internal-format msgid "expected iteration declaration or initialization" msgstr "se esperaba una declaración de iteración o una inicialización" @@ -34222,76 +34295,76 @@ msgid "not enough perfectly nested loops" msgstr "no hay suficientes bucles perfectamente anidados" -#: c/c-parser.c:15162 cp/parser.c:34723 +#: c/c-parser.c:15162 cp/parser.c:34746 #, gcc-internal-format msgid "collapsed loops not perfectly nested" msgstr "los bucles colapsados no están perfectamente anidados" -#: c/c-parser.c:15209 cp/parser.c:34540 cp/parser.c:34582 cp/pt.c:15513 +#: c/c-parser.c:15209 cp/parser.c:34563 cp/parser.c:34605 cp/pt.c:15595 #, gcc-internal-format msgid "iteration variable %qD should not be firstprivate" msgstr "la variable de iteración %qD no debe ser firstprivate" -#: c/c-parser.c:15300 cp/parser.c:34796 +#: c/c-parser.c:15300 cp/parser.c:34819 #, fuzzy, gcc-internal-format #| msgid "% as only parameter may not be qualified" msgid "% clause with parameter may not be specified on %qs construct" msgstr "no se puede calificar % si es el único parámetro" -#: c/c-parser.c:15461 cp/parser.c:34954 +#: c/c-parser.c:15461 cp/parser.c:34977 #, fuzzy, gcc-internal-format #| msgid "%<#pragma omp barrier%> may only be used in compound statements" msgid "%<#pragma omp ordered%> with % clause may only be used in compound statements" msgstr "%<#pragma omp barrier%> sólo se puede usar en declaraciones compuestas" -#: c/c-parser.c:15664 cp/parser.c:35147 +#: c/c-parser.c:15664 cp/parser.c:35170 #, fuzzy, gcc-internal-format #| msgid "expected %" msgid "expected % after %qs" msgstr "se esperaba %" -#: c/c-parser.c:15863 cp/parser.c:35343 +#: c/c-parser.c:15863 cp/parser.c:35366 #, fuzzy, gcc-internal-format #| msgid "expected %" msgid "expected %" msgstr "se esperaba %" -#: c/c-parser.c:16083 cp/parser.c:35580 +#: c/c-parser.c:16083 cp/parser.c:35603 #, gcc-internal-format msgid "%<#pragma omp target data%> with map-type other than %, %, % or % on % clause" msgstr "" -#: c/c-parser.c:16096 cp/parser.c:35593 +#: c/c-parser.c:16096 cp/parser.c:35616 #, gcc-internal-format msgid "%<#pragma omp target data%> must contain at least one % clause" msgstr "" -#: c/c-parser.c:16143 cp/parser.c:35818 +#: c/c-parser.c:16143 cp/parser.c:35841 #, gcc-internal-format msgid "%<#pragma omp target update%> must contain at least one % or % clauses" msgstr "" -#: c/c-parser.c:16215 cp/parser.c:35673 +#: c/c-parser.c:16215 cp/parser.c:35696 #, gcc-internal-format msgid "%<#pragma omp target enter data%> with map-type other than % or % on % clause" msgstr "" -#: c/c-parser.c:16227 cp/parser.c:35685 +#: c/c-parser.c:16227 cp/parser.c:35708 #, gcc-internal-format msgid "%<#pragma omp target enter data%> must contain at least one % clause" msgstr "" -#: c/c-parser.c:16301 cp/parser.c:35762 +#: c/c-parser.c:16301 cp/parser.c:35785 #, gcc-internal-format msgid "%<#pragma omp target exit data%> with map-type other than %, % or % on % clause" msgstr "" -#: c/c-parser.c:16314 cp/parser.c:35775 +#: c/c-parser.c:16314 cp/parser.c:35798 #, gcc-internal-format msgid "%<#pragma omp target exit data%> must contain at least one % clause" msgstr "" -#: c/c-parser.c:16528 cp/parser.c:36028 +#: c/c-parser.c:16528 cp/parser.c:36051 #, gcc-internal-format msgid "%<#pragma omp target%> with map-type other than %, %, % or % on % clause" msgstr "" @@ -34307,7 +34380,7 @@ msgid "%<#pragma omp declare simd%> must be followed by function declaration or definition" msgstr "%<#pragma align%> debe aparecer antes de la declaración de %D, se descarta" -#: c/c-parser.c:16675 cp/parser.c:36620 +#: c/c-parser.c:16675 cp/parser.c:36643 #, gcc-internal-format msgid "%<#pragma omp declare simd%> or % attribute cannot be used in the same function marked as a Cilk Plus SIMD-enabled function" msgstr "" @@ -34317,34 +34390,34 @@ msgid "%<#pragma omp declare simd%> not immediately followed by a function declaration or definition" msgstr "" -#: c/c-parser.c:16697 cp/parser.c:36679 +#: c/c-parser.c:16697 cp/parser.c:36702 #, gcc-internal-format msgid "%<#pragma omp declare simd%> not immediately followed by a single function declaration or definition" msgstr "" -#: c/c-parser.c:16813 cp/parser.c:36749 +#: c/c-parser.c:16813 cp/parser.c:36772 #, gcc-internal-format msgid "%<#pragma omp declare target%> with clauses in between %<#pragma omp declare target%> without clauses and %<#pragma omp end declare target%>" msgstr "" -#: c/c-parser.c:16832 cp/parser.c:36768 +#: c/c-parser.c:16832 cp/parser.c:36791 #, gcc-internal-format msgid "%qD specified both in declare target % and % clauses" msgstr "" -#: c/c-parser.c:16873 cp/parser.c:36815 +#: c/c-parser.c:16873 cp/parser.c:36838 #, fuzzy, gcc-internal-format #| msgid "expected %" msgid "expected %" msgstr "se esperaba %" -#: c/c-parser.c:16880 cp/parser.c:36822 +#: c/c-parser.c:16880 cp/parser.c:36845 #, fuzzy, gcc-internal-format #| msgid "expected %" msgid "expected %" msgstr "se esperaba %" -#: c/c-parser.c:16886 cp/parser.c:36829 +#: c/c-parser.c:16886 cp/parser.c:36852 #, fuzzy, gcc-internal-format #| msgid "%<#pragma GCC pop_options%> without a corresponding %<#pragma GCC push_options%>" msgid "%<#pragma omp end declare target%> without corresponding %<#pragma omp declare target%>" @@ -34405,23 +34478,23 @@ msgid "one of the initializer call arguments should be %<&omp_priv%>" msgstr "" -#: c/c-parser.c:17286 cp/parser.c:37274 +#: c/c-parser.c:17286 cp/parser.c:37297 #, fuzzy, gcc-internal-format #| msgid "expected %<#pragma omp section%> or %<}%>" msgid "expected % or % or %" msgstr "se esperaba %<#pragma omp section%> o %<}%>" -#: c/c-parser.c:17501 cp/semantics.c:7539 +#: c/c-parser.c:17501 cp/semantics.c:7552 #, gcc-internal-format msgid "%qE declared % after first use" msgstr "%qE se declaró % después del primer uso" -#: c/c-parser.c:17503 cp/semantics.c:7541 +#: c/c-parser.c:17503 cp/semantics.c:7554 #, gcc-internal-format msgid "automatic variable %qE cannot be %" msgstr "la variable automática %qE no puede ser %" -#: c/c-parser.c:17507 cp/semantics.c:7543 +#: c/c-parser.c:17507 cp/semantics.c:7556 #, gcc-internal-format msgid "% %qE has incomplete type" msgstr "% %qE tiene tipo incompleto" @@ -34437,57 +34510,57 @@ msgid "pragma simd must be inside a function" msgstr "no se permite #pragma GCC optimize dentro de funciones" -#: c/c-parser.c:17588 cp/parser.c:38471 +#: c/c-parser.c:17588 cp/parser.c:38494 #, fuzzy, gcc-internal-format #| msgid "end bit in POS must be an integer constant" msgid "vectorlength must be an integer constant" msgstr "el bit final en POS debe ser una constante entera" -#: c/c-parser.c:17590 cp/parser.c:38474 +#: c/c-parser.c:17590 cp/parser.c:38497 #, fuzzy, gcc-internal-format #| msgid "text length must be greater than 0" msgid "vectorlength must be a power of 2" msgstr "la longitud de texto debe ser más grande que 0" -#: c/c-parser.c:17673 cp/parser.c:38581 +#: c/c-parser.c:17673 cp/parser.c:38604 #, fuzzy, gcc-internal-format #| msgid "selector must be an integer constant in the range 0..%wi" msgid "step size must be an integer constant expression or an integer variable" msgstr "el selector debe ser una constante entera en el rango 0..%wi" -#: c/c-parser.c:17772 cp/parser.c:38674 +#: c/c-parser.c:17772 cp/parser.c:38697 #, fuzzy, gcc-internal-format #| msgid "expected %<#pragma omp%> clause" msgid "expected %<#pragma simd%> clause" msgstr "se esperaba una cláusula %<#pragma omp%>" -#: c/c-parser.c:17816 cp/parser.c:38077 +#: c/c-parser.c:17816 cp/parser.c:38100 #, fuzzy, gcc-internal-format #| msgid "%<#pragma%> is not allowed here" msgid "%<#pragma cilk grainsize%> is not followed by %<_Cilk_for%>" msgstr "%<#pragma%> no se permite aquí" -#: c/c-parser.c:18116 cp/parser.c:37969 +#: c/c-parser.c:18116 cp/parser.c:37992 #, gcc-internal-format msgid "%<__transaction_cancel%> without transactional memory support enabled" msgstr "%<__transaction_cancel%> sin activar el soporte para memoria transaccional" -#: c/c-parser.c:18122 cp/parser.c:37975 +#: c/c-parser.c:18122 cp/parser.c:37998 #, gcc-internal-format msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>" msgstr "%<__transaction_cancel%> dentro de un %<__transaction_relaxed%>" -#: c/c-parser.c:18131 cp/parser.c:37984 +#: c/c-parser.c:18131 cp/parser.c:38007 #, gcc-internal-format msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>" msgstr "%<__transaction_cancel%> más externo no está dentro del %<__transaction_atomic%> más externo" -#: c/c-parser.c:18133 cp/parser.c:37987 +#: c/c-parser.c:18133 cp/parser.c:38010 #, gcc-internal-format msgid " or a % function" msgstr " o una función %" -#: c/c-parser.c:18139 cp/parser.c:37993 +#: c/c-parser.c:18139 cp/parser.c:38016 #, gcc-internal-format msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>" msgstr "%<__transaction_cancel%> no está dentro de %<__transaction_atomic%>" @@ -34498,7 +34571,7 @@ msgid "base of array section must be pointer or array type" msgstr "el tamaño de la matriz nueva debe tener un tipo integral" -#: c/c-parser.c:18216 cp/parser.c:7104 +#: c/c-parser.c:18216 cp/parser.c:7109 #, fuzzy, gcc-internal-format #| msgid "expected %<:%> or %<::%>" msgid "expected %<:%> or numeral" @@ -35244,7 +35317,7 @@ msgid "initialization left-hand side might be a candidate for a format attribute" msgstr "el lado izquierdo de la inicialización puede ser un candidato para un atributo de formato" -#: c/c-typeck.c:6623 cp/typeck.c:8583 +#: c/c-typeck.c:6623 cp/typeck.c:8584 #, gcc-internal-format msgid "return type might be a candidate for a format attribute" msgstr "el tipo de devolución puede ser un candidato para un atributo de formato" @@ -35573,7 +35646,7 @@ msgid "ISO C forbids %" msgstr "ISO C prohíbe %" -#: c/c-typeck.c:9860 c/gimple-parser.c:1544 cp/typeck.c:8812 +#: c/c-typeck.c:9860 c/gimple-parser.c:1544 cp/typeck.c:8813 #, gcc-internal-format msgid "function declared % has a % statement" msgstr "la función declarada % tiene una declaración %" @@ -35584,7 +35657,7 @@ msgid "array notation expression cannot be used as a return value" msgstr "se usó una expresión coma para inicializar el valor de devolución" -#: c/c-typeck.c:9877 cp/typeck.c:8803 +#: c/c-typeck.c:9877 cp/typeck.c:8804 #, fuzzy, gcc-internal-format #| msgid "Logical range in CASE statement at %L is not allowed" msgid "use of %<_Cilk_spawn%> in a return statement is not allowed" @@ -35611,7 +35684,7 @@ msgid "function returns address of label" msgstr "la función devuelve la dirección de una variable local" -#: c/c-typeck.c:10093 cp/semantics.c:1154 +#: c/c-typeck.c:10093 cp/semantics.c:1157 #, gcc-internal-format msgid "switch quantity not an integer" msgstr "la cantidad de switch no es un entero" @@ -35626,7 +35699,7 @@ msgid "case label is not an integer constant expression" msgstr "la etiqueta de case no es una expresion constante entera" -#: c/c-typeck.c:10170 cp/parser.c:10824 +#: c/c-typeck.c:10170 cp/parser.c:10833 #, gcc-internal-format msgid "case label not within a switch statement" msgstr "la etiqueta case no se encuentra dentro de una declaración switch" @@ -35646,17 +35719,17 @@ msgid "rank-mismatch between if-statement%'s condition and the else-block" msgstr "" -#: c/c-typeck.c:10374 cp/parser.c:12094 +#: c/c-typeck.c:10374 cp/parser.c:12103 #, gcc-internal-format msgid "break statement not within loop or switch" msgstr "la declaración break no está dentro de un bucle o switch" -#: c/c-typeck.c:10376 cp/parser.c:12120 +#: c/c-typeck.c:10376 cp/parser.c:12129 #, gcc-internal-format msgid "continue statement not within a loop" msgstr "la declaración continue no está dentro de un bucle" -#: c/c-typeck.c:10381 cp/parser.c:12107 +#: c/c-typeck.c:10381 cp/parser.c:12116 #, gcc-internal-format msgid "break statement used with OpenMP for loop" msgstr "se usó la declaración break en un bucle for de OpenMP" @@ -35667,7 +35740,7 @@ msgid "break statement within %<#pragma simd%> loop body" msgstr "la declaración break no está dentro de un bucle o switch" -#: c/c-typeck.c:10388 cp/parser.c:12124 +#: c/c-typeck.c:10388 cp/parser.c:12133 #, fuzzy, gcc-internal-format #| msgid "continue statement not within a loop" msgid "continue statement within %<#pragma simd%> loop body" @@ -35774,12 +35847,12 @@ msgid "used vector type where scalar is required" msgstr "se usa un tipo vector cuando se requiere un escalar" -#: c/c-typeck.c:12108 cp/semantics.c:8632 +#: c/c-typeck.c:12108 cp/semantics.c:8645 #, gcc-internal-format msgid "%<#pragma omp cancel%> must specify one of %, %, % or % clauses" msgstr "" -#: c/c-typeck.c:12147 cp/semantics.c:8669 +#: c/c-typeck.c:12147 cp/semantics.c:8682 #, gcc-internal-format msgid "%<#pragma omp cancellation point%> must specify one of %, %, % or % clauses" msgstr "" @@ -35790,27 +35863,27 @@ msgid "%<_Atomic%> %qE in %qs clause" msgstr "%Hdemasiadas cláusulas %qs" -#: c/c-typeck.c:12204 c/c-typeck.c:13413 cp/semantics.c:4535 -#: cp/semantics.c:6724 +#: c/c-typeck.c:12204 c/c-typeck.c:13413 cp/semantics.c:4548 +#: cp/semantics.c:6737 #, gcc-internal-format msgid "bit-field %qE in %qs clause" msgstr "" -#: c/c-typeck.c:12213 c/c-typeck.c:13437 cp/semantics.c:4545 -#: cp/semantics.c:6742 +#: c/c-typeck.c:12213 c/c-typeck.c:13437 cp/semantics.c:4558 +#: cp/semantics.c:6755 #, fuzzy, gcc-internal-format #| msgid "%qD is not a member template function" msgid "%qE is a member of a union" msgstr "%qD no es una función plantilla miembro" -#: c/c-typeck.c:12223 cp/semantics.c:4559 cp/semantics.c:6767 +#: c/c-typeck.c:12223 cp/semantics.c:4572 cp/semantics.c:6780 #, fuzzy, gcc-internal-format #| msgid "%qD is not a variable in clause %qs" msgid "%qD is not a variable in %qs clause" msgstr "%qD no es una variable en la cláusula %qs" -#: c/c-typeck.c:12227 c/c-typeck.c:13454 cp/semantics.c:4563 -#: cp/semantics.c:6770 +#: c/c-typeck.c:12227 c/c-typeck.c:13454 cp/semantics.c:4576 +#: cp/semantics.c:6783 #, fuzzy, gcc-internal-format #| msgid "%qE is not a variable in clause %qs" msgid "%qE is not a variable in %qs clause" @@ -35823,19 +35896,19 @@ msgstr "%Hdemasiadas cláusulas %qs" #: c/c-typeck.c:12243 c/c-typeck.c:13461 c/c-typeck.c:13563 -#: cp/semantics.c:4580 cp/semantics.c:6776 cp/semantics.c:6938 +#: cp/semantics.c:4593 cp/semantics.c:6789 cp/semantics.c:6951 #, fuzzy, gcc-internal-format #| msgid "%qD is not a variable in clause %qs" msgid "%qD is threadprivate variable in %qs clause" msgstr "%qD no es una variable en la cláusula %qs" -#: c/c-typeck.c:12279 cp/semantics.c:4612 +#: c/c-typeck.c:12279 cp/semantics.c:4625 #, fuzzy, gcc-internal-format #| msgid "size in array new must have integral type" msgid "low bound %qE of array section does not have integral type" msgstr "el tamaño de la matriz nueva debe tener un tipo integral" -#: c/c-typeck.c:12286 cp/semantics.c:4619 +#: c/c-typeck.c:12286 cp/semantics.c:4632 #, fuzzy, gcc-internal-format #| msgid "size in array new must have integral type" msgid "length %qE of array section does not have integral type" @@ -35842,58 +35915,58 @@ msgstr "el tamaño de la matriz nueva debe tener un tipo integral" #: c/c-typeck.c:12313 c/c-typeck.c:12377 c/c-typeck.c:12635 -#: cp/semantics.c:4655 cp/semantics.c:4719 +#: cp/semantics.c:4668 cp/semantics.c:4732 #, fuzzy, gcc-internal-format #| msgid "Array section in '%s' call at %L" msgid "zero length array section in %qs clause" msgstr "Sección de matriz en la llamada '%s' en %L" -#: c/c-typeck.c:12332 cp/semantics.c:4674 +#: c/c-typeck.c:12332 cp/semantics.c:4687 #, gcc-internal-format msgid "for unknown bound array type length expression must be specified" msgstr "" -#: c/c-typeck.c:12340 cp/semantics.c:4682 +#: c/c-typeck.c:12340 cp/semantics.c:4695 #, gcc-internal-format msgid "negative low bound in array section in %qs clause" msgstr "" -#: c/c-typeck.c:12349 c/c-typeck.c:12459 cp/semantics.c:4691 -#: cp/semantics.c:4801 +#: c/c-typeck.c:12349 c/c-typeck.c:12459 cp/semantics.c:4704 +#: cp/semantics.c:4814 #, fuzzy, gcc-internal-format #| msgid "variable length array is used" msgid "negative length in array section in %qs clause" msgstr "se usó la matriz de longitud variable" -#: c/c-typeck.c:12366 cp/semantics.c:4708 +#: c/c-typeck.c:12366 cp/semantics.c:4721 #, gcc-internal-format msgid "low bound %qE above array section size in %qs clause" msgstr "" -#: c/c-typeck.c:12403 cp/semantics.c:4745 +#: c/c-typeck.c:12403 cp/semantics.c:4758 #, gcc-internal-format msgid "length %qE above array section size in %qs clause" msgstr "" -#: c/c-typeck.c:12418 cp/semantics.c:4760 +#: c/c-typeck.c:12418 cp/semantics.c:4773 #, gcc-internal-format msgid "high bound %qE above array section size in %qs clause" msgstr "" -#: c/c-typeck.c:12451 cp/semantics.c:4793 +#: c/c-typeck.c:12451 cp/semantics.c:4806 #, fuzzy, gcc-internal-format #| msgid "for increment expression has no effect" msgid "for pointer type length expression must be specified" msgstr "la expresión de incremento for no tiene efecto" -#: c/c-typeck.c:12469 c/c-typeck.c:12578 cp/semantics.c:4811 -#: cp/semantics.c:4923 +#: c/c-typeck.c:12469 c/c-typeck.c:12578 cp/semantics.c:4824 +#: cp/semantics.c:4936 #, fuzzy, gcc-internal-format #| msgid "Copy array sections into a contiguous block on procedure entry" msgid "array section is not contiguous in %qs clause" msgstr "Copia las secciones de matriz en un bloque contiguo en la entrada de procedimiento" -#: c/c-typeck.c:12477 cp/semantics.c:4819 +#: c/c-typeck.c:12477 cp/semantics.c:4832 #, fuzzy, gcc-internal-format #| msgid "%qD does not have integral or enumeration type" msgid "%qE does not have pointer or array type" @@ -35915,7 +35988,7 @@ msgid "%qE has invalid type for %" msgstr "%qE tiene tipo no válido para %" -#: c/c-typeck.c:12955 cp/semantics.c:5734 +#: c/c-typeck.c:12955 cp/semantics.c:5747 #, fuzzy, gcc-internal-format #| msgid "No label definition found for %qs" msgid "user defined reduction not found for %qE" @@ -35927,17 +36000,17 @@ msgid "variable length element type in array % clause" msgstr "se usó la matriz de longitud variable" -#: c/c-typeck.c:13061 c/c-typeck.c:13621 cp/semantics.c:7257 +#: c/c-typeck.c:13061 c/c-typeck.c:13621 cp/semantics.c:7270 #, gcc-internal-format msgid "% clause must not be used together with %" msgstr "" -#: c/c-typeck.c:13073 cp/semantics.c:7297 +#: c/c-typeck.c:13073 cp/semantics.c:7310 #, gcc-internal-format msgid "%qE must be % for %" msgstr "%qE debe ser % para %" -#: c/c-typeck.c:13087 cp/semantics.c:5908 +#: c/c-typeck.c:13087 cp/semantics.c:5921 #, gcc-internal-format msgid "modifier should not be specified in % clause on % or % constructs" msgstr "" @@ -35957,18 +36030,18 @@ msgid "%<_Atomic%> %qD in % clause" msgstr "" -#: c/c-typeck.c:13139 cp/semantics.c:5991 +#: c/c-typeck.c:13139 cp/semantics.c:6004 #, gcc-internal-format msgid "% clause step %qE is neither constant nor a parameter" msgstr "" -#: c/c-typeck.c:13169 c/c-typeck.c:13556 cp/semantics.c:6075 -#: cp/semantics.c:6931 +#: c/c-typeck.c:13169 c/c-typeck.c:13556 cp/semantics.c:6088 +#: cp/semantics.c:6944 #, gcc-internal-format msgid "%qE is not a variable in clause %qs" msgstr "%qE no es una variable en la cláusula %qs" -#: c/c-typeck.c:13178 cp/semantics.c:6084 +#: c/c-typeck.c:13178 cp/semantics.c:6097 #, fuzzy, gcc-internal-format #| msgid "%qD appears more than once in data clauses" msgid "%qD appears more than once in reduction clauses" @@ -35981,33 +36054,33 @@ #: c/c-typeck.c:13196 c/c-typeck.c:13225 c/c-typeck.c:13385 c/c-typeck.c:13499 #: c/c-typeck.c:13505 c/c-typeck.c:13518 c/c-typeck.c:13527 -#: cp/semantics.c:6094 cp/semantics.c:6101 cp/semantics.c:6152 -#: cp/semantics.c:6158 cp/semantics.c:6195 cp/semantics.c:6687 -#: cp/semantics.c:6824 cp/semantics.c:6830 cp/semantics.c:6843 -#: cp/semantics.c:6852 +#: cp/semantics.c:6107 cp/semantics.c:6114 cp/semantics.c:6165 +#: cp/semantics.c:6171 cp/semantics.c:6208 cp/semantics.c:6700 +#: cp/semantics.c:6837 cp/semantics.c:6843 cp/semantics.c:6856 +#: cp/semantics.c:6865 #, gcc-internal-format msgid "%qD appears more than once in data clauses" msgstr "%qD aparece más de una vez en las cláusulas de datos" #: c/c-typeck.c:13198 c/c-typeck.c:13227 c/c-typeck.c:13507 c/c-typeck.c:13529 -#: cp/semantics.c:6103 cp/semantics.c:6160 cp/semantics.c:6832 -#: cp/semantics.c:6854 +#: cp/semantics.c:6116 cp/semantics.c:6173 cp/semantics.c:6845 +#: cp/semantics.c:6867 #, fuzzy, gcc-internal-format #| msgid "%qD appears more than once in data clauses" msgid "%qD appears both in data and map clauses" msgstr "%qD aparece más de una vez en las cláusulas de datos" -#: c/c-typeck.c:13212 cp/semantics.c:6146 +#: c/c-typeck.c:13212 cp/semantics.c:6159 #, gcc-internal-format msgid "%qE is not a variable in clause %" msgstr "%qE no es una variable en la cláusula %" -#: c/c-typeck.c:13241 cp/semantics.c:6189 +#: c/c-typeck.c:13241 cp/semantics.c:6202 #, gcc-internal-format msgid "%qE is not a variable in clause %" msgstr "%qE no es una variable en la cláusula %" -#: c/c-typeck.c:13260 cp/semantics.c:6552 +#: c/c-typeck.c:13260 cp/semantics.c:6565 #, fuzzy, gcc-internal-format #| msgid "%qE is not a variable in clause %qs" msgid "%qE is not a variable in % clause" @@ -36031,64 +36104,64 @@ msgid "%qE appears more than once in % clauses" msgstr "%qE aparece más de una vez en las cláusulas de datos" -#: c/c-typeck.c:13336 cp/semantics.c:6634 +#: c/c-typeck.c:13336 cp/semantics.c:6647 #, fuzzy, gcc-internal-format #| msgid "%qE is not a variable in clause %qs" msgid "%qE is not a variable in % clause" msgstr "%qE no es una variable en la cláusula %qs" -#: c/c-typeck.c:13358 cp/semantics.c:6665 +#: c/c-typeck.c:13358 cp/semantics.c:6678 #, fuzzy, gcc-internal-format #| msgid "Array section not permitted in '%s' call at %L" msgid "array section does not have mappable type in %qs clause" msgstr "No se permite una sección de matriz en la llamada '%s' en %L" -#: c/c-typeck.c:13382 c/c-typeck.c:13516 cp/semantics.c:6684 -#: cp/semantics.c:6841 +#: c/c-typeck.c:13382 c/c-typeck.c:13516 cp/semantics.c:6697 +#: cp/semantics.c:6854 #, fuzzy, gcc-internal-format #| msgid "%qD appears more than once in data clauses" msgid "%qD appears more than once in motion clauses" msgstr "%qD aparece más de una vez en las cláusulas de datos" -#: c/c-typeck.c:13388 c/c-typeck.c:13520 cp/semantics.c:6690 -#: cp/semantics.c:6845 +#: c/c-typeck.c:13388 c/c-typeck.c:13520 cp/semantics.c:6703 +#: cp/semantics.c:6858 #, fuzzy, gcc-internal-format #| msgid "%qD appears more than once in data clauses" msgid "%qD appears more than once in map clauses" msgstr "%qD aparece más de una vez en las cláusulas de datos" -#: c/c-typeck.c:13420 cp/semantics.c:6731 +#: c/c-typeck.c:13420 cp/semantics.c:6744 #, fuzzy, gcc-internal-format #| msgid "%qE is not a variable in clause %qs" msgid "%qE does not have a mappable type in %qs clause" msgstr "%qE no es una variable en la cláusula %qs" -#: c/c-typeck.c:13480 c/c-typeck.c:13570 cp/semantics.c:6806 -#: cp/semantics.c:6945 +#: c/c-typeck.c:13480 c/c-typeck.c:13570 cp/semantics.c:6819 +#: cp/semantics.c:6958 #, fuzzy, gcc-internal-format #| msgid "%qD is not a variable in clause %qs" msgid "%qD does not have a mappable type in %qs clause" msgstr "%qD no es una variable en la cláusula %qs" -#: c/c-typeck.c:13551 cp/semantics.c:6925 +#: c/c-typeck.c:13551 cp/semantics.c:6938 #, fuzzy, gcc-internal-format #| msgid "%qE is not a variable in clause %qs" msgid "%qE is neither a variable nor a function name in clause %qs" msgstr "%qE no es una variable en la cláusula %qs" -#: c/c-typeck.c:13579 cp/semantics.c:6954 +#: c/c-typeck.c:13579 cp/semantics.c:6967 #, fuzzy, gcc-internal-format #| msgid "%qE appears more than once in data clauses" msgid "%qE appears more than once on the same % directive" msgstr "%qE aparece más de una vez en las cláusulas de datos" -#: c/c-typeck.c:13593 cp/semantics.c:6969 +#: c/c-typeck.c:13593 cp/semantics.c:6982 #, fuzzy, gcc-internal-format #| msgid "%qD is not a variable in clause %qs" msgid "%qD is not an argument in % clause" msgstr "%qD no es una variable en la cláusula %qs" -#: c/c-typeck.c:13596 cp/semantics.c:6971 +#: c/c-typeck.c:13596 cp/semantics.c:6984 #, fuzzy, gcc-internal-format #| msgid "%qE is not a variable in clause %qs" msgid "%qE is not an argument in % clause" @@ -36100,32 +36173,32 @@ msgid "%qs variable is neither a pointer nor an array" msgstr "el tipo de vector delete no es del tipo puntero ni matriz" -#: c/c-typeck.c:13686 cp/semantics.c:6351 +#: c/c-typeck.c:13686 cp/semantics.c:6364 #, gcc-internal-format msgid "% modifier specified for %qs schedule kind" msgstr "" -#: c/c-typeck.c:13717 cp/semantics.c:7149 +#: c/c-typeck.c:13717 cp/semantics.c:7162 #, gcc-internal-format msgid "% clause is incompatible with %" msgstr "" -#: c/c-typeck.c:13767 cp/semantics.c:7340 +#: c/c-typeck.c:13767 cp/semantics.c:7353 #, gcc-internal-format msgid "%qE is predetermined %qs for %qs" msgstr "%qE está predeterminado como %qs para %qs" -#: c/c-typeck.c:13787 cp/semantics.c:7231 +#: c/c-typeck.c:13787 cp/semantics.c:7244 #, gcc-internal-format msgid "% clause value is bigger than % clause value" msgstr "" -#: c/c-typeck.c:13799 cp/semantics.c:7244 +#: c/c-typeck.c:13799 cp/semantics.c:7257 #, gcc-internal-format msgid "% schedule modifier specified together with % clause" msgstr "" -#: c/c-typeck.c:13817 cp/semantics.c:7211 +#: c/c-typeck.c:13817 cp/semantics.c:7224 #, gcc-internal-format msgid "% clause step is a parameter %qD not specified in % clause" msgstr "" @@ -36716,163 +36789,163 @@ msgid "use of multiversioned function without a default" msgstr "función definida por defecto %q+D con argumento por defecto" -#: cp/call.c:7710 +#: cp/call.c:7713 #, fuzzy, gcc-internal-format #| msgid "passing %qT as % argument of %q#D discards qualifiers" msgid "passing %qT as % argument discards qualifiers" msgstr "pasar %qT como el argumento % de %q#D descarta a los calificadores" -#: cp/call.c:7713 cp/call.c:7829 cp/call.c:9587 cp/name-lookup.c:5963 +#: cp/call.c:7716 cp/call.c:7832 cp/call.c:9592 cp/name-lookup.c:5962 #, gcc-internal-format msgid " in call to %qD" msgstr " en la llamada a %qD" -#: cp/call.c:7743 +#: cp/call.c:7746 #, gcc-internal-format msgid "%qT is not an accessible base of %qT" msgstr "%qT no es una base inaccesible de %qT" -#: cp/call.c:7825 +#: cp/call.c:7828 #, gcc-internal-format msgid "deducing %qT as %qT" msgstr "se deduce %qT como %qT" -#: cp/call.c:7831 +#: cp/call.c:7834 #, gcc-internal-format msgid " (you can disable this with -fno-deduce-init-list)" msgstr " (puede desactivar esto con -fno-deduce-init-list)" -#: cp/call.c:7931 +#: cp/call.c:7934 #, fuzzy, gcc-internal-format #| msgid "too many arguments to constructor %q#D" msgid "passing arguments to ellipsis of inherited constructor %qD" msgstr "demasiados argumentos para el constructor %q#D" -#: cp/call.c:8275 +#: cp/call.c:8280 #, fuzzy, gcc-internal-format #| msgid "constant refers to itself" msgid "constructor delegates to itself" msgstr "la constante se refiere a sí misma" -#: cp/call.c:8525 +#: cp/call.c:8530 #, gcc-internal-format msgid "call to non-function %qD" msgstr "llamada a %qD que no es función" -#: cp/call.c:8571 cp/pt.c:14200 cp/typeck.c:2807 +#: cp/call.c:8576 cp/pt.c:14282 cp/typeck.c:2807 #, gcc-internal-format msgid "cannot call constructor %<%T::%D%> directly" msgstr "no se puede llamar directamente al constructor %<%T::%D%>" -#: cp/call.c:8573 +#: cp/call.c:8578 #, fuzzy, gcc-internal-format #| msgid " for a function-style cast, remove the redundant %<::%D%>" msgid "for a function-style cast, remove the redundant %<::%D%>" msgstr " para una conversión de estilo de función, borre el %<::%D%> redundante" -#: cp/call.c:8708 +#: cp/call.c:8713 #, gcc-internal-format msgid "no matching function for call to %<%T::operator %T(%A)%#V%>" msgstr "no se encontró una función coincidente para la llamada a %<%T::operator %T(%A)%#V%>" -#: cp/call.c:8724 +#: cp/call.c:8729 #, fuzzy, gcc-internal-format #| msgid "no matching function for call to %<%T::%s(%A)%#V%>" msgid "no matching function for call to %<%T::%E(%A)%#V%>" msgstr "no se encontró una función coincidente para la llamada a %<%T::%s(%A)%#V%>" -#: cp/call.c:8748 +#: cp/call.c:8753 #, fuzzy, gcc-internal-format #| msgid "no matching function for call to %<%D(%A)%>" msgid "no matching function for call to %<%s(%A)%>" msgstr "no hay una función coincidente para la llamada a %<%D(%A)%>" -#: cp/call.c:8751 +#: cp/call.c:8756 #, gcc-internal-format msgid "call of overloaded %<%s(%A)%> is ambiguous" msgstr "la llamada del %<%s(%A)%> sobrecargado es ambigua" -#: cp/call.c:8772 +#: cp/call.c:8777 #, fuzzy, gcc-internal-format #| msgid "non-static data member initializers" msgid "pure virtual %q#D called from non-static data member initializer" msgstr "los inicializadores de los datos miembro no son estáticos" -#: cp/call.c:8777 +#: cp/call.c:8782 #, fuzzy, gcc-internal-format #| msgid "abstract virtual `%#D' called from constructor" msgid "pure virtual %q#D called from constructor" msgstr "virtual abstracto `%#D' llamado desde un constructor" -#: cp/call.c:8778 +#: cp/call.c:8783 #, fuzzy, gcc-internal-format #| msgid "abstract virtual `%#D' called from destructor" msgid "pure virtual %q#D called from destructor" msgstr "virtual abstracto `%#D' llamado desde un destructor" -#: cp/call.c:8801 +#: cp/call.c:8806 #, gcc-internal-format msgid "cannot call member function %qD without object" msgstr "no se puede llamar a la función miembro %qD sin un objeto" -#: cp/call.c:9585 +#: cp/call.c:9590 #, gcc-internal-format msgid "passing %qT chooses %qT over %qT" msgstr "al pasar %qT se escoge %qT sobre %qT" -#: cp/call.c:9645 +#: cp/call.c:9650 #, gcc-internal-format msgid "choosing %qD over %qD" msgstr "se escoge %qD sobre %qD" -#: cp/call.c:9646 +#: cp/call.c:9651 #, gcc-internal-format msgid " for conversion from %qT to %qT" msgstr " para la conversión de %qT a %qT" -#: cp/call.c:9649 +#: cp/call.c:9654 #, gcc-internal-format msgid " because conversion sequence for the argument is better" msgstr " porque la secuencia de conversión para el argumento es mejor" -#: cp/call.c:9873 +#: cp/call.c:9878 #, gcc-internal-format msgid "default argument mismatch in overload resolution" msgstr "no coincide el argumento por defecto en la resolución de sobrecarga" -#: cp/call.c:9877 +#: cp/call.c:9882 #, fuzzy, gcc-internal-format #| msgid " candidate 1: %q+#F" msgid " candidate 1: %q#F" msgstr " candidato 1: %q+#F" -#: cp/call.c:9879 +#: cp/call.c:9884 #, fuzzy, gcc-internal-format #| msgid " candidate 2: %q+#F" msgid " candidate 2: %q#F" msgstr " candidato 2: %q+#F" -#: cp/call.c:9924 +#: cp/call.c:9929 #, gcc-internal-format msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:" msgstr "ISO C++ dice que estos son ambiguos, aún cuando la peor conversión para el primero es mejor que la peor conversión para el segundo:" -#: cp/call.c:10102 +#: cp/call.c:10107 #, gcc-internal-format msgid "could not convert %qE from %qT to %qT" msgstr "no se puede convertir %qE de %qT a %qT" -#: cp/call.c:10296 +#: cp/call.c:10301 #, gcc-internal-format msgid "a temporary bound to %qD only persists until the constructor exits" msgstr "un enlace temporal a %qD sólo persiste hasta que el constructor termina" -#: cp/call.c:10419 +#: cp/call.c:10424 #, gcc-internal-format msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT" msgstr "inicialización no válida de una referencia que no es constante de tipo %qT desde un r-valor de tipo %qT" -#: cp/call.c:10423 +#: cp/call.c:10428 #, gcc-internal-format msgid "invalid initialization of reference of type %qT from expression of type %qT" msgstr "inicialización no válida de la referencia de tipo %qT desde una expresión de tipo %qT" @@ -36980,297 +37053,297 @@ msgid "cannot derive from % base %qT in derived type %qT" msgstr "no se puede derivar de la base % %qT al tipo derivado %qT" -#: cp/class.c:2231 +#: cp/class.c:2233 #, gcc-internal-format msgid "all member functions in class %qT are private" msgstr "todos las funciones miembros en la clase %qT son privadas" -#: cp/class.c:2243 +#: cp/class.c:2245 #, gcc-internal-format msgid "%q#T only defines a private destructor and has no friends" msgstr "%q#T solamente define un destructor privado y no tiene friends" -#: cp/class.c:2288 +#: cp/class.c:2290 #, gcc-internal-format msgid "%q#T only defines private constructors and has no friends" msgstr "%q#T solamente define constructores privados y no tiene friends" # Ojo, no es impostor, sino impositor, el que impone. cfuga -#: cp/class.c:2681 +#: cp/class.c:2683 #, gcc-internal-format msgid "no unique final overrider for %qD in %qT" msgstr "no hay un impositor único final para %qD en %qT" -#: cp/class.c:3042 +#: cp/class.c:3044 #, fuzzy, gcc-internal-format #| msgid "%q+#D cannot be overloaded" msgid "%qD can be marked override" msgstr "no se puede sobrecargar %q+#D" -#: cp/class.c:3054 +#: cp/class.c:3056 #, fuzzy, gcc-internal-format #| msgid "%q+#D marked final, but is not virtual" msgid "%q+#D marked %, but is not virtual" msgstr "se marca %q+#D como final, pero no es virtual" -#: cp/class.c:3056 +#: cp/class.c:3058 #, fuzzy, gcc-internal-format #| msgid "%q+#D marked override, but does not override" msgid "%q+#D marked %, but does not override" msgstr "%q+#D se marca como override, pero no hace override" -#: cp/class.c:3126 +#: cp/class.c:3128 #, fuzzy, gcc-internal-format #| msgid "%q+D was hidden" msgid "%qD was hidden" msgstr "%q+D estaba escondido" -#: cp/class.c:3128 +#: cp/class.c:3130 #, fuzzy, gcc-internal-format #| msgid " by %q+D" msgid " by %qD" msgstr " por %q+D" -#: cp/class.c:3162 cp/decl2.c:1483 +#: cp/class.c:3164 cp/decl2.c:1484 #, fuzzy, gcc-internal-format #| msgid "%q+#D invalid; an anonymous union can only have non-static data members" msgid "%q#D invalid; an anonymous union can only have non-static data members" msgstr "%q+#D no válido; un union anónimo sólo puede tener miembros con datos no estáticos" -#: cp/class.c:3166 +#: cp/class.c:3168 #, fuzzy, gcc-internal-format #| msgid "%q+#D invalid; an anonymous struct can only have non-static data members" msgid "%q#D invalid; an anonymous struct can only have non-static data members" msgstr "%q+#D no válido; un struct anónimo sólo puede tener miembros con datos no estáticos" -#: cp/class.c:3178 cp/decl2.c:1490 +#: cp/class.c:3180 cp/decl2.c:1491 #, fuzzy, gcc-internal-format #| msgid "private member %q+#D in anonymous union" msgid "private member %q#D in anonymous union" msgstr "miembro privado %q+#D en union anónima" -#: cp/class.c:3181 +#: cp/class.c:3183 #, fuzzy, gcc-internal-format #| msgid "private member %q+#D in anonymous struct" msgid "private member %q#D in anonymous struct" msgstr "miembro privado %q+#D en struct anónimo" -#: cp/class.c:3187 cp/decl2.c:1493 +#: cp/class.c:3189 cp/decl2.c:1494 #, fuzzy, gcc-internal-format #| msgid "protected member %q+#D in anonymous union" msgid "protected member %q#D in anonymous union" msgstr "miembro protegido %q+#D en union anónima" -#: cp/class.c:3190 +#: cp/class.c:3192 #, fuzzy, gcc-internal-format #| msgid "protected member %q+#D in anonymous struct" msgid "protected member %q#D in anonymous struct" msgstr "miembro protegido %q+#D en struct anónimo" -#: cp/class.c:3378 +#: cp/class.c:3380 #, gcc-internal-format msgid "the ellipsis in %qD is not inherited" msgstr "" -#: cp/class.c:3547 +#: cp/class.c:3549 #, gcc-internal-format msgid "bit-field %q+#D with non-integral type" msgstr "campo de bits %q+#D con tipo no entero" -#: cp/class.c:3563 +#: cp/class.c:3565 #, gcc-internal-format msgid "bit-field %q+D width not an integer constant" msgstr "la anchura del campo de bits %q+D no es una constante entera" -#: cp/class.c:3568 +#: cp/class.c:3570 #, gcc-internal-format msgid "negative width in bit-field %q+D" msgstr "anchura negativa en el campo de bits %q+D" -#: cp/class.c:3573 +#: cp/class.c:3575 #, gcc-internal-format msgid "zero width for bit-field %q+D" msgstr "anchura cero para el campo de bits %q+D" -#: cp/class.c:3583 +#: cp/class.c:3585 #, fuzzy, gcc-internal-format #| msgid "width of %q+D exceeds its type" msgid "width of %qD exceeds its type" msgstr "la anchura de %q+D excede su tipo" -#: cp/class.c:3588 +#: cp/class.c:3590 #, fuzzy, gcc-internal-format #| msgid "%q+D is too small to hold all values of %q#T" msgid "%qD is too small to hold all values of %q#T" msgstr "%q+D es demasiado pequeño para contener todos los valores de %q#T" -#: cp/class.c:3648 +#: cp/class.c:3650 #, gcc-internal-format msgid "member %q+#D with constructor not allowed in union" msgstr "no se permite el miembro %q+#D con constructor en la union" -#: cp/class.c:3651 +#: cp/class.c:3653 #, gcc-internal-format msgid "member %q+#D with destructor not allowed in union" msgstr "no se permite el miembro %q+#D con destructor en la union" -#: cp/class.c:3653 +#: cp/class.c:3655 #, gcc-internal-format msgid "member %q+#D with copy assignment operator not allowed in union" msgstr "no se permite el miembro %q+#D con operador de asignación de copia en la union" -#: cp/class.c:3657 +#: cp/class.c:3659 #, gcc-internal-format msgid "unrestricted unions only available with -std=c++11 or -std=gnu++11" msgstr "las uniones sin restricción sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/class.c:3781 +#: cp/class.c:3783 #, fuzzy, gcc-internal-format #| msgid "%q+D may not be static because it is a member of a union" msgid "in C++98 %q+D may not be static because it is a member of a union" msgstr "%q+D no debe ser static porque es el miembro de una unión" -#: cp/class.c:3788 +#: cp/class.c:3790 #, fuzzy, gcc-internal-format #| msgid "non-static data member %qD has Java class type" msgid "non-static data member %q+D in a union may not have reference type %qT" msgstr "el dato miembro que no es estático %qD tiene un tipo de clase Java" -#: cp/class.c:3798 +#: cp/class.c:3800 #, gcc-internal-format msgid "field %q+D invalidly declared function type" msgstr "el campo %q+D no válidamente se declara como un tipo de función" -#: cp/class.c:3804 +#: cp/class.c:3806 #, gcc-internal-format msgid "field %q+D invalidly declared method type" msgstr "el campo %q+D no válidamente se declara como un tipo de método" -#: cp/class.c:3864 +#: cp/class.c:3866 #, fuzzy, gcc-internal-format #| msgid "ignoring packed attribute because of unpacked non-POD field %q+#D" msgid "ignoring packed attribute because of unpacked non-POD field %q#D" msgstr "se descartan los atributos packed por el campo %q+#D sin empacar que no es POD" -#: cp/class.c:3912 +#: cp/class.c:3914 #, fuzzy, gcc-internal-format #| msgid "non-member %qs cannot be declared %" msgid "member %q+D cannot be declared both % and %" msgstr "el no-miembro %qs no se puede declarar %" -#: cp/class.c:3918 +#: cp/class.c:3920 #, fuzzy, gcc-internal-format #| msgid "non-member %qs cannot be declared %" msgid "member %q+D cannot be declared as a % reference" msgstr "el no-miembro %qs no se puede declarar %" -#: cp/class.c:3944 +#: cp/class.c:3946 #, gcc-internal-format msgid "multiple fields in union %qT initialized" msgstr "múltiples campos inicializados en la unión %qT" -#: cp/class.c:3985 +#: cp/class.c:3987 #, fuzzy, gcc-internal-format #| msgid "field %q+#D with same name as class" msgid "field %q#D with same name as class" msgstr "campo %q+#D con el mismo nombre que la clase" -#: cp/class.c:4008 +#: cp/class.c:4010 #, gcc-internal-format msgid "%q#T has pointer data members" msgstr "%q#T tiene miembros punteros a datos" -#: cp/class.c:4013 +#: cp/class.c:4015 #, gcc-internal-format msgid " but does not override %<%T(const %T&)%>" msgstr " pero no se impone a %<%T(const %T&)%>" -#: cp/class.c:4015 +#: cp/class.c:4017 #, gcc-internal-format msgid " or %" msgstr " o a %" -#: cp/class.c:4019 +#: cp/class.c:4021 #, gcc-internal-format msgid " but does not override %" msgstr " pero no se impone a %" -#: cp/class.c:4424 +#: cp/class.c:4426 #, gcc-internal-format msgid "alignment of %qD increased in -fabi-version=9 (GCC 5.2)" msgstr "" -#: cp/class.c:4427 +#: cp/class.c:4429 #, fuzzy, gcc-internal-format #| msgid "alignment of %qD is bigger than original declaration" msgid "alignment of %qD will increase in -fabi-version=9" msgstr "la alineación de %qD es más grande que la declaración original" -#: cp/class.c:4698 +#: cp/class.c:4700 #, gcc-internal-format msgid "initializer specified for non-virtual method %q+D" msgstr "se especificó un inicializador para el método %q+D que no es virtual" -#: cp/class.c:5155 +#: cp/class.c:5157 #, gcc-internal-format msgid "method overrides both % and %qE methods" msgstr "el método anula tanto % como los métodos %qE" -#: cp/class.c:5176 +#: cp/class.c:5178 #, gcc-internal-format msgid "method declared %qE overriding %qE method" msgstr "el método declarado como %qE anula el método %qE" -#: cp/class.c:5771 cp/constexpr.c:218 +#: cp/class.c:5775 cp/constexpr.c:220 #, gcc-internal-format msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type" msgstr "la clase envolvente de la función miembro que no es estática constexpr %q+#D no es un tipo literal" -#: cp/class.c:5796 +#: cp/class.c:5799 #, gcc-internal-format msgid "%q+T is not literal because:" msgstr "%q+T no es literal porque:" -#: cp/class.c:5798 +#: cp/class.c:5801 #, gcc-internal-format msgid " %q+T has a non-trivial destructor" msgstr " %q+T tiene un destructor que no es trivial" -#: cp/class.c:5803 +#: cp/class.c:5806 #, gcc-internal-format msgid " %q+T is not an aggregate, does not have a trivial default constructor, and has no constexpr constructor that is not a copy or move constructor" msgstr " %q+T no es un agregado, no tiene un constructor trivial por defecto y no tiene un constructor constexpr que no es un constructor copy o move" -#: cp/class.c:5838 +#: cp/class.c:5841 #, gcc-internal-format msgid " base class %qT of %q+T is non-literal" msgstr " la clase base %qT de %q+T no es literal" -#: cp/class.c:5853 +#: cp/class.c:5856 #, fuzzy, gcc-internal-format #| msgid " non-static data member %q+D has non-literal type" msgid " non-static data member %qD has non-literal type" msgstr " el dato miembro que no es estático %q+D tiene un tipo que no es literal" -#: cp/class.c:5860 +#: cp/class.c:5863 #, fuzzy, gcc-internal-format #| msgid " non-static data member %q+D has non-literal type" msgid " non-static data member %qD has volatile type" msgstr " el dato miembro que no es estático %q+D tiene un tipo que no es literal" -#: cp/class.c:5978 +#: cp/class.c:5981 #, fuzzy, gcc-internal-format #| msgid "base class %q#T has a non-virtual destructor" msgid "base class %q#T has accessible non-virtual destructor" msgstr "la clase base %q#T tiene un destructor no virtual" -#: cp/class.c:6007 +#: cp/class.c:6010 #, fuzzy, gcc-internal-format #| msgid "non-static reference %q+#D in class without a constructor" msgid "non-static reference %q#D in class without a constructor" msgstr "referencia %q+#D que no es static en una clase sin un constructor" -#: cp/class.c:6013 +#: cp/class.c:6016 #, fuzzy, gcc-internal-format #| msgid "non-static const member %q+#D in class without a constructor" msgid "non-static const member %q#D in class without a constructor" @@ -37278,165 +37351,165 @@ #. If the function is defaulted outside the class, we just #. give the synthesis error. -#: cp/class.c:6039 +#: cp/class.c:6042 #, gcc-internal-format msgid "%q+D declared to take const reference, but implicit declaration would take non-const" msgstr "se declaró %q+D para tomar referencia const, pero la declaración implícita tomaría algo que no es const" -#: cp/class.c:6316 +#: cp/class.c:6319 #, gcc-internal-format msgid "direct base %qT inaccessible in %qT due to ambiguity" msgstr "base directa %qT inaccesible en %qT debido a ambigüedad" -#: cp/class.c:6328 +#: cp/class.c:6331 #, gcc-internal-format msgid "virtual base %qT inaccessible in %qT due to ambiguity" msgstr "base virtual %qT inaccesible en %qT debido a ambigüedad" -#: cp/class.c:6556 +#: cp/class.c:6559 #, fuzzy, gcc-internal-format #| msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC" msgid "offset of %qD is not ABI-compliant and may change in a future version of GCC" msgstr "el desplazamiento de %q+D no cumple con la ABI y puede cambiar en una versión futura de GCC" -#: cp/class.c:6711 +#: cp/class.c:6714 #, fuzzy, gcc-internal-format #| msgid "size of array %qE is too large" msgid "size of type %qT is too large (%qE bytes)" msgstr "el tamaño de la matriz %qE es demasiado grande" -#: cp/class.c:7009 +#: cp/class.c:7012 #, fuzzy, gcc-internal-format #| msgid "invalid use of %<...%> with non-slice" msgid "invalid use of %q#T with a zero-size array in %q#D" msgstr "uso no válido de %<...%> con algo que no es rebanada" -#: cp/class.c:7011 +#: cp/class.c:7014 #, fuzzy, gcc-internal-format #| msgid "invalid use of structure with flexible array member" msgid "invalid use of %q#T with a flexible array member in %q#T" msgstr "uso no válido de una estructura con un miembro de matriz flexible" -#: cp/class.c:7016 +#: cp/class.c:7019 #, fuzzy, gcc-internal-format #| msgid " %q+#D declared here" msgid "array member %q#D declared here" msgstr " %q+#D se declaró aquí" -#: cp/class.c:7043 +#: cp/class.c:7046 #, fuzzy, gcc-internal-format #| msgid "flexible array member not at end of struct" msgid "zero-size array member %qD not at end of %q#T" msgstr "el miembro de matriz flexible no está al final del struct" -#: cp/class.c:7045 +#: cp/class.c:7048 #, fuzzy, gcc-internal-format #| msgid "flexible array member in otherwise empty struct" msgid "zero-size array member %qD in an otherwise empty %q#T" msgstr "el miembro de matriz flexible sería de otra manera un struct vacío" -#: cp/class.c:7053 cp/class.c:7083 +#: cp/class.c:7056 cp/class.c:7086 #, fuzzy, gcc-internal-format #| msgid "redefinition of %q#T" msgid "in the definition of %q#T" msgstr "redefinición de %q#T" -#: cp/class.c:7061 +#: cp/class.c:7064 #, fuzzy, gcc-internal-format #| msgid "flexible array member not at end of struct" msgid "flexible array member %qD not at end of %q#T" msgstr "el miembro de matriz flexible no está al final del struct" -#: cp/class.c:7063 +#: cp/class.c:7066 #, fuzzy, gcc-internal-format #| msgid "flexible array member in otherwise empty struct" msgid "flexible array member %qD in an otherwise empty %q#T" msgstr "el miembro de matriz flexible sería de otra manera un struct vacío" -#: cp/class.c:7081 +#: cp/class.c:7084 #, fuzzy, gcc-internal-format #| msgid " %q+#D declared here" msgid "next member %q#D declared here" msgstr " %q+#D se declaró aquí" -#: cp/class.c:7193 cp/parser.c:22773 +#: cp/class.c:7196 cp/parser.c:22796 #, gcc-internal-format msgid "redefinition of %q#T" msgstr "redefinición de %q#T" -#: cp/class.c:7337 +#: cp/class.c:7340 #, gcc-internal-format msgid "%q#T has virtual functions and accessible non-virtual destructor" msgstr "%q#T tiene funciones virtuales y destructor no virtual accesible" -#: cp/class.c:7365 +#: cp/class.c:7368 #, fuzzy, gcc-internal-format #| msgid "type transparent class %qT does not have any fields" msgid "type transparent %q#T does not have any fields" msgstr "la clase transparente tipo %qT no tiene ningún campo" -#: cp/class.c:7371 +#: cp/class.c:7374 #, gcc-internal-format msgid "type transparent class %qT has base classes" msgstr "la clase transparente tipo %qT tiene clases base" -#: cp/class.c:7375 +#: cp/class.c:7378 #, gcc-internal-format msgid "type transparent class %qT has virtual functions" msgstr "la clase transparente tipo %qT tiene funciones virtuales" -#: cp/class.c:7381 +#: cp/class.c:7384 #, gcc-internal-format msgid "type transparent %q#T cannot be made transparent because the type of the first field has a different ABI from the class overall" msgstr "" -#: cp/class.c:7545 +#: cp/class.c:7548 #, fuzzy, gcc-internal-format #| msgid "deducing from brace-enclosed initializer list requires #include " msgid "definition of std::initializer_list does not match #include " msgstr "la deducción de una lista inicializadora encerrada entre llaves requiere #include " -#: cp/class.c:7556 +#: cp/class.c:7559 #, gcc-internal-format msgid "trying to finish struct, but kicked out due to previous parse errors" msgstr "se trató de terminar struct, pero fue sacado debido a errores previos de decodificación" -#: cp/class.c:8072 +#: cp/class.c:8075 #, gcc-internal-format msgid "language string %<\"%E\"%> not recognized" msgstr "no se reconoce la cadena de lenguaje %<\"%E\"%>" -#: cp/class.c:8162 +#: cp/class.c:8165 #, gcc-internal-format msgid "cannot resolve overloaded function %qD based on conversion to type %qT" msgstr "no se puede resolver la función sobrecargada %qD basándose en la conversión al tipo %qT" -#: cp/class.c:8317 +#: cp/class.c:8320 #, gcc-internal-format msgid "no matches converting function %qD to type %q#T" msgstr "no hay coincidencias al convertir la función %qD al tipo %q#T" -#: cp/class.c:8345 +#: cp/class.c:8348 #, gcc-internal-format msgid "converting overloaded function %qD to type %q#T is ambiguous" msgstr "la conversión de la función sobrecargada %qD al tipo %q#T es ambigua" -#: cp/class.c:8372 +#: cp/class.c:8375 #, gcc-internal-format msgid "assuming pointer to member %qD" msgstr "asumiendo el puntero a miembro %qD" -#: cp/class.c:8375 +#: cp/class.c:8378 #, gcc-internal-format msgid "(a pointer to member can only be formed with %<&%E%>)" msgstr "(un puntero a miembro solamente se puede formar con %<&%E%>)" -#: cp/class.c:8450 cp/class.c:8487 +#: cp/class.c:8453 cp/class.c:8490 #, gcc-internal-format msgid "not enough type information" msgstr "no hay suficiente información de tipo" -#: cp/class.c:8470 cp/cvt.c:171 cp/cvt.c:198 cp/cvt.c:247 +#: cp/class.c:8473 cp/cvt.c:171 cp/cvt.c:198 cp/cvt.c:247 #, gcc-internal-format msgid "cannot convert %qE from type %qT to type %qT" msgstr "no se puede convertir %qE desde el tipo %qT al tipo %qT" @@ -37446,12 +37519,12 @@ #. A name N used in a class S shall refer to the same declaration #. in its context and when re-evaluated in the completed scope of #. S. -#: cp/class.c:8756 +#: cp/class.c:8759 #, gcc-internal-format msgid "declaration of %q#D" msgstr "la declaración de %q#D" -#: cp/class.c:8758 +#: cp/class.c:8761 #, fuzzy, gcc-internal-format #| msgid "changes meaning of %qD from %q+#D" msgid "changes meaning of %qD from %q#D" @@ -37484,366 +37557,366 @@ msgid "invalid return type %qT of constexpr function %q+D" msgstr "tipo de devolución %qT no válido para la función constexpr %q+D" -#: cp/constexpr.c:228 +#: cp/constexpr.c:229 #, gcc-internal-format msgid "%q#T has virtual base classes" msgstr "%q#T tiene clases base virtuales" -#: cp/constexpr.c:488 +#: cp/constexpr.c:489 #, gcc-internal-format msgid "constexpr constructor does not have empty body" msgstr "el constructor constexpr no tiene cuerpo vacío" -#: cp/constexpr.c:594 +#: cp/constexpr.c:595 #, gcc-internal-format msgid "body of % constructor cannot be a function-try-block" msgstr "" -#: cp/constexpr.c:723 +#: cp/constexpr.c:724 #, gcc-internal-format msgid "% constructor for union %qT must initialize exactly one non-static data member" msgstr "el constructor % para union %qT debe inicializar exactamente un dato miembro que no es static" -#: cp/constexpr.c:775 +#: cp/constexpr.c:776 #, fuzzy, gcc-internal-format #| msgid "uninitialized member %qD in % constructor" msgid "member %qD must be initialized by mem-initializer in % constructor" msgstr "miembro %qD sin inicializar en el constructor %" -#: cp/constexpr.c:816 +#: cp/constexpr.c:817 #, gcc-internal-format msgid "body of constexpr function %qD not a return-statement" msgstr "el cuerpo de la función constexpr %qD no es una declaración de devolución" -#: cp/constexpr.c:876 +#: cp/constexpr.c:877 #, fuzzy, gcc-internal-format #| msgid "%q+D is not usable as a constexpr function because:" msgid "%qD is not usable as a constexpr function because:" msgstr "%q+D no se puede usar como una función constexpr porque:" -#: cp/constexpr.c:1176 cp/constexpr.c:1185 cp/constexpr.c:1750 +#: cp/constexpr.c:1177 cp/constexpr.c:1186 cp/constexpr.c:1766 #, gcc-internal-format msgid "%q+E is not a constant expression" msgstr "%q+E no es una expresión constante" -#: cp/constexpr.c:1363 cp/constexpr.c:5115 +#: cp/constexpr.c:1364 cp/constexpr.c:5146 #, fuzzy, gcc-internal-format #| msgid "internal function" msgid "call to internal function %qE" msgstr "función interna" -#: cp/constexpr.c:1426 +#: cp/constexpr.c:1442 #, gcc-internal-format msgid "expression %qE does not designate a constexpr function" msgstr "la expresión %qE no designa una función constexpr" -#: cp/constexpr.c:1444 cp/constexpr.c:5133 +#: cp/constexpr.c:1460 cp/constexpr.c:5164 #, gcc-internal-format msgid "call to non-constexpr function %qD" msgstr "llamada a la función %qD que no es constexpr" -#: cp/constexpr.c:1516 +#: cp/constexpr.c:1532 #, fuzzy, gcc-internal-format #| msgid "%qD called in a constant expression" msgid "%qD called in a constant expression before its definition is complete" msgstr "se llamó %qD en una expresión constante" -#: cp/constexpr.c:1523 +#: cp/constexpr.c:1539 #, gcc-internal-format msgid "%qD called in a constant expression" msgstr "se llamó %qD en una expresión constante" -#: cp/constexpr.c:1527 +#: cp/constexpr.c:1543 #, gcc-internal-format msgid "%qD used before its definition" msgstr "se usó %qD antes de su definición" -#: cp/constexpr.c:1567 +#: cp/constexpr.c:1583 #, gcc-internal-format msgid "call has circular dependency" msgstr "la llamada tiene una dependencia circular" -#: cp/constexpr.c:1578 +#: cp/constexpr.c:1594 #, gcc-internal-format, gfc-internal-format msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)" msgstr "la profundidad de evaluación de constexpr excede el máximo de %d (use -fconstexpr-depth= para incrementar el máximo)" -#: cp/constexpr.c:1661 +#: cp/constexpr.c:1677 #, fuzzy, gcc-internal-format #| msgid "Warn on calls to these functions" msgid "constexpr call flows off the end of the function" msgstr "Avisa en las llamadas a estas funciones" -#: cp/constexpr.c:1790 +#: cp/constexpr.c:1806 #, fuzzy, gcc-internal-format #| msgid "right shift count is negative" msgid "right operand of shift expression %q+E is negative" msgstr "la cuenta de desplazamiento a la derecha es negativa" -#: cp/constexpr.c:1797 +#: cp/constexpr.c:1813 #, gcc-internal-format msgid "right operand of shift expression %q+E is >= than the precision of the left operand" msgstr "" -#: cp/constexpr.c:1815 +#: cp/constexpr.c:1831 #, fuzzy, gcc-internal-format #| msgid "left-hand operand of comma expression has no effect" msgid "left operand of shift expression %q+E is negative" msgstr "el operador del lado izquierdo de la expresión coma no tiene efecto" -#: cp/constexpr.c:1834 +#: cp/constexpr.c:1850 #, fuzzy, gcc-internal-format #| msgid "integral expression %qE is not constant" msgid "shift expression %q+E overflows" msgstr "la expresión integral %qE no es una constante" -#: cp/constexpr.c:1978 +#: cp/constexpr.c:1994 #, gcc-internal-format msgid "arithmetic involving a null pointer in %qE" msgstr "" -#: cp/constexpr.c:2172 +#: cp/constexpr.c:2188 #, fuzzy, gcc-internal-format #| msgid "array subscript is outside array bounds" msgid "array subscript value %qE is outside the bounds of array %qD of type %qT" msgstr "el subíndice de la matriz está fuera de los límites de la matriz" -#: cp/constexpr.c:2177 +#: cp/constexpr.c:2193 #, fuzzy, gcc-internal-format #| msgid "array subscript is outside array bounds" msgid "array subscript value %qE is outside the bounds of array type %qT" msgstr "el subíndice de la matriz está fuera de los límites de la matriz" -#: cp/constexpr.c:2324 +#: cp/constexpr.c:2340 #, fuzzy, gcc-internal-format #| msgid "missing initializer for member %qD" msgid "accessing uninitialized array element" msgstr "falta el inicializador para el miembro %qD" -#: cp/constexpr.c:2355 +#: cp/constexpr.c:2371 #, fuzzy, gcc-internal-format #| msgid "dereferencing % pointer" msgid "dereferencing a null pointer in %qE" msgstr "deferenciando el puntero %" -#: cp/constexpr.c:2369 cp/constexpr.c:2459 cp/constexpr.c:4003 +#: cp/constexpr.c:2385 cp/constexpr.c:2475 cp/constexpr.c:4027 #, gcc-internal-format msgid "%qE is not a constant expression" msgstr "%qE no es una expresión constante" -#: cp/constexpr.c:2375 +#: cp/constexpr.c:2391 #, gcc-internal-format msgid "mutable %qD is not usable in a constant expression" msgstr "%qD mutable no se puede usar en una expresión constante" -#: cp/constexpr.c:2400 +#: cp/constexpr.c:2416 #, gcc-internal-format msgid "accessing %qD member instead of initialized %qD member in constant expression" msgstr "se accede al miembro %qD en lugar del miembro inicializado %qD en la expresión constante" -#: cp/constexpr.c:2419 +#: cp/constexpr.c:2435 #, fuzzy, gcc-internal-format #| msgid "missing initializer for member %qD" msgid "accessing uninitialized member %qD" msgstr "falta el inicializador para el miembro %qD" -#: cp/constexpr.c:3122 cp/constexpr.c:4412 +#: cp/constexpr.c:3146 cp/constexpr.c:4443 #, fuzzy, gcc-internal-format #| msgid "dereferencing % pointer" msgid "dereferencing a null pointer" msgstr "deferenciando el puntero %" -#: cp/constexpr.c:3141 +#: cp/constexpr.c:3165 #, gcc-internal-format msgid "accessing value of %qE through a %qT glvalue in a constant expression" msgstr "se accede al valor de %qE a través de glvalue %qT en una expresión constante" -#: cp/constexpr.c:3180 +#: cp/constexpr.c:3204 #, gcc-internal-format msgid "the value of %qD is not usable in a constant expression" msgstr "el valor de %qD no se puede usar en una expresión constante" -#: cp/constexpr.c:3187 +#: cp/constexpr.c:3211 #, gcc-internal-format msgid "%qD used in its own initializer" msgstr "se usó %qD en su propio inicializador" -#: cp/constexpr.c:3192 +#: cp/constexpr.c:3216 #, gcc-internal-format msgid "%q#D is not const" msgstr "%q#D no es const" -#: cp/constexpr.c:3195 +#: cp/constexpr.c:3219 #, gcc-internal-format msgid "%q#D is volatile" msgstr "%q+#D es volatile" -#: cp/constexpr.c:3200 cp/constexpr.c:3207 +#: cp/constexpr.c:3224 cp/constexpr.c:3231 #, gcc-internal-format msgid "%qD was not initialized with a constant expression" msgstr "%qD no se inicializó con una expresion constante" -#: cp/constexpr.c:3213 +#: cp/constexpr.c:3237 #, gcc-internal-format msgid "%qD was not declared %" msgstr "%qD no se declaró %" -#: cp/constexpr.c:3216 +#: cp/constexpr.c:3240 #, gcc-internal-format msgid "%qD does not have integral or enumeration type" msgstr "%qD no tiene tipo integral o de enumeración" -#: cp/constexpr.c:3410 +#: cp/constexpr.c:3434 #, fuzzy, gcc-internal-format #| msgid "division by zero is not a constant-expression" msgid "modification of %qE is not a constant expression" msgstr "la división entre cero no es una expresión constante" -#: cp/constexpr.c:3782 +#: cp/constexpr.c:3806 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)" msgid "constexpr loop iteration count exceeds limit of %d (use -fconstexpr-loop-limit= to increase the limit)" msgstr "la profundidad de evaluación de constexpr excede el máximo de %d (use -fconstexpr-depth= para incrementar el máximo)" -#: cp/constexpr.c:3921 +#: cp/constexpr.c:3945 #, fuzzy, gcc-internal-format #| msgid "%qE is not a constant expression" msgid "value %qE of type %qT is not a constant expression" msgstr "%qE no es una expresión constante" -#: cp/constexpr.c:4049 cp/constexpr.c:5562 +#: cp/constexpr.c:4080 cp/constexpr.c:5593 #, gcc-internal-format msgid "temporary of non-literal type %qT in a constant expression" msgstr "temporal del tipo %qT que no es literal en una expresión constante" -#: cp/constexpr.c:4398 +#: cp/constexpr.c:4429 #, fuzzy, gcc-internal-format #| msgid "expression %qE is not a constant-expression" msgid "a reinterpret_cast is not a constant expression" msgstr "la expresión %qE no es una expresión constante" -#: cp/constexpr.c:4424 +#: cp/constexpr.c:4455 #, fuzzy, gcc-internal-format #| msgid "temporary of non-literal type %qT in a constant expression" msgid "conversion of %qT null pointer to %qT is not a constant expression" msgstr "temporal del tipo %qT que no es literal en una expresión constante" -#: cp/constexpr.c:4439 +#: cp/constexpr.c:4470 #, fuzzy, gcc-internal-format #| msgid "expression %qE is not a constant-expression" msgid "%(%E)%> is not a constant expression" msgstr "la expresión %qE no es una expresión constante" -#: cp/constexpr.c:4502 cp/constexpr.c:5423 cp/constexpr.c:5738 +#: cp/constexpr.c:4533 cp/constexpr.c:5454 cp/constexpr.c:5769 #, fuzzy, gcc-internal-format #| msgid "expression %qE is not a constant-expression" msgid "expression %qE is not a constant expression" msgstr "la expresión %qE no es una expresión constante" -#: cp/constexpr.c:4579 +#: cp/constexpr.c:4610 #, fuzzy, gcc-internal-format #| msgid "initializer element is not a constant expression" msgid "statement is not a constant expression" msgstr "el elemento inicializador no es una expresión constante" -#: cp/constexpr.c:4582 +#: cp/constexpr.c:4613 #, gcc-internal-format msgid "unexpected expression %qE of kind %s" msgstr "expresión %qE inesperada de género %s" -#: cp/constexpr.c:4652 +#: cp/constexpr.c:4683 #, fuzzy, gcc-internal-format #| msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects" msgid "%qE is not a constant expression because it refers to mutable subobjects of %qT" msgstr "%qT no puede ser el tipo de una expresión constante completa porque tiene sub-objetos mutables" -#: cp/constexpr.c:4661 +#: cp/constexpr.c:4692 #, fuzzy, gcc-internal-format #| msgid "%qT cannot be the type of a complete constant expression because it has mutable sub-objects" msgid "%qE is not a constant expression because it refers to an incompletely initialized variable" msgstr "%qT no puede ser el tipo de una expresión constante completa porque tiene sub-objetos mutables" -#: cp/constexpr.c:4675 +#: cp/constexpr.c:4706 #, fuzzy, gcc-internal-format #| msgid "conversion from pointer type %qT to arithmetic type %qT in a constant-expression" msgid "conversion from pointer type %qT to arithmetic type %qT in a constant expression" msgstr "conversión del tipo puntero %qT al tipo aritmético %qT en una expresión constante" -#: cp/constexpr.c:5033 +#: cp/constexpr.c:5064 #, gcc-internal-format msgid "expression %qE has side-effects" msgstr "la expresión %qE tiene efectos colaterales" -#: cp/constexpr.c:5227 +#: cp/constexpr.c:5258 #, fuzzy, gcc-internal-format #| msgid "invalid reinterpret_cast from type `%T' to type `%T'" msgid "reinterpret_cast from integer to pointer" msgstr "reinterpret_cast no válido del tipo `%T' al tipo `%T'" -#: cp/constexpr.c:5259 +#: cp/constexpr.c:5290 #, gcc-internal-format msgid "address-of an object %qE with thread local or automatic storage is not a constant expression" msgstr "la dirección de un objeto %qE con hilo local o almacenamiento automático no es una expresión constante" -#: cp/constexpr.c:5293 +#: cp/constexpr.c:5324 #, fuzzy, gcc-internal-format #| msgid "%qE is not a constant expression" msgid "use of % in a constant expression" msgstr "%qE no es una expresión constante" -#: cp/constexpr.c:5435 +#: cp/constexpr.c:5466 #, gcc-internal-format msgid "typeid-expression is not a constant expression because %qE is of polymorphic type" msgstr "la expresión id de tipo no es una expresión constante porque %qE es de tipo polimórfico" -#: cp/constexpr.c:5496 +#: cp/constexpr.c:5527 #, fuzzy, gcc-internal-format #| msgid "temporary of non-literal type %qT in a constant expression" msgid "cast to non-integral type %qT in a constant expression" msgstr "temporal del tipo %qT que no es literal en una expresión constante" -#: cp/constexpr.c:5529 cp/decl.c:5163 +#: cp/constexpr.c:5560 cp/decl.c:5163 #, fuzzy, gcc-internal-format #| msgid "%q+F declared % but never defined" msgid "%qD declared % in % function" msgstr "%q+F se declaró % pero nunca se define" -#: cp/constexpr.c:5536 cp/decl.c:5160 +#: cp/constexpr.c:5567 cp/decl.c:5160 #, fuzzy, gcc-internal-format #| msgid "%qE undeclared here (not in a function)" msgid "%qD declared % in % function" msgstr "%qE no se declaró aquí (no en una función)" -#: cp/constexpr.c:5543 cp/decl.c:5583 +#: cp/constexpr.c:5574 cp/decl.c:5583 #, fuzzy, gcc-internal-format #| msgid "uninitialized member %qD in % constructor" msgid "uninitialized variable %qD in % function" msgstr "miembro %qD sin inicializar en el constructor %" -#: cp/constexpr.c:5611 +#: cp/constexpr.c:5642 #, fuzzy, gcc-internal-format #| msgid "division by zero is not a constant-expression" msgid "division by zero is not a constant expression" msgstr "la división entre cero no es una expresión constante" -#: cp/constexpr.c:5715 +#: cp/constexpr.c:5746 #, fuzzy, gcc-internal-format #| msgid "%qE is not a constant expression" msgid "% is not a constant expression" msgstr "%qE no es una expresión constante" -#: cp/constexpr.c:5746 +#: cp/constexpr.c:5777 #, gcc-internal-format msgid "non-constant array initialization" msgstr "inicialización de una matriz que no es constante" -#: cp/constexpr.c:5767 +#: cp/constexpr.c:5798 #, fuzzy, gcc-internal-format #| msgid "%qE is not a constant expression" msgid "% is not a constant expression" msgstr "%qE no es una expresión constante" -#: cp/constexpr.c:5779 +#: cp/constexpr.c:5810 #, gcc-internal-format, gfc-internal-format msgid "unexpected AST of kind %s" msgstr "AST inesperado de género %s" @@ -38687,7 +38760,7 @@ msgid " skips initialization of %q#D" msgstr " salta la inicialización de %q+#D" -#: cp/decl.c:3408 cp/parser.c:12104 cp/parser.c:12131 +#: cp/decl.c:3408 cp/parser.c:12113 cp/parser.c:12140 #, gcc-internal-format msgid "invalid exit from OpenMP structured block" msgstr "salida no válida de un bloque estructurado OpenMP" @@ -38702,7 +38775,7 @@ msgid "%qD is not a type" msgstr "%qD no es un tipo" -#: cp/decl.c:3766 cp/parser.c:6082 +#: cp/decl.c:3766 cp/parser.c:6087 #, gcc-internal-format msgid "%qD used without template parameters" msgstr "se usa %qD sin parámetros de plantilla" @@ -40429,7 +40502,7 @@ msgid "parameter declared %" msgstr "el parámetro se declaró %" -#: cp/decl.c:11845 cp/parser.c:3161 +#: cp/decl.c:11845 cp/parser.c:3163 #, gcc-internal-format msgid "invalid use of template-name %qE without an argument list" msgstr "uso no válido del nombre-de-plantilla %qE sin una lista de argumentos" @@ -40900,13 +40973,13 @@ msgid "%qD has the same name as the class in which it is declared" msgstr "%qD tiene el mismo nombre que la clase en la cual se declaró" -#: cp/decl.c:13533 cp/friend.c:304 cp/parser.c:2987 cp/parser.c:6141 -#: cp/pt.c:8574 +#: cp/decl.c:13533 cp/friend.c:304 cp/parser.c:2989 cp/parser.c:6146 +#: cp/pt.c:8656 #, gcc-internal-format msgid "%qT is not a template" msgstr "%qT no es una plantilla" -#: cp/decl.c:13534 cp/friend.c:305 cp/tree.c:4036 +#: cp/decl.c:13534 cp/friend.c:305 cp/tree.c:4031 #, fuzzy, gcc-internal-format #| msgid "previous declaration %q+#D here" msgid "previous declaration here" @@ -40917,8 +40990,8 @@ msgid "perhaps you want to explicitly add %<%T::%>" msgstr "" -#: cp/decl.c:13547 cp/name-lookup.c:2741 cp/name-lookup.c:3581 -#: cp/name-lookup.c:3626 cp/parser.c:6092 cp/parser.c:25696 +#: cp/decl.c:13547 cp/name-lookup.c:2741 cp/name-lookup.c:3580 +#: cp/name-lookup.c:3625 cp/parser.c:6097 cp/parser.c:25719 #, gcc-internal-format msgid "reference to %qD is ambiguous" msgstr "la referencia a %qD es ambigua" @@ -40971,7 +41044,7 @@ msgid "scoped/unscoped mismatch in enum %q#T" msgstr "no coinciden scoped/unscoped en el enum %q#T" -#: cp/decl.c:14058 cp/decl.c:14066 cp/decl.c:14078 cp/parser.c:17916 +#: cp/decl.c:14058 cp/decl.c:14066 cp/decl.c:14078 cp/parser.c:17939 #, gcc-internal-format msgid "previous definition here" msgstr "la definición previa está aquí" @@ -41038,7 +41111,7 @@ msgid "return type %q#T is incomplete" msgstr "el tipo de devolución %q#T es un tipo de dato incompleto" -#: cp/decl.c:14846 cp/typeck.c:8980 +#: cp/decl.c:14846 cp/typeck.c:8981 #, gcc-internal-format msgid "% should return a reference to %<*this%>" msgstr "% debe devolver una referencia a %<*this%>" @@ -41054,7 +41127,7 @@ msgid "no return statements in function returning %qT" msgstr "no hay una declaración de devolución en la función que no devuelve void" -#: cp/decl.c:15615 cp/typeck.c:8861 +#: cp/decl.c:15615 cp/typeck.c:8862 #, fuzzy, gcc-internal-format #| msgid "function return types not compatible due to %" msgid "only plain % return type can be deduced to %" @@ -41218,28 +41291,28 @@ msgid "width of bit-field %qD has non-integral type %qT" msgstr "la anchura del campo de bits %qD es del tipo %qT que no integral" -#: cp/decl2.c:1403 +#: cp/decl2.c:1404 #, fuzzy, gcc-internal-format #| msgid "%qD is not a static data member of a class template" msgid "%q+D static data member inside of declare target directive" msgstr "%qD no es un dato miembro static de una plantilla de clase" -#: cp/decl2.c:1467 +#: cp/decl2.c:1468 #, gcc-internal-format msgid "anonymous struct not inside named type" msgstr "struct anónimo no está dentro de un tipo nombrado" -#: cp/decl2.c:1558 +#: cp/decl2.c:1559 #, gcc-internal-format msgid "namespace-scope anonymous aggregates must be static" msgstr "los agregados anónimos de alcance de espacio de nombres deben ser static" -#: cp/decl2.c:1567 +#: cp/decl2.c:1568 #, gcc-internal-format msgid "anonymous union with no members" msgstr "union anónima sin miembros" -#: cp/decl2.c:1600 +#: cp/decl2.c:1601 #, gcc-internal-format msgid "% must return type %qT" msgstr "% debe devolver el tipo %qT" @@ -41248,71 +41321,71 @@ #. #. The first parameter shall not have an associated default #. argument. -#: cp/decl2.c:1611 +#: cp/decl2.c:1612 #, gcc-internal-format msgid "the first parameter of % cannot have a default argument" msgstr "el primer parámetro de % no puede tener un argumento por defecto" -#: cp/decl2.c:1627 +#: cp/decl2.c:1628 #, gcc-internal-format msgid "% takes type % (%qT) as first parameter" msgstr "% toma el tipo % (%qT) como primer argumento" -#: cp/decl2.c:1656 +#: cp/decl2.c:1657 #, gcc-internal-format msgid "% must return type %qT" msgstr "% debe devolver el tipo %qT" -#: cp/decl2.c:1665 +#: cp/decl2.c:1666 #, gcc-internal-format msgid "% takes type %qT as first parameter" msgstr "% toma el tipo %qT como primer argumento" -#: cp/decl2.c:2527 +#: cp/decl2.c:2528 #, fuzzy, gcc-internal-format #| msgid "%qT has a field %qD whose type uses the anonymous namespace" msgid "%qT has a field %qD whose type has no linkage" msgstr "%qT tiene un campo %qD cuyo tipo usa el espacio de nombres anónimo" -#: cp/decl2.c:2531 +#: cp/decl2.c:2532 #, fuzzy, gcc-internal-format #| msgid "%qT has a field %qD whose type uses the anonymous namespace" msgid "%qT has a field %qD whose type depends on the type %qT which has no linkage" msgstr "%qT tiene un campo %qD cuyo tipo usa el espacio de nombres anónimo" -#: cp/decl2.c:2536 +#: cp/decl2.c:2537 #, gcc-internal-format msgid "%qT has a field %qD whose type uses the anonymous namespace" msgstr "%qT tiene un campo %qD cuyo tipo usa el espacio de nombres anónimo" -#: cp/decl2.c:2544 +#: cp/decl2.c:2545 #, gcc-internal-format msgid "%qT declared with greater visibility than the type of its field %qD" msgstr "%qT se declaró con mayor visibilidad que el tipo de su campo %qD" -#: cp/decl2.c:2562 +#: cp/decl2.c:2563 #, fuzzy, gcc-internal-format #| msgid "%qT has a base %qT whose type uses the anonymous namespace" msgid "%qT has a base %qT whose type has no linkage" msgstr "%qT tiene una base %qT cuyo tipo usa el espacio de nombres anónimo" -#: cp/decl2.c:2566 +#: cp/decl2.c:2567 #, fuzzy, gcc-internal-format #| msgid "%qT has a base %qT whose type uses the anonymous namespace" msgid "%qT has a base %qT whose type depends on the type %qT which has no linkage" msgstr "%qT tiene una base %qT cuyo tipo usa el espacio de nombres anónimo" -#: cp/decl2.c:2571 +#: cp/decl2.c:2572 #, gcc-internal-format msgid "%qT has a base %qT whose type uses the anonymous namespace" msgstr "%qT tiene una base %qT cuyo tipo usa el espacio de nombres anónimo" -#: cp/decl2.c:2578 +#: cp/decl2.c:2579 #, gcc-internal-format msgid "%qT declared with greater visibility than its base %qT" msgstr "%qT se declaró con mayor visibilidad que su base %qT" -#: cp/decl2.c:4187 +#: cp/decl2.c:4188 #, fuzzy, gcc-internal-format #| msgid "%q+#D, declared using anonymous type, is used but never defined" msgid "%q#D, declared using unnamed type, is used but never defined" @@ -41322,52 +41395,52 @@ #. no linkage can only be used to declare extern "C" #. entities. Since it's not always an error in the #. ISO C++ 90 Standard, we only issue a warning. -#: cp/decl2.c:4196 +#: cp/decl2.c:4197 #, fuzzy, gcc-internal-format #| msgid "anonymous type with no linkage used to declare variable %q#D with linkage" msgid "unnamed type with no linkage used to declare variable %q#D with linkage" msgstr "se usó un tipo anónimo sin enlace para declarar la variable %q#D sin enlace" -#: cp/decl2.c:4200 +#: cp/decl2.c:4201 #, fuzzy, gcc-internal-format #| msgid "anonymous type with no linkage used to declare function %q#D with linkage" msgid "unnamed type with no linkage used to declare function %q#D with linkage" msgstr "se usó un tipo anónimo sin enlace para declarar la función %q#D con enlace" -#: cp/decl2.c:4204 +#: cp/decl2.c:4205 #, fuzzy, gcc-internal-format #| msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage" msgid "%q#D does not refer to the unqualified type, so it is not used for linkage" msgstr "%q+#D no se refiere al tipo sin calificar, así que no se usa para el enlace" -#: cp/decl2.c:4212 +#: cp/decl2.c:4213 #, fuzzy, gcc-internal-format #| msgid "%q+#D, declared using local type %qT, is used but never defined" msgid "%q#D, declared using local type %qT, is used but never defined" msgstr "%q+#D, declarada usando el tipo local %qT, se usa pero nunca se define" -#: cp/decl2.c:4216 +#: cp/decl2.c:4217 #, gcc-internal-format msgid "type %qT with no linkage used to declare variable %q#D with linkage" msgstr "se usó el tipo %qT sin enlace para declarar la variable %q#D con enlace" -#: cp/decl2.c:4219 +#: cp/decl2.c:4220 #, gcc-internal-format msgid "type %qT with no linkage used to declare function %q#D with linkage" msgstr "se usó el tipo %qT sin enlace para declarar la función %q#D con enlace" -#: cp/decl2.c:4407 cp/decl2.c:4410 +#: cp/decl2.c:4408 cp/decl2.c:4411 #, gcc-internal-format msgid "the program should also define %qD" msgstr "" -#: cp/decl2.c:4775 +#: cp/decl2.c:4776 #, fuzzy, gcc-internal-format #| msgid "inline function %q+D used but never defined" msgid "inline function %qD used but never defined" msgstr "se usa la función inline %q+D pero nunca se define" -#: cp/decl2.c:4963 +#: cp/decl2.c:4964 #, gcc-internal-format msgid "default argument missing for parameter %P of %q+#D" msgstr "falta el argumento por defecto para el parámetro %P de %q+#D" @@ -41374,12 +41447,12 @@ #. We mark a lambda conversion op as deleted if we can't #. generate it properly; see maybe_add_lambda_conv_op. -#: cp/decl2.c:5063 +#: cp/decl2.c:5064 #, gcc-internal-format msgid "converting lambda which uses %<...%> to function pointer" msgstr "se convierte lambda la cual usa %<...%> a un puntero de función" -#: cp/decl2.c:5070 +#: cp/decl2.c:5071 #, gcc-internal-format msgid "use of deleted function %qD" msgstr "se usó la función borrada %q+D" @@ -41699,19 +41772,19 @@ msgid "invalid initializer for array member %q#D" msgstr "inicializador no válido para la matriz miembro %q#D" -#: cp/init.c:797 cp/init.c:821 cp/init.c:2367 cp/method.c:1345 +#: cp/init.c:797 cp/init.c:821 cp/init.c:2367 cp/method.c:1346 #, gcc-internal-format msgid "uninitialized const member in %q#T" msgstr "miembro const sin inicializar en %q#T" #: cp/init.c:799 cp/init.c:816 cp/init.c:823 cp/init.c:2352 cp/init.c:2380 -#: cp/method.c:1348 cp/method.c:1359 +#: cp/method.c:1349 cp/method.c:1360 #, fuzzy, gcc-internal-format #| msgid "%qD should be initialized" msgid "%q#D should be initialized" msgstr "%qD se debe inicializar" -#: cp/init.c:814 cp/init.c:2339 cp/method.c:1356 +#: cp/init.c:814 cp/init.c:2339 cp/method.c:1357 #, gcc-internal-format msgid "uninitialized reference member in %q#T" msgstr "miembro referencia sin inicializar en %q#T" @@ -41813,7 +41886,7 @@ msgid "array must be initialized with a brace-enclosed initializer" msgstr "la matriz se debe inicializar con un inicializador dentro de llaves" -#: cp/init.c:1980 cp/semantics.c:3192 +#: cp/init.c:1980 cp/semantics.c:3205 #, gcc-internal-format msgid "%qT is not a class type" msgstr "%qT no es un tipo de clase" @@ -41833,7 +41906,7 @@ msgid "invalid use of non-static member function %qD" msgstr "uso no válido de la función miembro no static %qD" -#: cp/init.c:2143 cp/semantics.c:1763 +#: cp/init.c:2143 cp/semantics.c:1766 #, gcc-internal-format msgid "invalid use of non-static data member %qD" msgstr "uso no válido del dato miembro no static %qD" @@ -42042,23 +42115,23 @@ msgid "because the array element type %qT has variable size" msgstr "la literal compuesta tiene tamaño variable" -#: cp/lambda.c:541 +#: cp/lambda.c:542 #, gcc-internal-format msgid "cannot capture %qE by reference" msgstr "no se puede capturar %qE por referencia" -#: cp/lambda.c:549 +#: cp/lambda.c:552 #, fuzzy, gcc-internal-format #| msgid "invalid use of incomplete type %q#T" msgid "capture by copy of incomplete type %qT" msgstr "uso no válido del tipo incompleto %q#T" -#: cp/lambda.c:573 +#: cp/lambda.c:576 #, gcc-internal-format msgid "already captured %qD in lambda expression" msgstr "ya se capturó %qD en la expresión lambda" -#: cp/lambda.c:772 +#: cp/lambda.c:775 #, gcc-internal-format msgid "% was not captured for this lambda function" msgstr "no se capturó % para esta función lambda" @@ -42113,121 +42186,121 @@ msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)" msgstr "(si utiliza %<-fpermissive%>, G++ aceptará su código, pero permitir el uso de un nombre sin declarar es obsoleto)" -#: cp/mangle.c:2335 +#: cp/mangle.c:2340 #, gcc-internal-format msgid "mangling typeof, use decltype instead" msgstr "se decodifica typeof, utilice decltype en su lugar" -#: cp/mangle.c:2339 +#: cp/mangle.c:2344 #, gcc-internal-format msgid "mangling __underlying_type" msgstr "se decodifica __underlying_type" -#: cp/mangle.c:2622 +#: cp/mangle.c:2627 #, gcc-internal-format msgid "mangling unknown fixed point type" msgstr "se decodifica el tipo de coma fija desconocido" -#: cp/mangle.c:3233 +#: cp/mangle.c:3238 #, gcc-internal-format msgid "use of built-in trait %qE in function signature; use library traits instead" msgstr "" -#: cp/mangle.c:3238 +#: cp/mangle.c:3243 #, gcc-internal-format, gfc-internal-format msgid "mangling %C" msgstr "decodificando %C" -#: cp/mangle.c:3315 +#: cp/mangle.c:3320 #, gcc-internal-format msgid "omitted middle operand to % operand cannot be mangled" msgstr "se omitió el operando de enmedio de %: no se puede revolver el operando" -#: cp/mangle.c:3402 +#: cp/mangle.c:3407 #, gcc-internal-format msgid "string literal in function template signature" msgstr "literal de cadena en la firma de plantilla de función" -#: cp/mangle.c:3860 +#: cp/mangle.c:3865 #, gcc-internal-format msgid "mangled name for %qD will change in C++17 because the exception specification is part of a function type" msgstr "" -#: cp/mangle.c:3894 +#: cp/mangle.c:3899 #, fuzzy, gcc-internal-format #| msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling" msgid "a later -fabi-version= (or =0) avoids this error with a change in mangling" msgstr "-fabi-version=6 (o =0) evita este error con un cambio en la decodificación" -#: cp/mangle.c:3923 +#: cp/mangle.c:3928 #, fuzzy, gcc-internal-format #| msgid "the mangled name of %qD will change in a future version of GCC" msgid "the mangled name of %qD changed between -fabi-version=%d (%D) and -fabi-version=%d (%D)" msgstr "el nombre revuelto de %qD cambiará en una versión futura de GCC" -#: cp/mangle.c:3929 +#: cp/mangle.c:3934 #, fuzzy, gcc-internal-format #| msgid "the mangled name of %qD will change in a future version of GCC" msgid "the mangled name of %qD changes between -fabi-version=%d (%D) and -fabi-version=%d (%D)" msgstr "el nombre revuelto de %qD cambiará en una versión futura de GCC" -#: cp/mangle.c:4271 +#: cp/mangle.c:4276 #, fuzzy, gcc-internal-format #| msgid "the mangled name of %qD will change in a future version of GCC" msgid "the mangled name of a thunk for %qD changes between -fabi-version=%d and -fabi-version=%d" msgstr "el nombre revuelto de %qD cambiará en una versión futura de GCC" -#: cp/mangle.c:4276 +#: cp/mangle.c:4281 #, fuzzy, gcc-internal-format #| msgid "the mangled name of %qD will change in a future version of GCC" msgid "the mangled name of %qD changes between -fabi-version=%d and -fabi-version=%d" msgstr "el nombre revuelto de %qD cambiará en una versión futura de GCC" -#: cp/mangle.c:4281 +#: cp/mangle.c:4286 #, fuzzy, gcc-internal-format #| msgid "the mangled name of %qD will change in a future version of GCC" msgid "the mangled name of the initialization guard variable for %qD changes between -fabi-version=%d and -fabi-version=%d" msgstr "el nombre revuelto de %qD cambiará en una versión futura de GCC" -#: cp/method.c:845 cp/method.c:1301 +#: cp/method.c:846 cp/method.c:1302 #, gcc-internal-format msgid "non-static const member %q#D, can%'t use default assignment operator" msgstr "el miembro const %q#D que no es static, no puede usar el operador de asignación por defecto" -#: cp/method.c:851 cp/method.c:1307 +#: cp/method.c:852 cp/method.c:1308 #, gcc-internal-format msgid "non-static reference member %q#D, can%'t use default assignment operator" msgstr "el miembro de referencia %q#D que no es static, no puede usar el operador de asignación por defecto" -#: cp/method.c:969 +#: cp/method.c:970 #, gcc-internal-format msgid "synthesized method %qD first required here " msgstr "se requirió primero el método sintetizado %qD aquí " -#: cp/method.c:1256 +#: cp/method.c:1257 #, gcc-internal-format msgid "union member %q+D with non-trivial %qD" msgstr "miembro union %q+D con %qD que no es trivial" -#: cp/method.c:1266 +#: cp/method.c:1267 #, fuzzy, gcc-internal-format #| msgid "defaulted constructor calls non-constexpr %q+D" msgid "defaulted constructor calls non-constexpr %qD" msgstr "un constructor por defecto llama a %q+D que no es constexpr" -#: cp/method.c:1324 +#: cp/method.c:1325 #, fuzzy, gcc-internal-format #| msgid "initializer for %q+#D is invalid" msgid "initializer for %q#D is invalid" msgstr "el inicializador para %q+#D es no válido" -#: cp/method.c:1376 +#: cp/method.c:1377 #, fuzzy, gcc-internal-format #| msgid "defaulted default constructor does not initialize %q+#D" msgid "defaulted default constructor does not initialize %q#D" msgstr "el constructor por defecto en efecto no inicializa %q+#D" -#: cp/method.c:1387 +#: cp/method.c:1388 #, fuzzy, gcc-internal-format #| msgid "non-static data member %qD has Java class type" msgid "copying non-static data member %q#D of rvalue reference type" @@ -42234,79 +42307,79 @@ msgstr "el dato miembro que no es estático %qD tiene un tipo de clase Java" #. A trivial constructor doesn't have any NSDMI. -#: cp/method.c:1616 +#: cp/method.c:1617 #, gcc-internal-format msgid "defaulted default constructor does not initialize any non-static data member" msgstr "el constructor por defecto en efecto no inicializa ningún dato miembro que no es static" -#: cp/method.c:1657 +#: cp/method.c:1658 #, gcc-internal-format msgid "defaulted move assignment for %qT calls a non-trivial move assignment operator for virtual base %qT" msgstr "" -#: cp/method.c:1774 +#: cp/method.c:1775 #, gcc-internal-format msgid "a lambda closure type has a deleted default constructor" msgstr "un tipo de conclusión lambda tiene un constructor por defecto borrado" -#: cp/method.c:1777 +#: cp/method.c:1778 #, gcc-internal-format msgid "a lambda closure type has a deleted copy assignment operator" msgstr "un tipo de conclusión lambda tiene un operador de asignación por copia borrado" -#: cp/method.c:1788 +#: cp/method.c:1789 #, fuzzy, gcc-internal-format #| msgid "%q+#D is implicitly declared as deleted because %qT declares a move constructor or move assignment operator" msgid "%q#D is implicitly declared as deleted because %qT declares a move constructor or move assignment operator" msgstr "%q+#D se declara implícitamente como deleted porque %qT declara un constructor move o un operador de asignación move" -#: cp/method.c:1799 +#: cp/method.c:1800 #, gcc-internal-format msgid "%q#D inherits from multiple base subobjects" msgstr "" -#: cp/method.c:1819 +#: cp/method.c:1820 #, fuzzy, gcc-internal-format #| msgid "%q+#D is implicitly deleted because the default definition would be ill-formed:" msgid "%q#D is implicitly deleted because the default definition would be ill-formed:" msgstr "%q+#D es implícitamente deleted por que la definición por defecto estaría mal formada:" -#: cp/method.c:1828 +#: cp/method.c:1829 msgid "%q#F is implicitly deleted because its exception-specification does not match the implicit exception-specification %qX" msgstr "" -#: cp/method.c:2148 +#: cp/method.c:2149 #, gcc-internal-format msgid "defaulted declaration %q+D" msgstr "declaración definida por defecto %q+D" -#: cp/method.c:2150 +#: cp/method.c:2151 #, gcc-internal-format msgid "does not match expected signature %qD" msgstr "no coincide la firma esperada %qD" -#: cp/method.c:2182 +#: cp/method.c:2183 #, fuzzy #| msgid "function %q+D defaulted on its first declaration with an exception-specification that differs from the implicit declaration %q#D" msgid "function %q+D defaulted on its redeclaration with an exception-specification that differs from the implicit exception-specification %qX" msgstr "la función %q+D definida por defecto en su primera declaración tiene una excepción de especificación que difiere de la declaración implícita %q#D" -#: cp/method.c:2204 +#: cp/method.c:2205 #, gcc-internal-format msgid "explicitly defaulted function %q+D cannot be declared as constexpr because the implicit declaration is not constexpr:" msgstr "la función %q+D explícitamente por defecto no se puede declarar como constexpr porque la declaración implícita no es constexpr:" -#: cp/method.c:2250 +#: cp/method.c:2251 #, gcc-internal-format msgid "a template cannot be defaulted" msgstr "una plantilla no se puede definir por defecto" -#: cp/method.c:2278 +#: cp/method.c:2279 #, gcc-internal-format msgid "%qD cannot be defaulted" msgstr "%qD no se puede definir por defecto" -#: cp/method.c:2287 +#: cp/method.c:2288 #, gcc-internal-format msgid "defaulted function %q+D with default argument" msgstr "función definida por defecto %q+D con argumento por defecto" @@ -42506,97 +42579,97 @@ msgid "%<%T::%D%> names constructor in %qT" msgstr "%<%T::%D%> nombra al constructor en %qT" -#: cp/name-lookup.c:3459 +#: cp/name-lookup.c:3458 #, gcc-internal-format msgid "cannot inherit constructors from indirect base %qT" msgstr "" -#: cp/name-lookup.c:3467 +#: cp/name-lookup.c:3466 #, gcc-internal-format msgid "no members matching %<%T::%D%> in %q#T" msgstr "no hay miembros que coincidan con %<%T::%D%> en %q#T" -#: cp/name-lookup.c:3559 +#: cp/name-lookup.c:3558 #, gcc-internal-format msgid "declaration of %qD not in a namespace surrounding %qD" msgstr "la declaración de %qD no está en un espacio de nombres alrededor de %qD" -#: cp/name-lookup.c:3567 +#: cp/name-lookup.c:3566 #, gcc-internal-format msgid "explicit qualification in declaration of %qD" msgstr "calificación explícita en la declaración de %qD" -#: cp/name-lookup.c:3640 +#: cp/name-lookup.c:3639 #, fuzzy, gcc-internal-format #| msgid "%qE has not been declared" msgid "%qD has not been declared within %D" msgstr "%qE no se ha declarado" -#: cp/name-lookup.c:3641 +#: cp/name-lookup.c:3640 #, fuzzy, gcc-internal-format #| msgid "%q+D declared as a friend" msgid "only here as a friend" msgstr "%q+D se declaró como friend" -#: cp/name-lookup.c:3657 +#: cp/name-lookup.c:3656 #, gcc-internal-format msgid "%qD should have been declared inside %qD" msgstr "%qD se debería declarar dentro de %qD" -#: cp/name-lookup.c:3702 +#: cp/name-lookup.c:3701 #, gcc-internal-format msgid "%qD attribute requires a single NTBS argument" msgstr "el atributo %qD requiere un solo argumento NTBS" -#: cp/name-lookup.c:3709 +#: cp/name-lookup.c:3708 #, gcc-internal-format msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols" msgstr "el atributo %qD no tiene signifcado porque los miembros del espacio de nombres anónimo tiene símbolos locales" -#: cp/name-lookup.c:3719 +#: cp/name-lookup.c:3718 #, fuzzy, gcc-internal-format #| msgid "ignoring attributes on template argument %qT" msgid "ignoring %qD attribute on non-inline namespace" msgstr "se descartan los atributos en el argumento de plantilla %qT" -#: cp/name-lookup.c:3725 +#: cp/name-lookup.c:3724 #, fuzzy, gcc-internal-format #| msgid "ignoring attributes on template argument %qT" msgid "ignoring %qD attribute on anonymous namespace" msgstr "se descartan los atributos en el argumento de plantilla %qT" -#: cp/name-lookup.c:3744 cp/name-lookup.c:4165 +#: cp/name-lookup.c:3743 cp/name-lookup.c:4164 #, gcc-internal-format msgid "%qD attribute directive ignored" msgstr "se descarta la directiva de atributo %qD" -#: cp/name-lookup.c:3809 +#: cp/name-lookup.c:3808 #, gcc-internal-format msgid "namespace alias %qD not allowed here, assuming %qD" msgstr "no se permite aquí el alias del espacio de nombres %qD, se asume que es %qD" -#: cp/name-lookup.c:4150 +#: cp/name-lookup.c:4149 #, fuzzy, gcc-internal-format #| msgid "This switch is deprecated; use -fsanitize-recover= instead." msgid "strong using is deprecated; use inline namespaces instead" msgstr "Esta opción es obsoleta; utilice en su lugar -fsanitize-recover=." -#: cp/name-lookup.c:4153 +#: cp/name-lookup.c:4152 #, gcc-internal-format msgid "strong using only meaningful at namespace scope" msgstr "el uso de strong solamente tiene significado en el ámbito de espacio de nombres" -#: cp/name-lookup.c:4157 +#: cp/name-lookup.c:4156 #, gcc-internal-format msgid "current namespace %qD does not enclose strongly used namespace %qD" msgstr "el espacio de nombres actual %qD no contiene al espacio de nombres %qD usado con frecuencia" -#: cp/name-lookup.c:4506 +#: cp/name-lookup.c:4505 #, gcc-internal-format msgid "maximum limit of %d namespaces searched for %qE" msgstr "límite máximo de %d espacios de nombres buscados para %qE" -#: cp/name-lookup.c:4522 cp/name-lookup.c:4563 +#: cp/name-lookup.c:4521 cp/name-lookup.c:4562 #, fuzzy, gcc-internal-format #| msgid "suggested alternative:" #| msgid_plural "suggested alternatives:" @@ -42603,7 +42676,7 @@ msgid "suggested alternative: %qs" msgstr "alternativa sugerida:" -#: cp/name-lookup.c:4530 +#: cp/name-lookup.c:4529 #, gcc-internal-format msgid "suggested alternative:" msgid_plural "suggested alternatives:" @@ -42610,28 +42683,28 @@ msgstr[0] "alternativa sugerida:" msgstr[1] "alternativas sugeridas:" -#: cp/name-lookup.c:4534 +#: cp/name-lookup.c:4533 #, gcc-internal-format msgid " %qE" msgstr " %qE" -#: cp/name-lookup.c:5962 +#: cp/name-lookup.c:5961 #, gcc-internal-format msgid "argument dependent lookup finds %q+D" msgstr "la búsqueda dependiente del argumento encuentra %q+D" -#: cp/name-lookup.c:6215 +#: cp/name-lookup.c:6214 #, fuzzy, gcc-internal-format #| msgid "deducing from brace-enclosed initializer list requires #include " msgid "declaration of std::initializer_list does not match #include , isn't a template" msgstr "la deducción de una lista inicializadora encerrada entre llaves requiere #include " -#: cp/name-lookup.c:6526 +#: cp/name-lookup.c:6525 #, gcc-internal-format msgid "XXX entering pop_everything ()\n" msgstr "XXX entrando a pop_everything ()\n" -#: cp/name-lookup.c:6535 +#: cp/name-lookup.c:6534 #, gcc-internal-format msgid "XXX leaving pop_everything ()\n" msgstr "XXX saliendo de pop_everything ()\n" @@ -42651,7 +42724,7 @@ msgid "LEXER_DEBUGGING_ENABLED_P is not set to true" msgstr "" -#: cp/parser.c:1359 cp/parser.c:36599 +#: cp/parser.c:1359 cp/parser.c:36622 #, gcc-internal-format msgid "%<#pragma omp declare simd%> not immediately followed by function declaration or definition" msgstr "" @@ -42676,7 +42749,7 @@ msgid "request for member %qE in non-class type %qT" msgstr "solicitud por el miembro %qE en el tipo %qT que no es clase" -#: cp/parser.c:2842 cp/parser.c:17854 +#: cp/parser.c:2842 cp/parser.c:17877 #, gcc-internal-format msgid "%<%T::%E%> has not been declared" msgstr "%<%T::%E%> no se ha declarado" @@ -42736,698 +42809,698 @@ msgid "(perhaps a semicolon is missing after the definition of %qT)" msgstr "(tal vez falta un punto y coma después de la definición de %qT)" -#: cp/parser.c:2991 +#: cp/parser.c:2993 #, fuzzy, gcc-internal-format #| msgid "%qE is not a template" msgid "%qE is not a class template" msgstr "%qE no es una plantilla" -#: cp/parser.c:2993 +#: cp/parser.c:2995 #, gcc-internal-format msgid "%qE is not a template" msgstr "%qE no es una plantilla" -#: cp/parser.c:2996 +#: cp/parser.c:2998 #, gcc-internal-format msgid "invalid template-id" msgstr "id-de-plantilla no válido" -#: cp/parser.c:3030 +#: cp/parser.c:3032 #, fuzzy, gcc-internal-format #| msgid "floating-point literal cannot appear in a constant-expression" msgid "ISO C++ forbids using a floating-point literal in a constant-expression" msgstr "una literal de coma flotante no puede aparecer en una expresión constante" -#: cp/parser.c:3034 cp/pt.c:16746 +#: cp/parser.c:3036 cp/pt.c:16828 #, gcc-internal-format msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression" msgstr "una conversión a un tipo diferente de un tipo integral o de enumeración no puede aparecer en una expresión constante" -#: cp/parser.c:3039 +#: cp/parser.c:3041 #, gcc-internal-format msgid "% operator cannot appear in a constant-expression" msgstr "el operador % no puede aparecer en una expresión constante" -#: cp/parser.c:3043 +#: cp/parser.c:3045 #, gcc-internal-format msgid "non-constant compound literals cannot appear in a constant-expression" msgstr "las literales compuestas que no son constantes no pueden aparecer en una expresión constante" -#: cp/parser.c:3047 +#: cp/parser.c:3049 #, gcc-internal-format msgid "a function call cannot appear in a constant-expression" msgstr "una llamada a función no puede aparecer en una expresión constante" -#: cp/parser.c:3051 +#: cp/parser.c:3053 #, gcc-internal-format msgid "an increment cannot appear in a constant-expression" msgstr "un incremento no puede aparecer en una expresión constante" -#: cp/parser.c:3055 +#: cp/parser.c:3057 #, gcc-internal-format msgid "an decrement cannot appear in a constant-expression" msgstr "un decremento no puede aparecer en una expresión constante" -#: cp/parser.c:3059 +#: cp/parser.c:3061 #, gcc-internal-format msgid "an array reference cannot appear in a constant-expression" msgstr "una referencia a matriz no puede aparecer en una expresión constante" -#: cp/parser.c:3063 +#: cp/parser.c:3065 #, gcc-internal-format msgid "the address of a label cannot appear in a constant-expression" msgstr "la dirección de una etiqueta no puede aparecer en una expresión constante" -#: cp/parser.c:3067 +#: cp/parser.c:3069 #, gcc-internal-format msgid "calls to overloaded operators cannot appear in a constant-expression" msgstr "las llamadas a operadores sobrecargados no pueden aparecer en una expresión constante" -#: cp/parser.c:3071 +#: cp/parser.c:3073 #, gcc-internal-format msgid "an assignment cannot appear in a constant-expression" msgstr "una asignación no puede aparecer en una expresión constante" -#: cp/parser.c:3074 +#: cp/parser.c:3076 #, gcc-internal-format msgid "a comma operator cannot appear in a constant-expression" msgstr "un operador coma no puede aparecer en una expresión constante" -#: cp/parser.c:3078 +#: cp/parser.c:3080 #, gcc-internal-format msgid "a call to a constructor cannot appear in a constant-expression" msgstr "una llamada a un constructor no puede aparecer en una expresión constante" -#: cp/parser.c:3082 +#: cp/parser.c:3084 #, gcc-internal-format msgid "a transaction expression cannot appear in a constant-expression" msgstr "una expresión de transacción no puede aparecer en una expresión constante" -#: cp/parser.c:3128 +#: cp/parser.c:3130 #, gcc-internal-format msgid "%qs cannot appear in a constant-expression" msgstr "%qs no puede aparecer en una expresión constante" -#: cp/parser.c:3164 +#: cp/parser.c:3166 #, fuzzy, gcc-internal-format #| msgid "variadic templates only available with -std=c++11 or -std=gnu++11" msgid "class template argument deduction is only available with -std=c++1z or -std=gnu++1z" msgstr "las plantillas variadic sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:3169 +#: cp/parser.c:3171 #, gcc-internal-format msgid "invalid use of destructor %qD as a type" msgstr "uso no válido del destructor %qD como un tipo" #. Something like 'unsigned A a;' -#: cp/parser.c:3172 +#: cp/parser.c:3174 #, gcc-internal-format msgid "invalid combination of multiple type-specifiers" msgstr "combinación no válida de especificadores de tipo múltiples" -#: cp/parser.c:3184 +#: cp/parser.c:3186 #, fuzzy, gcc-internal-format #| msgid "%qE does not name a type" msgid "%qE does not name a type; did you mean %qs?" msgstr "%qE no nombra a un tipo" -#: cp/parser.c:3188 +#: cp/parser.c:3190 #, gcc-internal-format msgid "%qE does not name a type" msgstr "%qE no nombra a un tipo" -#: cp/parser.c:3197 +#: cp/parser.c:3199 #, gcc-internal-format msgid "C++11 % only available with -std=c++11 or -std=gnu++11" msgstr "% de C++11 sólo está disponible con -std=c++11 o -std=gnu++11" -#: cp/parser.c:3200 +#: cp/parser.c:3202 #, fuzzy, gcc-internal-format #| msgid "C++11 % only available with -std=c++11 or -std=gnu++11" msgid "C++11 % only available with -std=c++11 or -std=gnu++11" msgstr "% de C++11 sólo está disponible con -std=c++11 o -std=gnu++11" -#: cp/parser.c:3205 +#: cp/parser.c:3207 #, fuzzy, gcc-internal-format #| msgid "C++11 % only available with -std=c++11 or -std=gnu++11" msgid "C++11 % only available with -std=c++11 or -std=gnu++11" msgstr "% de C++11 sólo está disponible con -std=c++11 o -std=gnu++11" -#: cp/parser.c:3208 +#: cp/parser.c:3210 #, fuzzy, gcc-internal-format #| msgid "C++11 % only available with -std=c++11 or -std=gnu++11" msgid "% only available with -fconcepts" msgstr "% de C++11 sólo está disponible con -std=c++11 o -std=gnu++11" -#: cp/parser.c:3234 +#: cp/parser.c:3236 #, gcc-internal-format msgid "(perhaps % was intended)" msgstr "(tal vez intentó %)" -#: cp/parser.c:3252 +#: cp/parser.c:3254 #, fuzzy, gcc-internal-format #| msgid "%qE in namespace %qE does not name a type" msgid "%qE in namespace %qE does not name a template type" msgstr "%qE en el espacio de nombres %qE no nombra un tipo" -#: cp/parser.c:3256 +#: cp/parser.c:3258 #, gcc-internal-format msgid "%qE in namespace %qE does not name a type" msgstr "%qE en el espacio de nombres %qE no nombra un tipo" #. A::A() -#: cp/parser.c:3265 +#: cp/parser.c:3267 #, gcc-internal-format msgid "%<%T::%E%> names the constructor, not the type" msgstr "%<%T::%E%> nombra el constructor, no el tipo" -#: cp/parser.c:3268 +#: cp/parser.c:3270 #, gcc-internal-format msgid "and %qT has no template constructors" msgstr "y %qT no tiene constructores de plantilla" -#: cp/parser.c:3273 +#: cp/parser.c:3275 #, gcc-internal-format msgid "need % before %<%T::%E%> because %qT is a dependent scope" msgstr "se necesita % antes de %<%T::%E%> porque %qT es un ámbito dependiente" -#: cp/parser.c:3283 +#: cp/parser.c:3285 #, fuzzy, gcc-internal-format #| msgid "%qE in %q#T does not name a type" msgid "%qE in %q#T does not name a template type" msgstr "%qE en %q#T no nombra un tipo" -#: cp/parser.c:3287 +#: cp/parser.c:3289 #, gcc-internal-format msgid "%qE in %q#T does not name a type" msgstr "%qE en %q#T no nombra un tipo" -#: cp/parser.c:3890 +#: cp/parser.c:3892 #, gcc-internal-format msgid "expected string-literal" msgstr "se esperaba una cadena literal" -#: cp/parser.c:3955 +#: cp/parser.c:3957 #, gcc-internal-format msgid "inconsistent user-defined literal suffixes %qD and %qD in string literal" msgstr "los sufijos de literal %qD y %qD definidos por el usuario son inconsistentes en la cadena literal" -#: cp/parser.c:4009 +#: cp/parser.c:4011 #, gcc-internal-format msgid "a wide string is invalid in this context" msgstr "una cadena ancha es no válida en este contexto" -#: cp/parser.c:4124 +#: cp/parser.c:4126 #, gcc-internal-format msgid "unable to find character literal operator %qD with %qT argument" msgstr "no se puede encontrar el operador de carácter literal %qD con argumento %qT" -#: cp/parser.c:4225 +#: cp/parser.c:4227 #, fuzzy, gcc-internal-format #| msgid "floating constant exceeds range of %qT" msgid "integer literal exceeds range of %qT type" msgstr "la constante de coma flotante excede el rango de %qT" -#: cp/parser.c:4232 +#: cp/parser.c:4234 #, fuzzy, gcc-internal-format #| msgid "floating constant exceeds range of %qT" msgid "floating literal exceeds range of %qT type" msgstr "la constante de coma flotante excede el rango de %qT" -#: cp/parser.c:4236 +#: cp/parser.c:4238 #, fuzzy, gcc-internal-format #| msgid "floating constant truncated to zero" msgid "floating literal truncated to zero" msgstr "se truncó la constante de coma flotante a cero" -#: cp/parser.c:4276 +#: cp/parser.c:4278 #, gcc-internal-format msgid "unable to find numeric literal operator %qD" msgstr "no se puede encontrar un operador literal numérico %qD" -#: cp/parser.c:4278 +#: cp/parser.c:4280 #, gcc-internal-format msgid "use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes" msgstr "" -#: cp/parser.c:4330 +#: cp/parser.c:4332 #, gcc-internal-format msgid "unable to find string literal operator %qD with %qT, %qT arguments" msgstr "no se puede encontrar un operador literal de cadena %qD con argumentos %qT, %qT" -#: cp/parser.c:4390 cp/parser.c:12668 +#: cp/parser.c:4392 cp/parser.c:12677 #, gcc-internal-format msgid "expected declaration" msgstr "se esperaba una declaración" -#: cp/parser.c:4652 cp/parser.c:4667 +#: cp/parser.c:4654 cp/parser.c:4669 #, fuzzy, gcc-internal-format #| msgid "expected operator" msgid "expected binary operator" msgstr "operador inesperado" -#: cp/parser.c:4673 +#: cp/parser.c:4675 #, fuzzy, gcc-internal-format #| msgid "expected %<...%>" msgid "expected ..." msgstr "se esperaba %<...%>." -#: cp/parser.c:4685 +#: cp/parser.c:4687 #, fuzzy, gcc-internal-format #| msgid "%s expression list treated as compound expression" msgid "binary expression in operand of fold-expression" msgstr "se trata la lista de expresiones como una expresión compuesta %s" -#: cp/parser.c:4688 +#: cp/parser.c:4690 #, fuzzy, gcc-internal-format #| msgid "conditional expression not allowed inside parentheses" msgid "conditional expression in operand of fold-expression" msgstr "no se permiten expresiones condicionales dentro de paréntesis" -#: cp/parser.c:4696 +#: cp/parser.c:4698 #, fuzzy, gcc-internal-format #| msgid "type mismatch in vector shift expression" msgid "mismatched operator in fold-expression" msgstr "los tipos de datos no coinciden en la expresión shift de vector" -#: cp/parser.c:4800 +#: cp/parser.c:4802 #, gcc-internal-format msgid "fixed-point types not supported in C++" msgstr "no se admiten tipos de coma fija en C++" -#: cp/parser.c:4881 +#: cp/parser.c:4883 #, gcc-internal-format msgid "ISO C++ forbids braced-groups within expressions" msgstr "ISO C++ prohíbe grupos de llaves dentro de expresiones" -#: cp/parser.c:4893 +#: cp/parser.c:4895 #, gcc-internal-format msgid "statement-expressions are not allowed outside functions nor in template-argument lists" msgstr "las expresiones-de-declaraciones no se permiten fuera de funciones ni en listas de argumentos-plantilla" -#: cp/parser.c:4932 +#: cp/parser.c:4934 #, fuzzy, gcc-internal-format #| msgid "lambda expressions only available with -std=c++11 or -std=gnu++11" msgid "fold-expressions only available with -std=c++1z or -std=gnu++1z" msgstr "las expresiones lambda sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:4990 cp/parser.c:5164 cp/parser.c:5342 cp/semantics.c:3530 +#: cp/parser.c:4992 cp/parser.c:5166 cp/parser.c:5344 cp/semantics.c:3543 #, gcc-internal-format msgid "expected primary-expression" msgstr "se esperaba una expresión primaria" -#: cp/parser.c:5020 +#: cp/parser.c:5022 #, gcc-internal-format msgid "% may not be used in this context" msgstr "no se puede usar % en este contexto" -#: cp/parser.c:5158 +#: cp/parser.c:5160 #, gcc-internal-format msgid "a template declaration cannot appear at block scope" msgstr "una declaración de plantilla no puede aparecer en el ámbito de bloque" -#: cp/parser.c:5317 +#: cp/parser.c:5319 #, gcc-internal-format msgid "local variable %qD may not appear in this context" msgstr "la variable local %qD no puede aparecer en este contexto" -#: cp/parser.c:5494 +#: cp/parser.c:5501 #, gcc-internal-format msgid "expected id-expression" msgstr "se esperaba una expresión id" -#: cp/parser.c:5626 +#: cp/parser.c:5633 #, gcc-internal-format msgid "scope %qT before %<~%> is not a class-name" msgstr "el ámbito %qT antes de %<~%> no es un nombre-de-clase" -#: cp/parser.c:5655 cp/parser.c:7675 +#: cp/parser.c:5662 cp/parser.c:7680 #, fuzzy, gcc-internal-format #| msgid "C++0x auto only available with -std=c++11 or -std=gnu++11" msgid "%<~auto%> only available with -std=c++14 or -std=gnu++14" msgstr "C++0x automático sólo está disponible con -std=c++11 o -std=gnu++11" -#: cp/parser.c:5766 +#: cp/parser.c:5773 #, gcc-internal-format msgid "declaration of %<~%T%> as member of %qT" msgstr "declaración de %<~%T%> como miembro de %qT" -#: cp/parser.c:5781 +#: cp/parser.c:5788 #, gcc-internal-format msgid "typedef-name %qD used as destructor declarator" msgstr "se usa el nombre-de-definición-de-tipo %qD como un declarador de destructor" -#: cp/parser.c:5817 +#: cp/parser.c:5824 #, gcc-internal-format msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization" msgstr "los sufijos de operador literal que no están precedidos por %<_%> están reservados para estandarización futura" -#: cp/parser.c:5828 cp/parser.c:19884 +#: cp/parser.c:5835 cp/parser.c:19907 #, gcc-internal-format msgid "expected unqualified-id" msgstr "se esperaba un id sin calificar" -#: cp/parser.c:5935 +#: cp/parser.c:5942 #, gcc-internal-format msgid "found %<:%> in nested-name-specifier, expected %<::%>" msgstr "se encontró %<:%> en un especificador de nombre anidado, se esperaba %<::%>" -#: cp/parser.c:6004 +#: cp/parser.c:6009 #, gcc-internal-format msgid "decltype evaluates to %qT, which is not a class or enumeration type" msgstr "el tipo de declaración evalúa a %qT, el cual no es una clase o un tipo enumerado" -#: cp/parser.c:6030 +#: cp/parser.c:6035 #, fuzzy, gcc-internal-format #| msgid "incomplete type %qT used in nested name specifier" msgid "function template-id %qD in nested-name-specifier" msgstr "se utilizó el tipo incompleto %qT en un especificador de nombre anidado" -#: cp/parser.c:6038 +#: cp/parser.c:6043 #, fuzzy, gcc-internal-format #| msgid "expected nested-name-specifier" msgid "variable template-id %qD in nested-name-specifier" msgstr "se esperaban especificadores de nombre anidados" -#: cp/parser.c:6142 cp/typeck.c:2625 cp/typeck.c:2628 cp/typeck.c:2648 +#: cp/parser.c:6147 cp/typeck.c:2625 cp/typeck.c:2628 cp/typeck.c:2648 #, gcc-internal-format msgid "%qD is not a template" msgstr "%qD no es una plantilla" -#: cp/parser.c:6220 +#: cp/parser.c:6225 #, gcc-internal-format msgid "expected nested-name-specifier" msgstr "se esperaban especificadores de nombre anidados" -#: cp/parser.c:6421 cp/parser.c:8656 +#: cp/parser.c:6426 cp/parser.c:8661 #, gcc-internal-format msgid "types may not be defined in casts" msgstr "los tipos no se pueden definir en conversiones" -#: cp/parser.c:6505 +#: cp/parser.c:6510 #, gcc-internal-format msgid "types may not be defined in a % expression" msgstr "no se pueden definir tipos en una expresión %" -#: cp/parser.c:6563 +#: cp/parser.c:6568 #, gcc-internal-format msgid "%<_Cilk_spawn%> must be followed by an expression" msgstr "" -#: cp/parser.c:6647 +#: cp/parser.c:6652 #, fuzzy, gcc-internal-format #| msgid "wrong number of arguments to %<__builtin_shuffle%>" msgid "wrong number of arguments to %<__builtin_addressof%>" msgstr "número erróneo de argumentos para %<__builtin_shuffle%>" -#: cp/parser.c:6659 cp/pt.c:17319 +#: cp/parser.c:6664 cp/pt.c:17401 #, fuzzy, gcc-internal-format #| msgid "wrong number of arguments to %<__builtin_complex%>" msgid "wrong number of arguments to %<__builtin_launder%>" msgstr "número erróneo de argumentos para %<__builtin_complex%>" -#: cp/parser.c:6751 +#: cp/parser.c:6756 #, gcc-internal-format msgid "ISO C++ forbids compound-literals" msgstr "ISO C++ prohíbe las literales compuestas" -#: cp/parser.c:6810 +#: cp/parser.c:6815 #, gcc-internal-format msgid "two consecutive %<[%> shall only introduce an attribute" msgstr "" -#: cp/parser.c:7210 +#: cp/parser.c:7215 #, fuzzy, gcc-internal-format #| msgid "-client_name not allowed with -dynamiclib" msgid "braced list index is not allowed with array notation" msgstr "no se permite -client_name con -dynamiclib" -#: cp/parser.c:7420 cp/typeck.c:2513 +#: cp/parser.c:7425 cp/typeck.c:2513 #, gcc-internal-format msgid "invalid use of %qD" msgstr "uso no válido de %qD" -#: cp/parser.c:7429 +#: cp/parser.c:7434 #, gcc-internal-format msgid "%<%D::%D%> is not a class member" msgstr "%<%D::%D%> no es un miembro clase" -#: cp/parser.c:7727 +#: cp/parser.c:7732 #, gcc-internal-format msgid "non-scalar type" msgstr "tipo que no es escalar" -#: cp/parser.c:7826 +#: cp/parser.c:7831 #, gcc-internal-format msgid "ISO C++ does not allow % with a non-type" msgstr "ISO C++ no permite % con algo que no es tipo" -#: cp/parser.c:7911 +#: cp/parser.c:7916 #, gcc-internal-format msgid "types may not be defined in % expressions" msgstr "no se pueden definir tipos en expresiones %" -#: cp/parser.c:8189 +#: cp/parser.c:8194 #, gcc-internal-format msgid "types may not be defined in a new-expression" msgstr "no se pueden definir tipos en una expresión new" -#: cp/parser.c:8205 +#: cp/parser.c:8210 #, gcc-internal-format msgid "array bound forbidden after parenthesized type-id" msgstr "se prohíbe el límite de matriz después del id-de-tipo entre paréntesis" -#: cp/parser.c:8207 +#: cp/parser.c:8212 #, gcc-internal-format msgid "try removing the parentheses around the type-id" msgstr "intente borrar los paréntesis alrededor del id-de-tipo" -#: cp/parser.c:8239 +#: cp/parser.c:8244 #, gcc-internal-format msgid "initialization of new-expression for type % requires exactly one element" msgstr "" -#: cp/parser.c:8287 +#: cp/parser.c:8292 #, fuzzy, gcc-internal-format #| msgid "Expected expression type" msgid "expected expression-list or type-id" msgstr "Se esperaba un tipo de expresión" -#: cp/parser.c:8316 +#: cp/parser.c:8321 #, gcc-internal-format msgid "types may not be defined in a new-type-id" msgstr "no se pueden definir tipos en un id-tipo-nuevo" -#: cp/parser.c:8444 +#: cp/parser.c:8449 #, gcc-internal-format msgid "expression in new-declarator must have integral or enumeration type" msgstr "la expresión en el declarador-new debe tener un tipo integral o de enumeración" -#: cp/parser.c:8752 +#: cp/parser.c:8757 #, gcc-internal-format msgid "use of old-style cast" msgstr "uso de conversión de estilo antiguo" -#: cp/parser.c:8899 +#: cp/parser.c:8904 #, gcc-internal-format msgid "%<>>%> operator is treated as two right angle brackets in C++11" msgstr "el operador %<>>%> se tratará como dos en llaves en ángulo derechas en C++11" -#: cp/parser.c:8902 +#: cp/parser.c:8907 #, gcc-internal-format msgid "suggest parentheses around %<>>%> expression" msgstr "se sugieren paréntesis alrededor de la expresión %<>>%>" -#: cp/parser.c:9098 +#: cp/parser.c:9103 #, gcc-internal-format msgid "ISO C++ does not allow ?: with omitted middle operand" msgstr "ISO C++ no permite ?: con el operando medio omitido" -#: cp/parser.c:9813 +#: cp/parser.c:9822 #, gcc-internal-format msgid "lambda-expression in unevaluated context" msgstr "expresión lambda en un contexto sin evaluar" -#: cp/parser.c:9822 +#: cp/parser.c:9831 #, fuzzy, gcc-internal-format #| msgid "lambda-expression in unevaluated context" msgid "lambda-expression in template-argument" msgstr "expresión lambda en un contexto sin evaluar" -#: cp/parser.c:9975 +#: cp/parser.c:9984 #, gcc-internal-format msgid "expected end of capture-list" msgstr "se esperaba el fin de la lista-de-captura" -#: cp/parser.c:9989 +#: cp/parser.c:9998 #, gcc-internal-format msgid "explicit by-copy capture of % redundant with by-copy capture default" msgstr "la captura por copia explícita de % es redundante con la captura por copia por defecto" -#: cp/parser.c:10006 +#: cp/parser.c:10015 #, fuzzy, gcc-internal-format #| msgid "C++0x auto only available with -std=c++11 or -std=gnu++11" msgid "%<*this%> capture only available with -std=c++1z or -std=gnu++1z" msgstr "C++0x automático sólo está disponible con -std=c++11 o -std=gnu++11" -#: cp/parser.c:10051 +#: cp/parser.c:10060 #, fuzzy, gcc-internal-format #| msgid "lambda expressions only available with -std=c++11 or -std=gnu++11" msgid "lambda capture initializers only available with -std=c++14 or -std=gnu++14" msgstr "las expresiones lambda sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:10058 +#: cp/parser.c:10067 #, fuzzy, gcc-internal-format #| msgid "non-empty initializer for array of empty elements" msgid "empty initializer for lambda init-capture" msgstr "inicializador no-vacío para una matriz de elementos vacíos" -#: cp/parser.c:10081 +#: cp/parser.c:10090 #, gcc-internal-format msgid "capture of non-variable %qD " msgstr "captura de %qD que no es variable " -#: cp/parser.c:10084 cp/parser.c:10094 cp/semantics.c:3371 cp/semantics.c:3383 +#: cp/parser.c:10093 cp/parser.c:10103 cp/semantics.c:3384 cp/semantics.c:3396 #, fuzzy, gcc-internal-format #| msgid "%q+#D declared here" msgid "%q#D declared here" msgstr "%q+#D se declaró aquí" -#: cp/parser.c:10090 +#: cp/parser.c:10099 #, gcc-internal-format msgid "capture of variable %qD with non-automatic storage duration" msgstr "captura de la variable %qD con duración de almacenamiento que no es automática" -#: cp/parser.c:10128 +#: cp/parser.c:10137 #, gcc-internal-format msgid "explicit by-copy capture of %qD redundant with by-copy capture default" msgstr "la captura por copia explícita de %qD es redundante con la captura por copia por defecto" -#: cp/parser.c:10133 +#: cp/parser.c:10142 #, gcc-internal-format msgid "explicit by-reference capture of %qD redundant with by-reference capture default" msgstr "la captura por referencia explícita de %qD es redundate con la captura por referencia por defecto" -#: cp/parser.c:10182 +#: cp/parser.c:10191 #, fuzzy, gcc-internal-format #| msgid "variadic templates only available with -std=c++11 or -std=gnu++11" msgid "lambda templates are only available with -std=c++14 or -std=gnu++14" msgstr "las plantillas variadic sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:10186 +#: cp/parser.c:10195 #, fuzzy, gcc-internal-format #| msgid "ISO C90 does not support complex types" msgid "ISO C++ does not support lambda templates" msgstr "ISO C90 no admite tipos complejos" -#: cp/parser.c:10216 +#: cp/parser.c:10225 #, gcc-internal-format msgid "default argument specified for lambda parameter" msgstr "se especificó un argumento por defecto para el parámetro lambda" -#: cp/parser.c:10234 +#: cp/parser.c:10243 #, fuzzy, gcc-internal-format #| msgid "duplicate %" msgid "duplicate %" msgstr "% duplicado" -#: cp/parser.c:10282 +#: cp/parser.c:10291 #, fuzzy, gcc-internal-format #| msgid "C++11 % only available with -std=c++11 or -std=gnu++11" msgid "% lambda only available with -std=c++1z or -std=gnu++1z" msgstr "% de C++11 sólo está disponible con -std=c++11 o -std=gnu++11" -#: cp/parser.c:10734 cp/parser.c:10915 +#: cp/parser.c:10743 cp/parser.c:10924 #, fuzzy, gcc-internal-format #| msgid "attributes after parenthesized initializer ignored" msgid "attributes at the beginning of statement are ignored" msgstr "se descartan los atributos después del inicializador entre paréntesis" -#: cp/parser.c:10762 +#: cp/parser.c:10771 #, gcc-internal-format msgid "expected labeled-statement" msgstr "se esperaba una declaración etiquetada" -#: cp/parser.c:10808 +#: cp/parser.c:10817 #, gcc-internal-format msgid "case label %qE not within a switch statement" msgstr "la etiqueta case %qE no está dentro de una declaración switch" -#: cp/parser.c:10922 +#: cp/parser.c:10931 #, gcc-internal-format msgid "need % before %qE because %qT is a dependent scope" msgstr "se necesita % antes de %qE porque %qT es un ámbito dependiente" -#: cp/parser.c:10931 +#: cp/parser.c:10940 #, gcc-internal-format msgid "%<%T::%D%> names the constructor, not the type" msgstr "%<%T::%D%> nombra el constructor, no el tipo" -#: cp/parser.c:10978 +#: cp/parser.c:10987 #, gcc-internal-format msgid "compound-statement in constexpr function" msgstr "declaración compuesta en una función constexpr" -#: cp/parser.c:11105 +#: cp/parser.c:11114 #, fuzzy, gcc-internal-format #| msgid "C++11 % only available with -std=c++11 or -std=gnu++11" msgid "% only available with -std=c++1z or -std=gnu++1z" msgstr "% de C++11 sólo está disponible con -std=c++11 o -std=gnu++11" -#: cp/parser.c:11131 +#: cp/parser.c:11140 #, fuzzy, gcc-internal-format #| msgid "inline namespaces only available with -std=c++11 or -std=gnu++11" msgid "init-statement in selection statements only available with -std=c++1z or -std=gnu++1z" msgstr "los nombres de espacio incluidos en línea sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:11301 cp/parser.c:27869 +#: cp/parser.c:11310 cp/parser.c:27892 #, gcc-internal-format msgid "expected selection-statement" msgstr "se esperaba una declaración de selección" -#: cp/parser.c:11334 +#: cp/parser.c:11343 #, gcc-internal-format msgid "types may not be defined in conditions" msgstr "no se pueden definir tipos en condiciones" -#: cp/parser.c:11757 +#: cp/parser.c:11766 #, gcc-internal-format msgid "range-based % expression of type %qT has incomplete type" msgstr "la expresión % basada en rango de tipo %qT es de tipo incompleto" -#: cp/parser.c:11795 +#: cp/parser.c:11804 #, gcc-internal-format msgid "range-based % expression of type %qT has an % member but not a %" msgstr "la expresión % basada en rango de tipo %qT tiene un miembro % pero no tiene %" -#: cp/parser.c:11801 +#: cp/parser.c:11810 #, gcc-internal-format msgid "range-based % expression of type %qT has a % member but not an %" msgstr "la expresión % basada en rango de tipo %qT tiene un miembro % pero no tiene %" -#: cp/parser.c:11853 +#: cp/parser.c:11862 #, gcc-internal-format msgid "inconsistent begin/end types in range-based % statement: %qT and %qT" msgstr "tipos begin/end inconsistentes para la declaración % basada en rango: %qT y %qT" -#: cp/parser.c:11988 cp/parser.c:27872 +#: cp/parser.c:11997 cp/parser.c:27895 #, gcc-internal-format msgid "expected iteration-statement" msgstr "se esperaba una declaración de iteración" -#: cp/parser.c:12036 +#: cp/parser.c:12045 #, fuzzy, gcc-internal-format #| msgid "unrestricted unions only available with -std=c++11 or -std=gnu++11" msgid "range-based % loops only available with -std=c++11 or -std=gnu++11" msgstr "las uniones sin restricción sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:12110 +#: cp/parser.c:12119 #, fuzzy, gcc-internal-format #| msgid "break statement used with OpenMP for loop" msgid "break statement used with Cilk Plus for loop" msgstr "se usó la declaración break en un bucle for de OpenMP" -#: cp/parser.c:12170 +#: cp/parser.c:12179 #, fuzzy, gcc-internal-format #| msgid "compound-statement in constexpr function" msgid "% in % function" @@ -43434,72 +43507,78 @@ msgstr "declaración compuesta en una función constexpr" #. Issue a warning about this use of a GNU extension. -#: cp/parser.c:12178 +#: cp/parser.c:12187 #, gcc-internal-format msgid "ISO C++ forbids computed gotos" msgstr "ISO C++ prohíbe los gotos calculados" -#: cp/parser.c:12191 cp/parser.c:27875 +#: cp/parser.c:12200 cp/parser.c:27898 #, gcc-internal-format msgid "expected jump-statement" msgstr "se esperaba una declaración de salto" -#: cp/parser.c:12348 cp/parser.c:23115 +#: cp/parser.c:12357 cp/parser.c:23138 #, gcc-internal-format msgid "extra %<;%>" msgstr "<;%> extra" -#: cp/parser.c:12591 +#: cp/parser.c:12600 #, gcc-internal-format msgid "%<__label__%> not at the beginning of a block" msgstr "%<__label%> no está al inicio de un bloque" -#: cp/parser.c:12805 +#: cp/parser.c:12814 #, gcc-internal-format msgid "non-variable %qD in declaration with more than one declarator with placeholder type" msgstr "" -#: cp/parser.c:12825 +#: cp/parser.c:12834 #, gcc-internal-format msgid "inconsistent deduction for %qT: %qT and then %qT" msgstr "deducción inconsistente para %qT: %qT y después %qT" -#: cp/parser.c:12846 +#: cp/parser.c:12855 #, gcc-internal-format msgid "mixing declarations and function-definitions is forbidden" msgstr "se prohíbe mezclar declaraciones y definiciones-de-función" -#: cp/parser.c:12870 +#: cp/parser.c:12879 #, fuzzy, gcc-internal-format #| msgid "types may not be defined in exception-declarations" msgid "types may not be defined in a for-range-declaration" msgstr "no se pueden definir tipos en declaraciones de excepción" -#: cp/parser.c:12925 +#: cp/parser.c:12934 #, fuzzy, gcc-internal-format #| msgid "types may not be defined in range-based for loops" msgid "initializer in range-based % loop" msgstr "no se pueden definir tipos en bucles for basados en rango" -#: cp/parser.c:12928 +#: cp/parser.c:12937 #, fuzzy, gcc-internal-format #| msgid "multiple declarations `%T' and `%T'" msgid "multiple declarations in range-based % loop" msgstr "declaraciones múltiples `%T' y `%T'" -#: cp/parser.c:12979 +#: cp/parser.c:12988 #, fuzzy, gcc-internal-format #| msgid "lambda expressions only available with -std=c++11 or -std=gnu++11" msgid "decomposition declaration only available with -std=c++1z or -std=gnu++1z" msgstr "las expresiones lambda sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:13028 +#: cp/parser.c:13037 #, fuzzy, gcc-internal-format #| msgid "empty declaration" msgid "empty decomposition declaration" msgstr "declaración vacía" -#: cp/parser.c:13201 +#: cp/parser.c:13054 +#, fuzzy, gcc-internal-format +#| msgid "invalid initializer for bit string" +msgid "invalid initializer for structured binding declaration" +msgstr "inicializador no válido para la cadena de bits" + +#: cp/parser.c:13220 #, gcc-internal-format msgid "% used outside of class" msgstr "se usó % fuera de la clase" @@ -43506,502 +43585,502 @@ #. Complain about `auto' as a storage specifier, if #. we're complaining about C++0x compatibility. -#: cp/parser.c:13265 +#: cp/parser.c:13284 #, gcc-internal-format msgid "% changes meaning in C++11; please remove it" msgstr "% cambiará su significado en C++11; por favor bórrelo" -#: cp/parser.c:13301 +#: cp/parser.c:13320 #, gcc-internal-format msgid "decl-specifier invalid in condition" msgstr "especificador-decl no válido en la condición" -#: cp/parser.c:13307 +#: cp/parser.c:13326 #, fuzzy, gcc-internal-format #| msgid "%qD invalid in %qT" msgid "%qD invalid in lambda" msgstr "%qD no válido en %qT" -#: cp/parser.c:13400 +#: cp/parser.c:13419 #, gcc-internal-format msgid "class definition may not be declared a friend" msgstr "la definición de clase no se puede declarar como friend" -#: cp/parser.c:13470 cp/parser.c:23522 +#: cp/parser.c:13489 cp/parser.c:23545 #, gcc-internal-format msgid "templates may not be %" msgstr "las plantillas no pueden ser %" -#: cp/parser.c:13510 +#: cp/parser.c:13529 #, gcc-internal-format msgid "invalid linkage-specification" msgstr "especificación de enlace no válida" -#: cp/parser.c:13597 +#: cp/parser.c:13616 #, fuzzy, gcc-internal-format #| msgid "inline namespaces only available with -std=c++11 or -std=gnu++11" msgid "static_assert without a message only available with -std=c++1z or -std=gnu++1z" msgstr "los nombres de espacio incluidos en línea sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:13791 +#: cp/parser.c:13810 #, gcc-internal-format msgid "types may not be defined in % expressions" msgstr "no se pueden definir tipos en expresiones %" -#: cp/parser.c:13934 +#: cp/parser.c:13953 #, fuzzy, gcc-internal-format #| msgid "types may not be defined in a new-type-id" msgid "types may not be defined in a conversion-type-id" msgstr "no se pueden definir tipos en un id-tipo-nuevo" -#: cp/parser.c:13961 +#: cp/parser.c:13980 #, gcc-internal-format msgid "invalid use of % in conversion operator" msgstr "uso no válido de % en el operador de conversión" -#: cp/parser.c:13965 +#: cp/parser.c:13984 #, fuzzy, gcc-internal-format #| msgid "invalid use of % in conversion operator" msgid "use of % in member template conversion operator can never be deduced" msgstr "uso no válido de % en el operador de conversión" -#: cp/parser.c:14054 +#: cp/parser.c:14073 #, gcc-internal-format msgid "only constructors take member initializers" msgstr "solamente los constructores toman inicializadores miembro" -#: cp/parser.c:14076 +#: cp/parser.c:14095 #, gcc-internal-format msgid "cannot expand initializer for member %<%D%>" msgstr "no se puede expandir el inicializador para el miembro %<%D%>" -#: cp/parser.c:14088 +#: cp/parser.c:14107 #, gcc-internal-format msgid "mem-initializer for %qD follows constructor delegation" msgstr "inicializador mem para %qD después de una delegación de constructor" -#: cp/parser.c:14100 +#: cp/parser.c:14119 #, gcc-internal-format msgid "constructor delegation follows mem-initializer for %qD" msgstr "delegación de constructor después de un inicializador mem para %qD" -#: cp/parser.c:14152 +#: cp/parser.c:14171 #, gcc-internal-format msgid "anachronistic old-style base class initializer" msgstr "inicializador de clase base de estilo antiguo anacrónico" -#: cp/parser.c:14222 +#: cp/parser.c:14241 #, gcc-internal-format msgid "keyword % not allowed in this context (a qualified member initializer is implicitly a type)" msgstr "no se permite la palabra clave % en este contexto (un inicializador de miembro calificado es implícitamente un tipo)" -#: cp/parser.c:14583 +#: cp/parser.c:14602 #, fuzzy, gcc-internal-format #| msgid "missing space between %<\"\"%> and suffix identifier" msgid "unexpected keyword; remove space between quotes and suffix identifier" msgstr "falta un espacio entre %<\"\"%> y el identificador sufijo" -#: cp/parser.c:14589 +#: cp/parser.c:14608 #, gcc-internal-format msgid "expected suffix identifier" msgstr "se esperaba un identificador sufijo" -#: cp/parser.c:14598 +#: cp/parser.c:14617 #, gcc-internal-format msgid "expected empty string after % keyword" msgstr "se esperaba una cadena vacía después de la palabra clave %" -#: cp/parser.c:14604 +#: cp/parser.c:14623 #, fuzzy, gcc-internal-format #| msgid "invalid operands in ternary operation" msgid "invalid encoding prefix in literal operator" msgstr "operandos no válidos en la operación terniaria" -#: cp/parser.c:14627 +#: cp/parser.c:14646 #, gcc-internal-format msgid "expected operator" msgstr "operador inesperado" #. Warn that we do not support `export'. -#: cp/parser.c:14672 +#: cp/parser.c:14691 #, gcc-internal-format msgid "keyword % not implemented, and will be ignored" msgstr "no se admite la palabra clave %, y se descartará" -#: cp/parser.c:14842 +#: cp/parser.c:14861 #, fuzzy, gcc-internal-format #| msgid "invalid template non-type parameter" msgid "invalid constrained type parameter" msgstr "parámetro que no es tipo plantilla no válido" -#: cp/parser.c:14850 +#: cp/parser.c:14869 #, fuzzy, gcc-internal-format #| msgid "invalid catch parameter" msgid "cv-qualified type parameter" msgstr "parámetro de captura no válido" -#: cp/parser.c:14935 +#: cp/parser.c:14954 #, gcc-internal-format msgid "variadic constraint introduced without %<...%>" msgstr "" -#: cp/parser.c:14999 +#: cp/parser.c:15018 #, fuzzy, gcc-internal-format #| msgid "invalid use of '%E' as a non-type template-argument" msgid "invalid use of % in default template argument" msgstr "uso no válido de '%E' como un argumento de plantilla que no es tipo" -#: cp/parser.c:15234 cp/parser.c:15320 cp/parser.c:21348 +#: cp/parser.c:15253 cp/parser.c:15339 cp/parser.c:21371 #, gcc-internal-format msgid "template parameter pack %qD cannot have a default argument" msgstr "el paquete de parámetros plantilla %qD no puede tener un argumento por defecto" -#: cp/parser.c:15238 cp/parser.c:15324 +#: cp/parser.c:15257 cp/parser.c:15343 #, gcc-internal-format msgid "template parameter packs cannot have default arguments" msgstr "los paquetes de parámetro de plantilla no pueden tener argumentos por defecto" -#: cp/parser.c:15390 +#: cp/parser.c:15409 #, gcc-internal-format msgid "expected template-id" msgstr "se esperaba un id de plantilla" -#: cp/parser.c:15450 +#: cp/parser.c:15469 #, gcc-internal-format msgid "%<<::%> cannot begin a template-argument list" msgstr "%<<::%> no puede iniciar una lista de argumentos de plantilla" -#: cp/parser.c:15454 +#: cp/parser.c:15473 #, gcc-internal-format msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>" msgstr "%<<:%> es una forma alternativa para %<[%>. Inserte espacios en blanco entre %<<%> y %<::%>" -#: cp/parser.c:15458 +#: cp/parser.c:15477 #, fuzzy, gcc-internal-format #| msgid "(if you use %<-fpermissive%> G++ will accept your code)" msgid "(if you use %<-fpermissive%> or %<-std=c++11%>, or %<-std=gnu++11%> G++ will accept your code)" msgstr "(si utiliza %<-fpermissive%>, G++ aceptará su código)" -#: cp/parser.c:15565 +#: cp/parser.c:15584 #, gcc-internal-format msgid "parse error in template argument list" msgstr "error de decodificación en la lista de argumentos de plantilla" #. The name does not name a template. -#: cp/parser.c:15634 cp/parser.c:15761 cp/parser.c:15976 +#: cp/parser.c:15653 cp/parser.c:15784 cp/parser.c:15999 #, gcc-internal-format msgid "expected template-name" msgstr "se esperaba un nombre de plantilla" #. Explain what went wrong. -#: cp/parser.c:15680 +#: cp/parser.c:15699 #, gcc-internal-format msgid "non-template %qD used as template" msgstr "se usó %qD que no es plantilla como plantilla" -#: cp/parser.c:15682 +#: cp/parser.c:15701 #, gcc-internal-format msgid "use %<%T::template %D%> to indicate that it is a template" msgstr "utilice %<%T::template %D%> para indicar que es una plantilla" -#: cp/parser.c:15828 +#: cp/parser.c:15851 #, gcc-internal-format msgid "expected parameter pack before %<...%>" msgstr "se esperaba el parámetro pack antes de %<...%>" -#: cp/parser.c:15937 cp/parser.c:15955 cp/parser.c:16122 +#: cp/parser.c:15960 cp/parser.c:15978 cp/parser.c:16145 #, gcc-internal-format msgid "expected template-argument" msgstr "se esperaba un argumento de plantilla" -#: cp/parser.c:16097 +#: cp/parser.c:16120 #, gcc-internal-format msgid "invalid non-type template argument" msgstr "argumento de plantilla que no es tipo no válido" -#: cp/parser.c:16224 +#: cp/parser.c:16247 #, gcc-internal-format msgid "explicit instantiation shall not use % specifier" msgstr "la instanciación explícita no debe usar el especificador %" -#: cp/parser.c:16228 +#: cp/parser.c:16251 #, gcc-internal-format msgid "explicit instantiation shall not use % specifier" msgstr "la instanciación explícita no debe usar el especificador %" -#: cp/parser.c:16287 +#: cp/parser.c:16310 #, gcc-internal-format msgid "template specialization with C linkage" msgstr "especialización de plantilla con enlace C" -#: cp/parser.c:16507 +#: cp/parser.c:16530 #, gcc-internal-format msgid "expected type specifier" msgstr "se esperaba un specificador de tipo" -#: cp/parser.c:16691 +#: cp/parser.c:16714 #, fuzzy, gcc-internal-format #| msgid "defaulted and deleted functions only available with -std=c++11 or -std=gnu++11" msgid "use of % in lambda parameter declaration only available with -std=c++14 or -std=gnu++14" msgstr "las funciones por defecto y borradas sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:16697 +#: cp/parser.c:16720 #, fuzzy, gcc-internal-format #| msgid "defaulted and deleted functions only available with -std=c++11 or -std=gnu++11" msgid "use of % in parameter declaration only available with -std=c++14 or -std=gnu++14" msgstr "las funciones por defecto y borradas sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:16702 +#: cp/parser.c:16725 #, fuzzy, gcc-internal-format #| msgid "ISO C forbids forward parameter declarations" msgid "ISO C++ forbids use of % in parameter declaration" msgstr "ISO C prohíbe declaraciones adelantadas de parámetros" -#: cp/parser.c:16847 +#: cp/parser.c:16870 #, gcc-internal-format msgid "expected template-id for type" msgstr "se esperaba un id de plantilla para el tipo" -#: cp/parser.c:16916 +#: cp/parser.c:16939 #, gcc-internal-format msgid "expected type-name" msgstr "se esperaba un nombre de tipo" -#: cp/parser.c:17265 +#: cp/parser.c:17288 #, gcc-internal-format msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword" msgstr "el especificador de tipo elaborado para un ámbito enumerado no debe usar la palabra clave %<%D%>" -#: cp/parser.c:17488 +#: cp/parser.c:17511 #, gcc-internal-format msgid "declaration %qD does not declare anything" msgstr "la declaración %qD no declara nada" -#: cp/parser.c:17575 +#: cp/parser.c:17598 #, gcc-internal-format msgid "attributes ignored on uninstantiated type" msgstr "se descartan los atributos en el tipo sin instanciar" -#: cp/parser.c:17579 +#: cp/parser.c:17602 #, gcc-internal-format msgid "attributes ignored on template instantiation" msgstr "se descartan los atributos en la instanciación de una plantilla" -#: cp/parser.c:17584 +#: cp/parser.c:17607 #, gcc-internal-format msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration" msgstr "se descartan los atributos en un especificador de tipo elaborado que no es una declaración adelantada" -#: cp/parser.c:17718 +#: cp/parser.c:17741 #, gcc-internal-format msgid "%qD is an enumeration template" msgstr "%qD es una plantilla de enumeración" -#: cp/parser.c:17729 +#: cp/parser.c:17752 #, fuzzy, gcc-internal-format #| msgid "%qD does not have integral or enumeration type" msgid "%qD does not name an enumeration in %qT" msgstr "%qD no tiene tipo integral o de enumeración" -#: cp/parser.c:17744 +#: cp/parser.c:17767 #, fuzzy, gcc-internal-format #| msgid "% definition is not allowed here" msgid "unnamed scoped enum is not allowed" msgstr "la definición % no se permite aquí" -#: cp/parser.c:17799 +#: cp/parser.c:17822 #, gcc-internal-format msgid "expected %<;%> or %<{%>" msgstr "se esperaba %<;%> o %<{%>" -#: cp/parser.c:17848 +#: cp/parser.c:17871 #, gcc-internal-format msgid "cannot add an enumerator list to a template instantiation" msgstr "no se puede agregar una lista de enumerador a una instanciación de plantilla" -#: cp/parser.c:17862 +#: cp/parser.c:17885 #, fuzzy, gcc-internal-format #| msgid "friend declaration does not name a class or function" msgid "nested name specifier %qT for enum declaration does not name a class or namespace" msgstr "la declaración friend no nombra una clase o función" -#: cp/parser.c:17874 cp/parser.c:22605 +#: cp/parser.c:17897 cp/parser.c:22628 #, gcc-internal-format msgid "declaration of %qD in namespace %qD which does not enclose %qD" msgstr "la declaración de %qD en el espacio de nombres %qD el cual no incluye a %qD" -#: cp/parser.c:17879 cp/parser.c:22610 +#: cp/parser.c:17902 cp/parser.c:22633 #, gcc-internal-format msgid "declaration of %qD in %qD which does not enclose %qD" msgstr "la declaración de %qD en %qD la cual no incluye a %qD" -#: cp/parser.c:17891 cp/parser.c:22624 +#: cp/parser.c:17914 cp/parser.c:22647 #, gcc-internal-format msgid "extra qualification not allowed" msgstr "no se permite la calificación extra" -#: cp/parser.c:17914 +#: cp/parser.c:17937 #, gcc-internal-format msgid "multiple definition of %q#T" msgstr "definición múltiple de %q#T" -#: cp/parser.c:17927 +#: cp/parser.c:17950 #, fuzzy, gcc-internal-format #| msgid "ISO C++ forbids incrementing an enum" msgid "ISO C++ forbids empty unnamed enum" msgstr "ISO C++ prohíbe incrementar un enum" -#: cp/parser.c:17947 +#: cp/parser.c:17970 #, gcc-internal-format msgid "opaque-enum-specifier without name" msgstr "especificador enumerador opaco sin nombre" -#: cp/parser.c:17950 +#: cp/parser.c:17973 #, gcc-internal-format msgid "opaque-enum-specifier must use a simple identifier" msgstr "el especificador enumerador opaco debe usar un identificador simple" -#: cp/parser.c:18128 +#: cp/parser.c:18151 #, gcc-internal-format msgid "%qD is not a namespace-name" msgstr "%qD no es un nombre-de-espacio-de-nombres" -#: cp/parser.c:18129 +#: cp/parser.c:18152 #, gcc-internal-format msgid "expected namespace-name" msgstr "se esperaba un nombre de espacio" -#: cp/parser.c:18207 +#: cp/parser.c:18230 #, fuzzy, gcc-internal-format #| msgid "Enumerator cannot have attributes %C" msgid "a nested namespace definition cannot have attributes" msgstr "El enumerador no puede tener atributos %C" -#: cp/parser.c:18210 +#: cp/parser.c:18233 #, fuzzy, gcc-internal-format #| msgid "inline namespaces only available with -std=c++11 or -std=gnu++11" msgid "nested namespace definitions only available with -std=c++1z or -std=gnu++1z" msgstr "los nombres de espacio incluidos en línea sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:18213 +#: cp/parser.c:18236 #, fuzzy, gcc-internal-format #| msgid "varargs function cannot be inline" msgid "a nested namespace definition cannot be inline" msgstr "la función varargs no puede ser inline" -#: cp/parser.c:18221 +#: cp/parser.c:18244 #, fuzzy, gcc-internal-format #| msgid "expected identifier" msgid "nested identifier required" msgstr "se esperaba un identificador" -#: cp/parser.c:18249 +#: cp/parser.c:18272 #, fuzzy, gcc-internal-format #| msgid "namespace %qT undeclared" msgid "namespace %qD entered" msgstr "espacio de nombres %qT sin declarar" -#: cp/parser.c:18302 +#: cp/parser.c:18325 #, gcc-internal-format msgid "% definition is not allowed here" msgstr "la definición % no se permite aquí" -#: cp/parser.c:18453 +#: cp/parser.c:18476 #, fuzzy, gcc-internal-format #| msgid "lambda expressions only available with -std=c++11 or -std=gnu++11" msgid "pack expansion in using-declaration only available with -std=c++1z or -std=gnu++1z" msgstr "las expresiones lambda sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:18468 +#: cp/parser.c:18491 #, gcc-internal-format msgid "a template-id may not appear in a using-declaration" msgstr "un id-de-plantilla no puede aparecer en una declaración-using" -#: cp/parser.c:18515 +#: cp/parser.c:18538 #, fuzzy, gcc-internal-format #| msgid "lambda expressions only available with -std=c++11 or -std=gnu++11" msgid "comma-separated list in using-declaration only available with -std=c++1z or -std=gnu++1z" msgstr "las expresiones lambda sólo están disponibles con -std=c++11 o -std=gnu++11" -#: cp/parser.c:18525 +#: cp/parser.c:18548 #, gcc-internal-format msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the % keyword" msgstr "las declaraciones access son obsoletas en favor de las declaraciones using: sugerencia: use la palabra clave %" -#: cp/parser.c:18590 +#: cp/parser.c:18613 #, gcc-internal-format msgid "types may not be defined in alias template declarations" msgstr "no se pueden definir tipos en declaraciones de plantilla alias" -#: cp/parser.c:18743 +#: cp/parser.c:18766 #, fuzzy, gcc-internal-format #| msgid "compound-statement in constexpr function" msgid "% in % function" msgstr "declaración compuesta en una función constexpr" -#: cp/parser.c:19130 +#: cp/parser.c:19153 #, gcc-internal-format msgid "a function-definition is not allowed here" msgstr "una definición de función no se permite aquí" -#: cp/parser.c:19141 +#: cp/parser.c:19164 #, gcc-internal-format msgid "an asm-specification is not allowed on a function-definition" msgstr "no se permite una especificación-asm en una definición-de-función" -#: cp/parser.c:19145 +#: cp/parser.c:19168 #, gcc-internal-format msgid "attributes are not allowed on a function-definition" msgstr "no se permiten atributos en una definición-de-función" -#: cp/parser.c:19196 +#: cp/parser.c:19219 #, gcc-internal-format msgid "expected constructor, destructor, or type conversion" msgstr "se esperaba un constructor, un destructor, o una conversión de tipo" #. Anything else is an error. -#: cp/parser.c:19235 cp/parser.c:21539 +#: cp/parser.c:19258 cp/parser.c:21562 #, gcc-internal-format msgid "expected initializer" msgstr "se esperaba un inicializador" -#: cp/parser.c:19316 +#: cp/parser.c:19339 #, gcc-internal-format msgid "initializer provided for function" msgstr "se proporcionó un inicializador para la función" -#: cp/parser.c:19350 +#: cp/parser.c:19373 #, gcc-internal-format msgid "attributes after parenthesized initializer ignored" msgstr "se descartan los atributos después del inicializador entre paréntesis" -#: cp/parser.c:19355 +#: cp/parser.c:19378 #, fuzzy, gcc-internal-format #| msgid "function %q+D redeclared as inline" msgid "non-function %qD declared as implicit template" msgstr "se redeclara la función %q+D como inline" -#: cp/parser.c:19804 +#: cp/parser.c:19827 #, gcc-internal-format msgid "array bound is not an integer constant" msgstr "el límite de la matriz no es una constante entera" -#: cp/parser.c:19930 +#: cp/parser.c:19953 #, gcc-internal-format msgid "cannot define member of dependent typedef %qT" msgstr "no se puede definir el miembro de la definición de tipo dependiente %qT" -#: cp/parser.c:19934 +#: cp/parser.c:19957 #, gcc-internal-format msgid "%<%T::%E%> is not a type" msgstr "%<%T::%E%> no es un tipo" -#: cp/parser.c:19962 +#: cp/parser.c:19985 #, gcc-internal-format msgid "invalid use of constructor as a template" msgstr "uso no válido del constructor como una plantilla" -#: cp/parser.c:19964 +#: cp/parser.c:19987 #, gcc-internal-format msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name" msgstr "use %<%T::%D%> en lugar de %<%T::%D%> para nombrar el constructor en un nombre calificado" @@ -44010,7 +44089,7 @@ #. here because we do not have enough #. information about its original syntactic #. form. -#: cp/parser.c:19981 +#: cp/parser.c:20004 #, gcc-internal-format msgid "invalid declarator" msgstr "declarador no válido" @@ -44017,354 +44096,356 @@ #. But declarations with qualified-ids can't appear in a #. function. -#: cp/parser.c:20051 +#: cp/parser.c:20074 #, fuzzy, gcc-internal-format #| msgid "invalid type in declaration" msgid "qualified-id in declaration" msgstr "tipo no válido en la declaración" -#: cp/parser.c:20076 +#: cp/parser.c:20099 #, gcc-internal-format msgid "expected declarator" msgstr "se esperaba un declarador" -#: cp/parser.c:20179 +#: cp/parser.c:20202 #, gcc-internal-format msgid "%qD is a namespace" msgstr "%qD es un espacio de nombres" -#: cp/parser.c:20181 +#: cp/parser.c:20204 #, gcc-internal-format msgid "cannot form pointer to member of non-class %q#T" msgstr "no se puede formar un puntero al miembro de %q#T que no es clase" -#: cp/parser.c:20202 +#: cp/parser.c:20225 #, gcc-internal-format msgid "expected ptr-operator" msgstr "se esperaba un operador puntero" -#: cp/parser.c:20261 +#: cp/parser.c:20284 #, gcc-internal-format msgid "duplicate cv-qualifier" msgstr "calificador-cv duplicado" -#: cp/parser.c:20315 +#: cp/parser.c:20338 #, fuzzy, gcc-internal-format #| msgid "multiple `virtual' specifiers" msgid "multiple ref-qualifiers" msgstr "especificadores `virtual' múltiples" -#: cp/parser.c:20352 +#: cp/parser.c:20375 #, gcc-internal-format msgid "%E requires %<-fgnu-tm%>" msgstr "" -#: cp/parser.c:20408 +#: cp/parser.c:20431 #, gcc-internal-format msgid "duplicate virt-specifier" msgstr "especificador-virt duplicado" -#: cp/parser.c:20679 +#: cp/parser.c:20702 #, fuzzy, gcc-internal-format #| msgid "in template argument for type %qT " msgid "missing template arguments after %qT" msgstr "en el argumento de plantilla para el tipo %qT " -#: cp/parser.c:20685 cp/typeck2.c:493 cp/typeck2.c:532 cp/typeck2.c:1976 +#: cp/parser.c:20708 cp/typeck2.c:493 cp/typeck2.c:532 cp/typeck2.c:1976 #, gcc-internal-format msgid "invalid use of %qT" msgstr "uso no válido de %qT" -#: cp/parser.c:20706 +#: cp/parser.c:20729 #, gcc-internal-format msgid "types may not be defined in template arguments" msgstr "no se pueden definir tipos en argumentos de plantilla" -#: cp/parser.c:20711 +#: cp/parser.c:20734 #, fuzzy, gcc-internal-format #| msgid "invalid use of '%E' as a non-type template-argument" msgid "invalid use of % in template argument" msgstr "uso no válido de '%E' como un argumento de plantilla que no es tipo" -#: cp/parser.c:20799 +#: cp/parser.c:20822 #, gcc-internal-format msgid "expected type-specifier" msgstr "se esperaba un especificador de tipo" -#: cp/parser.c:21105 +#: cp/parser.c:21128 #, gcc-internal-format msgid "expected %<,%> or %<...%>" msgstr "se esperaba %<,%> o %<...%>" -#: cp/parser.c:21180 +#: cp/parser.c:21203 #, gcc-internal-format msgid "types may not be defined in parameter types" msgstr "no se pueden definir tipos en tipos de parámetro" -#: cp/parser.c:21332 +#: cp/parser.c:21355 #, gcc-internal-format msgid "default arguments are only permitted for function parameters" msgstr "los argumentos por defecto sólo se permiten para parámetros de función" -#: cp/parser.c:21350 +#: cp/parser.c:21373 #, gcc-internal-format msgid "parameter pack %qD cannot have a default argument" msgstr "el paquete de parámetros %qD no puede tener un argumento por defecto" -#: cp/parser.c:21356 +#: cp/parser.c:21379 #, gcc-internal-format msgid "template parameter pack cannot have a default argument" msgstr "el paquete de parámetros plantilla no puede tener un argumento por defecto" -#: cp/parser.c:21358 +#: cp/parser.c:21381 #, gcc-internal-format msgid "parameter pack cannot have a default argument" msgstr "el paquete de parámetros no puede tener un argumento por defecto" -#: cp/parser.c:21745 +#: cp/parser.c:21768 #, gcc-internal-format msgid "ISO C++ does not allow designated initializers" msgstr "ISO C++ no permite inicializadores designados" -#: cp/parser.c:21759 +#: cp/parser.c:21782 #, gcc-internal-format msgid "ISO C++ does not allow C99 designated initializers" msgstr "ISO C++ no permite inicializadores designados de C99" -#: cp/parser.c:21879 cp/parser.c:22005 +#: cp/parser.c:21902 cp/parser.c:22028 #, gcc-internal-format msgid "expected class-name" msgstr "se esperaba un nombre de clase" -#: cp/parser.c:22206 +#: cp/parser.c:22229 #, gcc-internal-format msgid "expected %<;%> after class definition" msgstr "se esperaba %<;%> después de la definición de clase" -#: cp/parser.c:22209 +#: cp/parser.c:22232 #, gcc-internal-format msgid "expected %<;%> after struct definition" msgstr "se esperaba %<;%> después de la definición de struct" -#: cp/parser.c:22212 +#: cp/parser.c:22235 #, gcc-internal-format msgid "expected %<;%> after union definition" msgstr "se esperaba %<;%> después de la definición de union" -#: cp/parser.c:22553 +#: cp/parser.c:22576 #, gcc-internal-format msgid "expected %<{%> or %<:%>" msgstr "se esperaba %<{%> o %<:%>" -#: cp/parser.c:22564 +#: cp/parser.c:22587 #, gcc-internal-format msgid "cannot specify % for a class" msgstr "no se puede especificar % para una clase" -#: cp/parser.c:22572 +#: cp/parser.c:22595 #, gcc-internal-format msgid "global qualification of class name is invalid" msgstr "la calificación global del nombre de clase es no válida" -#: cp/parser.c:22579 +#: cp/parser.c:22602 #, gcc-internal-format msgid "qualified name does not name a class" msgstr "el nombre calificado no nombra una clase" -#: cp/parser.c:22591 +#: cp/parser.c:22614 #, gcc-internal-format msgid "invalid class name in declaration of %qD" msgstr "nombre de clase no válido en la declaración de %qD" -#: cp/parser.c:22650 +#: cp/parser.c:22673 #, gcc-internal-format msgid "an explicit specialization must be preceded by %