This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [google] Remove unqualified lookups which break clang (issue4439085)


Submitted to google/main.

Adding libstdc++@gcc.gnu.org for trunk approval.

Ollie

On Mon, May 2, 2011 at 9:34 AM, Ollie Wild <aaw@google.com> wrote:
>
> commit 99835abc5d2a7fd3ae0950c8a16fd6d223d408c9
> Author: Ollie Wild <aaw@google.com>
> Date: ? Fri Apr 29 13:03:57 2011 -0400
>
> ? ?Remove unqualified lookups into dependent template base classes from
> ? ?STL headers. ?These break clang.
>
> ? ?See http://clang.llvm.org/compatibility.html#dep_lookup_bases.
>
> ? ?To be applied to google/main. ?Would also like permissiont to submit to
> ? ?trunk.
>
> M ? ? ? libstdc++-v3/include/ext/sso_string_base.h
> M ? ? ? libstdc++-v3/include/ext/vstring.h
> M ? ? ? libstdc++-v3/include/ext/vstring.tcc
>
> Tested:
> ?Tested via buildit bootstrap and tests.
>
> ChangeLog:
>
> 2011-05-02 ?Ollie Wild ?<aaw@google.com>
>
> ? ? ? ?* include/ext/sso_string_base.h (__sso_string_base<>::_M_construct):
> ? ? ? ?Fix unqualified lookup.
> ? ? ? ?(__sso_string_base<>::_M_construct): Likewise.
> ? ? ? ?(__sso_string_base<>::_M_construct): Likewise.
> ? ? ? ?(__sso_string_base<>::_M_assign): Likewise.
> ? ? ? ?(__sso_string_base<>::_M_reserve): Likewise.
> ? ? ? ?(__sso_string_base<>::_M_mutate): Likewise.
> ? ? ? ?(__sso_string_base<>::_M_erase): Likewise.
> ? ? ? ?* include/ext/vstring.h (__versa_string<>::replace): Likewise.
> ? ? ? ?(__versa_string<>::compare): Likewise.
> ? ? ? ?* include/ext/vstring.tcc (__versa_string<>::compare): Likewise.
> ? ? ? ?(__versa_string<>::compare): Likewise.
> ? ? ? ?(__versa_string<>::compare): Likewise.
> ? ? ? ?(__versa_string<>::compare): Likewise.
> ? ? ? ?(__versa_string<>::compare): Likewise.
>
> diff --git a/libstdc++-v3/include/ext/sso_string_base.h b/libstdc++-v3/include/ext/sso_string_base.h
> index 638eeba..39a62d6 100644
> --- a/libstdc++-v3/include/ext/sso_string_base.h
> +++ b/libstdc++-v3/include/ext/sso_string_base.h
> @@ -432,7 +432,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> ? ? ? ? ? ? ? ? ? ?// Allocate more space.
> ? ? ? ? ? ? ? ? ? ?__capacity = __len + 1;
> ? ? ? ? ? ? ? ? ? ?_CharT* __another = _M_create(__capacity, __len);
> - ? ? ? ? ? ? ? ? ? _S_copy(__another, _M_data(), __len);
> + ? ? ? ? ? ? ? ? ? this->_S_copy(__another, _M_data(), __len);
> ? ? ? ? ? ? ? ? ? ?_M_dispose();
> ? ? ? ? ? ? ? ? ? ?_M_data(__another);
> ? ? ? ? ? ? ? ? ? ?_M_capacity(__capacity);
> @@ -472,7 +472,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>
> ? ? ? ?// Check for out_of_range and length_error exceptions.
> ? ? ? ?__try
> - ? ? ? ? { _S_copy_chars(_M_data(), __beg, __end); }
> + ? ? ? ? { this->_S_copy_chars(_M_data(), __beg, __end); }
> ? ? ? ?__catch(...)
> ? ? ? ? ?{
> ? ? ? ? ? ?_M_dispose();
> @@ -494,7 +494,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> ? ? ? ?}
>
> ? ? ? if (__n)
> - ? ? ? _S_assign(_M_data(), __n, __c);
> + ? ? ? this->_S_assign(_M_data(), __n, __c);
>
> ? ? ? _M_set_length_no_wipe(__n);
> ? ? }
> @@ -519,7 +519,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> ? ? ? ? ? ?}
>
> ? ? ? ? ?if (__rsize)
> - ? ? ? ? ? _S_copy(_M_data(), __rcs._M_data(), __rsize);
> + ? ? ? ? ? this->_S_copy(_M_data(), __rcs._M_data(), __rsize);
>
> ? ? ? ? ?_M_set_length(__rsize);
> ? ? ? ?}
> @@ -541,14 +541,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> ? ? ? ? ? ? ?|| __res > size_type(_S_local_capacity))
> ? ? ? ? ? ?{
> ? ? ? ? ? ? ?_CharT* __tmp = _M_create(__res, __capacity);
> - ? ? ? ? ? ? _S_copy(__tmp, _M_data(), _M_length() + 1);
> + ? ? ? ? ? ? this->_S_copy(__tmp, _M_data(), _M_length() + 1);
> ? ? ? ? ? ? ?_M_dispose();
> ? ? ? ? ? ? ?_M_data(__tmp);
> ? ? ? ? ? ? ?_M_capacity(__res);
> ? ? ? ? ? ?}
> ? ? ? ? ?else if (!_M_is_local())
> ? ? ? ? ? ?{
> - ? ? ? ? ? ? _S_copy(_M_local_data, _M_data(), _M_length() + 1);
> + ? ? ? ? ? ? this->_S_copy(_M_local_data, _M_data(), _M_length() + 1);
> ? ? ? ? ? ? ?_M_destroy(__capacity);
> ? ? ? ? ? ? ?_M_data(_M_local_data);
> ? ? ? ? ? ?}
> @@ -567,12 +567,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> ? ? ? _CharT* __r = _M_create(__new_capacity, _M_capacity());
>
> ? ? ? if (__pos)
> - ? ? ? _S_copy(__r, _M_data(), __pos);
> + ? ? ? this->_S_copy(__r, _M_data(), __pos);
> ? ? ? if (__s && __len2)
> - ? ? ? _S_copy(__r + __pos, __s, __len2);
> + ? ? ? this->_S_copy(__r + __pos, __s, __len2);
> ? ? ? if (__how_much)
> - ? ? ? _S_copy(__r + __pos + __len2,
> - ? ? ? ? ? ? ? _M_data() + __pos + __len1, __how_much);
> + ? ? ? this->_S_copy(__r + __pos + __len2,
> + ? ? ? ? ? ? ? ? ? ? _M_data() + __pos + __len1, __how_much);
>
> ? ? ? _M_dispose();
> ? ? ? _M_data(__r);
> @@ -587,8 +587,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> ? ? ? const size_type __how_much = _M_length() - __pos - __n;
>
> ? ? ? if (__how_much && __n)
> - ? ? ? _S_move(_M_data() + __pos, _M_data() + __pos + __n,
> - ? ? ? ? ? ? ? __how_much);
> + ? ? ? this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much);
>
> ? ? ? _M_set_length(_M_length() - __n);
> ? ? }
> diff --git a/libstdc++-v3/include/ext/vstring.h b/libstdc++-v3/include/ext/vstring.h
> index 90a5683..57f36a6 100644
> --- a/libstdc++-v3/include/ext/vstring.h
> +++ b/libstdc++-v3/include/ext/vstring.h
> @@ -1374,7 +1374,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? && __i2 <= _M_iend());
> ? ? ? ? ?__glibcxx_requires_valid_range(__k1, __k2);
> ? ? ? ? ?typedef typename std::__is_integer<_InputIterator>::__type _Integral;
> - ? ? ? ? return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
> + ? ? ? ? return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
> ? ? ? ?}
>
> ? ? ? // Specializations for the common case of pointer and iterator:
> @@ -1929,7 +1929,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>
> ? ? ? ?int __r = traits_type::compare(this->_M_data(), __str.data(), __len);
> ? ? ? ?if (!__r)
> - ? ? ? ? __r = _S_compare(__size, __osize);
> + ? ? ? ? __r = this->_S_compare(__size, __osize);
> ? ? ? ?return __r;
> ? ? ? }
>
> diff --git a/libstdc++-v3/include/ext/vstring.tcc b/libstdc++-v3/include/ext/vstring.tcc
> index e36058b..588985b 100644
> --- a/libstdc++-v3/include/ext/vstring.tcc
> +++ b/libstdc++-v3/include/ext/vstring.tcc
> @@ -466,7 +466,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> ? ? ? int __r = traits_type::compare(this->_M_data() + __pos,
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? __str.data(), __len);
> ? ? ? if (!__r)
> - ? ? ? __r = _S_compare(__n, __osize);
> + ? ? ? __r = this->_S_compare(__n, __osize);
> ? ? ? return __r;
> ? ? }
>
> @@ -485,7 +485,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> ? ? ? int __r = traits_type::compare(this->_M_data() + __pos1,
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? __str.data() + __pos2, __len);
> ? ? ? if (!__r)
> - ? ? ? __r = _S_compare(__n1, __n2);
> + ? ? ? __r = this->_S_compare(__n1, __n2);
> ? ? ? return __r;
> ? ? }
>
> @@ -501,7 +501,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> ? ? ? const size_type __len = std::min(__size, __osize);
> ? ? ? int __r = traits_type::compare(this->_M_data(), __s, __len);
> ? ? ? if (!__r)
> - ? ? ? __r = _S_compare(__size, __osize);
> + ? ? ? __r = this->_S_compare(__size, __osize);
> ? ? ? return __r;
> ? ? }
>
> @@ -518,7 +518,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> ? ? ? const size_type __len = std::min(__n1, __osize);
> ? ? ? int __r = traits_type::compare(this->_M_data() + __pos, __s, __len);
> ? ? ? if (!__r)
> - ? ? ? __r = _S_compare(__n1, __osize);
> + ? ? ? __r = this->_S_compare(__n1, __osize);
> ? ? ? return __r;
> ? ? }
>
> @@ -535,7 +535,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> ? ? ? const size_type __len = std::min(__n1, __n2);
> ? ? ? int __r = traits_type::compare(this->_M_data() + __pos, __s, __len);
> ? ? ? if (!__r)
> - ? ? ? __r = _S_compare(__n1, __n2);
> + ? ? ? __r = this->_S_compare(__n1, __n2);
> ? ? ? return __r;
> ? ? }
>
>
> --
> This patch is available for review at http://codereview.appspot.com/4439085


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]