From: Jonathan Wakely Date: Thu, 2 Mar 2017 18:59:06 +0000 (+0000) Subject: PR libstdc++/79789 fix non-reserved names in headers X-Git-Tag: releases/gcc-5.5.0~492 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e95f77d9b23f13c8cfb3dfc3efa860ae5f532a1f;p=thirdparty%2Fgcc.git PR libstdc++/79789 fix non-reserved names in headers PR libstdc++/79789 * include/bits/ios_base.h (make_error_code, make_error_condition): Likewise. * include/bits/mask_array.h (mask_array): Likewise. * include/bits/regex.h (regex_token_iterator): Likewise. * include/bits/slice_array.h (slice_array): Likewise. * include/std/memory (undeclare_no_pointers): Likewise. * testsuite/17_intro/names.cc: New test. From-SVN: r245847 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7325a2f7e544..87c626e8be45 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,14 @@ +2017-03-02 Jonathan Wakely + + PR libstdc++/79789 + * include/bits/ios_base.h (make_error_code, make_error_condition): + Likewise. + * include/bits/mask_array.h (mask_array): Likewise. + * include/bits/regex.h (regex_token_iterator): Likewise. + * include/bits/slice_array.h (slice_array): Likewise. + * include/std/memory (undeclare_no_pointers): Likewise. + * testsuite/17_intro/names.cc: New test. + 2017-02-14 Jonathan Wakely Backport from mainline diff --git a/libstdc++-v3/include/bits/ios_base.h b/libstdc++-v3/include/bits/ios_base.h index 908ba7c7e4ee..7e91c0bbbb0e 100644 --- a/libstdc++-v3/include/bits/ios_base.h +++ b/libstdc++-v3/include/bits/ios_base.h @@ -207,12 +207,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const error_category& iostream_category() noexcept; inline error_code - make_error_code(io_errc e) noexcept - { return error_code(static_cast(e), iostream_category()); } + make_error_code(io_errc __e) noexcept + { return error_code(static_cast(__e), iostream_category()); } inline error_condition - make_error_condition(io_errc e) noexcept - { return error_condition(static_cast(e), iostream_category()); } + make_error_condition(io_errc __e) noexcept + { return error_condition(static_cast(__e), iostream_category()); } #endif // 27.4.2 Class ios_base diff --git a/libstdc++-v3/include/bits/mask_array.h b/libstdc++-v3/include/bits/mask_array.h index 5078f1736cf0..850ad8d4b2ef 100644 --- a/libstdc++-v3/include/bits/mask_array.h +++ b/libstdc++-v3/include/bits/mask_array.h @@ -136,8 +136,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; template - inline mask_array<_Tp>::mask_array(const mask_array<_Tp>& a) - : _M_sz(a._M_sz), _M_mask(a._M_mask), _M_array(a._M_array) {} + inline mask_array<_Tp>::mask_array(const mask_array<_Tp>& __a) + : _M_sz(__a._M_sz), _M_mask(__a._M_mask), _M_array(__a._M_array) {} template inline diff --git a/libstdc++-v3/include/bits/regex.h b/libstdc++-v3/include/bits/regex.h index 9b26c8f465df..90723e6e2551 100644 --- a/libstdc++-v3/include/bits/regex.h +++ b/libstdc++-v3/include/bits/regex.h @@ -2672,9 +2672,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 initializer_list, regex_constants::match_flag_type = regex_constants::match_default) = delete; - template + template regex_token_iterator(_Bi_iter, _Bi_iter, const regex_type&&, - const int (&)[N], + const int (&)[_Nm], regex_constants::match_flag_type = regex_constants::match_default) = delete; diff --git a/libstdc++-v3/include/bits/slice_array.h b/libstdc++-v3/include/bits/slice_array.h index ee1c546a7c35..199998a3f54d 100644 --- a/libstdc++-v3/include/bits/slice_array.h +++ b/libstdc++-v3/include/bits/slice_array.h @@ -204,8 +204,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template inline - slice_array<_Tp>::slice_array(const slice_array<_Tp>& a) - : _M_sz(a._M_sz), _M_stride(a._M_stride), _M_array(a._M_array) {} + slice_array<_Tp>::slice_array(const slice_array<_Tp>& __a) + : _M_sz(__a._M_sz), _M_stride(__a._M_stride), _M_array(__a._M_array) {} // template // inline slice_array<_Tp>::~slice_array () {} diff --git a/libstdc++-v3/testsuite/17_intro/names.cc b/libstdc++-v3/testsuite/17_intro/names.cc new file mode 100644 index 000000000000..a7d9a6bced34 --- /dev/null +++ b/libstdc++-v3/testsuite/17_intro/names.cc @@ -0,0 +1,101 @@ +// 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 } + +// Define macros for some common variables names that we must not use for +// naming variables, parameters etc. in the library. +#define tmp ( +#define A ( +#define B ( +#define C ( +#define D ( +#define E ( +#define F ( +#define G ( +#define H ( +#define I ( +#define J ( +#define K ( +#define L ( +#define M ( +#define N ( +#define O ( +#define P ( +#define Q ( +#define R ( +#define S ( +#define T ( +#define U ( +#define V ( +#define W ( +#define X ( +#define Y ( +#define Z ( +#if __cplusplus >= 201103L +// defines member functions called a() and b() +#else +#define a ( +#define b ( +#endif +// and defined data members called c +#define d ( +#define e ( +#define f ( +#define g ( +#if __cplusplus >= 201402L +// defines operator ""h in C++14 +// defines operator ""i in C++14 +#else +#define h ( +#define i ( +#endif +#define j ( +#if __cplusplus >= 201103L +// defines member functions called k() +#else +#define k ( +#endif +#define l ( +#if __cplusplus >= 201103L +// defines member functions called m() and n() +#else +#define m ( +#define n ( +#endif +#define o ( +#if __cplusplus >= 201103L +// defines member functions called p() +#else +#define p ( +#endif +#define q ( +#define r ( +#if __cplusplus >= 201103L +// defines member functions called s() and t() +// and define operator ""s in C++14 +#else +#define s ( +#define t ( +#endif +#define u ( +#define v ( +#define w ( +#define x ( +#define y ( +#define z ( +#include