2003-10-10 Paolo Carlini <pcarlini@unitus.it>
* include/bits/ostream.tcc (operator<<(basic_ostream&, _CharT)) Avoid unnecessarily calling __builtin_alloca and dealing explicitly with width() smaller than zero. (operator<<(basic_ostream&, char), operator<<(basic_ostream&, const _CharT*), operator<<(basic_ostream<_CharT, _Traits>&, const char*), operator<<(basic_ostream<char, _Traits>&, const char*), operator<<(basic_ostream, const basic_string&)): Likewise. From-SVN: r72302
This commit is contained in:
parent
fc45d35133
commit
6b61bca48f
|
@ -1,3 +1,14 @@
|
||||||
|
2003-10-10 Paolo Carlini <pcarlini@unitus.it>
|
||||||
|
|
||||||
|
* include/bits/ostream.tcc (operator<<(basic_ostream&, _CharT))
|
||||||
|
Avoid unnecessarily calling __builtin_alloca and dealing
|
||||||
|
explicitly with width() smaller than zero.
|
||||||
|
(operator<<(basic_ostream&, char), operator<<(basic_ostream&,
|
||||||
|
const _CharT*), operator<<(basic_ostream<_CharT, _Traits>&,
|
||||||
|
const char*), operator<<(basic_ostream<char, _Traits>&,
|
||||||
|
const char*), operator<<(basic_ostream, const basic_string&)):
|
||||||
|
Likewise.
|
||||||
|
|
||||||
2003-10-09 Benjamin Kosnik <bkoz@redhat.com>
|
2003-10-09 Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
* config/linker-map.gnu: Make more *_type_info bits visible.
|
* config/linker-map.gnu: Make more *_type_info bits visible.
|
||||||
|
|
|
@ -471,17 +471,18 @@ namespace std
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
const streamsize __w = __out.width() > 0 ? __out.width() : 0;
|
const streamsize __w = __out.width();
|
||||||
_CharT* __pads = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * (__w + 1)));
|
|
||||||
__pads[0] = __c;
|
|
||||||
streamsize __len = 1;
|
streamsize __len = 1;
|
||||||
|
_CharT* __cs = &__c;
|
||||||
if (__w > __len)
|
if (__w > __len)
|
||||||
{
|
{
|
||||||
__pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __pads,
|
__cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
|
||||||
|
* __w));
|
||||||
|
__pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __cs,
|
||||||
&__c, __w, __len, false);
|
&__c, __w, __len, false);
|
||||||
__len = __w;
|
__len = __w;
|
||||||
}
|
}
|
||||||
__out._M_write(__pads, __len);
|
__out._M_write(__cs, __len);
|
||||||
__out.width(0);
|
__out.width(0);
|
||||||
}
|
}
|
||||||
catch(...)
|
catch(...)
|
||||||
|
@ -507,17 +508,17 @@ namespace std
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
const streamsize __w = __out.width() > 0 ? __out.width() : 0;
|
const streamsize __w = __out.width();
|
||||||
char* __pads = static_cast<char*>(__builtin_alloca(__w + 1));
|
|
||||||
__pads[0] = __c;
|
|
||||||
streamsize __len = 1;
|
streamsize __len = 1;
|
||||||
|
char* __cs = &__c;
|
||||||
if (__w > __len)
|
if (__w > __len)
|
||||||
{
|
{
|
||||||
__pad<char, _Traits>::_S_pad(__out, __out.fill(), __pads,
|
__cs = static_cast<char*>(__builtin_alloca(__w));
|
||||||
|
__pad<char, _Traits>::_S_pad(__out, __out.fill(), __cs,
|
||||||
&__c, __w, __len, false);
|
&__c, __w, __len, false);
|
||||||
__len = __w;
|
__len = __w;
|
||||||
}
|
}
|
||||||
__out._M_write(__pads, __len);
|
__out._M_write(__cs, __len);
|
||||||
__out.width(0);
|
__out.width(0);
|
||||||
}
|
}
|
||||||
catch(...)
|
catch(...)
|
||||||
|
@ -542,14 +543,15 @@ namespace std
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
const streamsize __w = __out.width() > 0 ? __out.width() : 0;
|
const streamsize __w = __out.width();
|
||||||
_CharT* __pads = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __w));
|
|
||||||
streamsize __len = static_cast<streamsize>(_Traits::length(__s));
|
streamsize __len = static_cast<streamsize>(_Traits::length(__s));
|
||||||
if (__w > __len)
|
if (__w > __len)
|
||||||
{
|
{
|
||||||
__pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __pads,
|
_CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
|
||||||
|
* __w));
|
||||||
|
__pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __cs,
|
||||||
__s, __w, __len, false);
|
__s, __w, __len, false);
|
||||||
__s = __pads;
|
__s = __cs;
|
||||||
__len = __w;
|
__len = __w;
|
||||||
}
|
}
|
||||||
__out._M_write(__s, __len);
|
__out._M_write(__s, __len);
|
||||||
|
@ -583,22 +585,23 @@ namespace std
|
||||||
if (__cerb && __s)
|
if (__cerb && __s)
|
||||||
{
|
{
|
||||||
size_t __clen = __traits_type::length(__s);
|
size_t __clen = __traits_type::length(__s);
|
||||||
_CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * (__clen + 1)));
|
_CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
|
||||||
|
* __clen));
|
||||||
for (size_t __i = 0; __i < __clen; ++__i)
|
for (size_t __i = 0; __i < __clen; ++__i)
|
||||||
__ws[__i] = __out.widen(__s[__i]);
|
__ws[__i] = __out.widen(__s[__i]);
|
||||||
_CharT* __str = __ws;
|
_CharT* __str = __ws;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
const streamsize __w = __out.width();
|
||||||
streamsize __len = static_cast<streamsize>(__clen);
|
streamsize __len = static_cast<streamsize>(__clen);
|
||||||
const streamsize __w = __out.width() > 0 ? __out.width() : 0;
|
|
||||||
_CharT* __pads = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __w));
|
|
||||||
|
|
||||||
if (__w > __len)
|
if (__w > __len)
|
||||||
{
|
{
|
||||||
__pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __pads,
|
_CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
|
||||||
|
* __w));
|
||||||
|
__pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __cs,
|
||||||
__ws, __w, __len, false);
|
__ws, __w, __len, false);
|
||||||
__str = __pads;
|
__str = __cs;
|
||||||
__len = __w;
|
__len = __w;
|
||||||
}
|
}
|
||||||
__out._M_write(__str, __len);
|
__out._M_write(__str, __len);
|
||||||
|
@ -629,15 +632,14 @@ namespace std
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
const streamsize __w = __out.width() > 0 ? __out.width() : 0;
|
const streamsize __w = __out.width();
|
||||||
char* __pads = static_cast<char*>(__builtin_alloca(__w));
|
|
||||||
streamsize __len = static_cast<streamsize>(_Traits::length(__s));
|
streamsize __len = static_cast<streamsize>(_Traits::length(__s));
|
||||||
|
|
||||||
if (__w > __len)
|
if (__w > __len)
|
||||||
{
|
{
|
||||||
__pad<char, _Traits>::_S_pad(__out, __out.fill(), __pads,
|
char* __cs = static_cast<char*>(__builtin_alloca(__w));
|
||||||
|
__pad<char, _Traits>::_S_pad(__out, __out.fill(), __cs,
|
||||||
__s, __w, __len, false);
|
__s, __w, __len, false);
|
||||||
__s = __pads;
|
__s = __cs;
|
||||||
__len = __w;
|
__len = __w;
|
||||||
}
|
}
|
||||||
__out._M_write(__s, __len);
|
__out._M_write(__s, __len);
|
||||||
|
@ -667,18 +669,19 @@ namespace std
|
||||||
typename __ostream_type::sentry __cerb(__out);
|
typename __ostream_type::sentry __cerb(__out);
|
||||||
if (__cerb)
|
if (__cerb)
|
||||||
{
|
{
|
||||||
const _CharT* __s = __str.data();
|
const streamsize __w = __out.width();
|
||||||
const streamsize __w = __out.width() > 0 ? __out.width() : 0;
|
|
||||||
_CharT* __pads = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __w));
|
|
||||||
streamsize __len = static_cast<streamsize>(__str.size());
|
streamsize __len = static_cast<streamsize>(__str.size());
|
||||||
|
const _CharT* __s = __str.data();
|
||||||
#ifdef _GLIBCXX_RESOLVE_LIB_DEFECTS
|
#ifdef _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||||
// 25. String operator<< uses width() value wrong
|
// 25. String operator<< uses width() value wrong
|
||||||
#endif
|
#endif
|
||||||
if (__w > __len)
|
if (__w > __len)
|
||||||
{
|
{
|
||||||
__pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __pads, __s,
|
_CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
|
||||||
|
* __w));
|
||||||
|
__pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __cs, __s,
|
||||||
__w, __len, false);
|
__w, __len, false);
|
||||||
__s = __pads;
|
__s = __cs;
|
||||||
__len = __w;
|
__len = __w;
|
||||||
}
|
}
|
||||||
__out._M_write(__s, __len);
|
__out._M_write(__s, __len);
|
||||||
|
|
Loading…
Reference in New Issue