* [google] Remove unqualified lookups which break clang (issue4439085)
@ 2011-05-02 14:35 Ollie Wild
2011-05-02 14:37 ` Diego Novillo
2011-05-02 14:53 ` Ollie Wild
0 siblings, 2 replies; 6+ messages in thread
From: Ollie Wild @ 2011-05-02 14:35 UTC (permalink / raw)
To: reply, gcc-patches
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [google] Remove unqualified lookups which break clang (issue4439085)
2011-05-02 14:35 [google] Remove unqualified lookups which break clang (issue4439085) Ollie Wild
@ 2011-05-02 14:37 ` Diego Novillo
2011-05-02 14:53 ` Ollie Wild
1 sibling, 0 replies; 6+ messages in thread
From: Diego Novillo @ 2011-05-02 14:37 UTC (permalink / raw)
To: Ollie Wild; +Cc: reply, gcc-patches
On Mon, May 2, 2011 at 10:34, Ollie Wild <aaw@google.com> wrote:
> 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.
OK for google/main.
Diego.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [google] Remove unqualified lookups which break clang (issue4439085)
2011-05-02 14:35 [google] Remove unqualified lookups which break clang (issue4439085) Ollie Wild
2011-05-02 14:37 ` Diego Novillo
@ 2011-05-02 14:53 ` Ollie Wild
2011-05-02 14:58 ` Paolo Carlini
1 sibling, 1 reply; 6+ messages in thread
From: Ollie Wild @ 2011-05-02 14:53 UTC (permalink / raw)
To: reply, gcc-patches, libstdc++
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [google] Remove unqualified lookups which break clang (issue4439085)
2011-05-02 14:53 ` Ollie Wild
@ 2011-05-02 14:58 ` Paolo Carlini
2011-05-02 15:20 ` Paolo Carlini
0 siblings, 1 reply; 6+ messages in thread
From: Paolo Carlini @ 2011-05-02 14:58 UTC (permalink / raw)
To: Ollie Wild; +Cc: reply, gcc-patches, libstdc++
On 05/02/2011 04:52 PM, Ollie Wild wrote:
> Submitted to google/main.
>
> Adding libstdc++@gcc.gnu.org for trunk approval.
This is Ok for mainline and 4_6-branch.
Why nobody noticed so far? Is there a latent C++ front-end bug? Please
double check (the last time, I took care of filing the corresponding C++
front-end issue)
Paolo.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [google] Remove unqualified lookups which break clang (issue4439085)
2011-05-02 14:58 ` Paolo Carlini
@ 2011-05-02 15:20 ` Paolo Carlini
2011-05-02 15:33 ` Paolo Carlini
0 siblings, 1 reply; 6+ messages in thread
From: Paolo Carlini @ 2011-05-02 15:20 UTC (permalink / raw)
To: Ollie Wild; +Cc: reply, gcc-patches, libstdc++, Jason Merrill
On 05/02/2011 04:58 PM, Paolo Carlini wrote:
> Why nobody noticed so far? Is there a latent C++ front-end bug? Please
> double check (the last time, I took care of filing the corresponding
> C++ front-end issue)
-- Jason,
is it known that we accept the below?
Paolo.
//////////////////
template<typename T>
struct base
{
void bar(T) { }
};
template<typename T>
struct derived
: base<T>
{
void
foo(T t)
{ bar(t); }
};
template class derived<int>;
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [google] Remove unqualified lookups which break clang (issue4439085)
2011-05-02 15:20 ` Paolo Carlini
@ 2011-05-02 15:33 ` Paolo Carlini
0 siblings, 0 replies; 6+ messages in thread
From: Paolo Carlini @ 2011-05-02 15:33 UTC (permalink / raw)
To: Ollie Wild; +Cc: reply, gcc-patches, libstdc++, Jason Merrill
On 05/02/2011 05:19 PM, Paolo Carlini wrote:
> template<typename T>
> struct base
> {
> void bar(T) { }
> };
>
> template<typename T>
> struct derived
> : base<T>
> {
> void
> foo(T t)
> { bar(t); }
> };
>
> template class derived<int>;
Gosh, c++/24163
Paolo.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-05-02 15:33 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-02 14:35 [google] Remove unqualified lookups which break clang (issue4439085) Ollie Wild
2011-05-02 14:37 ` Diego Novillo
2011-05-02 14:53 ` Ollie Wild
2011-05-02 14:58 ` Paolo Carlini
2011-05-02 15:20 ` Paolo Carlini
2011-05-02 15:33 ` Paolo Carlini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).