aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@unitus.it>2003-05-23 00:16:41 +0200
committerPaolo Carlini <paolo@gcc.gnu.org>2003-05-22 22:16:41 +0000
commitd7ccc917602f5c820c4157f96de9ced1cf12b2dd (patch)
tree8a984fd6bc2f6fcc8c9b9d8ca069147fb9c25e66
parent5f875c8fc6a2a0349cb3fd752396d4556e5a6c1a (diff)
downloadgcc-d7ccc917602f5c820c4157f96de9ced1cf12b2dd.zip
gcc-d7ccc917602f5c820c4157f96de9ced1cf12b2dd.tar.gz
gcc-d7ccc917602f5c820c4157f96de9ced1cf12b2dd.tar.bz2
std_fstream.h (_S_pback_size): Remove definition.
2003-05-22 Paolo Carlini <pcarlini@unitus.it> * include/std/std_fstream.h (_S_pback_size): Remove definition. (_M_create_pback(), _M_destroy_pback()): Simplify for a single-char pback buffer. * include/bits/fstream.tcc (_S_pback_size): Remove declaration. * testsuite/27_io/basic_filebuf/3.cc: Remove explicit instantiation of _S_pback_size for systems with no COMDAT or weak support. * testsuite/27_io/basic_filebuf/seekoff/10132-2.cc: Likewise. * testsuite/27_io/basic_filebuf/seekpos/10132-3.cc: Likewise. * testsuite/27_io/basic_filebuf/underflow/10096.cc: Likewise. * testsuite/27_io/basic_fstream/3.cc: Likewise. * testsuite/27_io/basic_ifstream/3.cc: Likewise. * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc: Likewise. * testsuite/27_io/basic_ofstream/3.cc: Likewise. * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Likewise. * testsuite/27_io/basic_streambuf/3.cc: Likewise. From-SVN: r67102
-rw-r--r--libstdc++-v3/ChangeLog20
-rw-r--r--libstdc++-v3/include/bits/fstream.tcc4
-rw-r--r--libstdc++-v3/include/std/std_fstream.h20
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/3.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/10132-2.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/10132-3.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/10096.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_fstream/3.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ifstream/3.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc4
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ofstream/3.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc4
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_streambuf/3.cc7
13 files changed, 23 insertions, 85 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 29f972c..28cee92 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,6 +1,24 @@
2003-05-22 Paolo Carlini <pcarlini@unitus.it>
- * include/bits/fstream.tcc (_M_underflow): simplify:
+ * include/std/std_fstream.h (_S_pback_size): Remove definition.
+ (_M_create_pback(), _M_destroy_pback()): Simplify for a single-char
+ pback buffer.
+ * include/bits/fstream.tcc (_S_pback_size): Remove declaration.
+ * testsuite/27_io/basic_filebuf/3.cc: Remove explicit instantiation
+ of _S_pback_size for systems with no COMDAT or weak support.
+ * testsuite/27_io/basic_filebuf/seekoff/10132-2.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/seekpos/10132-3.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/underflow/10096.cc: Likewise.
+ * testsuite/27_io/basic_fstream/3.cc: Likewise.
+ * testsuite/27_io/basic_ifstream/3.cc: Likewise.
+ * testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc: Likewise.
+ * testsuite/27_io/basic_ofstream/3.cc: Likewise.
+ * testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/3.cc: Likewise.
+
+2003-05-22 Paolo Carlini <pcarlini@unitus.it>
+
+ * include/bits/fstream.tcc (_M_underflow): Simplify:
!__testout implies _M_filepos == _M_in_end, therefore
the first _M_file.seekoff call is never issued.
diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc
index 0aa93fe..cda0bac 100644
--- a/libstdc++-v3/include/bits/fstream.tcc
+++ b/libstdc++-v3/include/bits/fstream.tcc
@@ -40,10 +40,6 @@
namespace std
{
template<typename _CharT, typename _Traits>
- const size_t
- basic_filebuf<_CharT, _Traits>::_S_pback_size;
-
- template<typename _CharT, typename _Traits>
void
basic_filebuf<_CharT, _Traits>::
_M_allocate_internal_buffer()
diff --git a/libstdc++-v3/include/std/std_fstream.h b/libstdc++-v3/include/std/std_fstream.h
index 24c9f7f..2779488 100644
--- a/libstdc++-v3/include/std/std_fstream.h
+++ b/libstdc++-v3/include/std/std_fstream.h
@@ -158,8 +158,7 @@ namespace std
* @note pbacks of over one character are not currently supported.
* @endif
*/
- static const size_t _S_pback_size = 1;
- char_type _M_pback[_S_pback_size];
+ char_type _M_pback[1];
char_type* _M_pback_cur_save;
char_type* _M_pback_end_save;
bool _M_pback_init;
@@ -176,12 +175,9 @@ namespace std
{
if (!_M_pback_init)
{
- size_t __dist = this->_M_in_end - this->_M_in_cur;
- size_t __len = std::min(_S_pback_size, __dist);
- traits_type::copy(_M_pback, this->_M_in_cur, __len);
_M_pback_cur_save = this->_M_in_cur;
_M_pback_end_save = this->_M_in_end;
- this->setg(_M_pback, _M_pback, _M_pback + __len);
+ this->setg(_M_pback, _M_pback, _M_pback + 1);
_M_pback_init = true;
}
}
@@ -195,17 +191,9 @@ namespace std
if (_M_pback_init)
{
// Length _M_in_cur moved in the pback buffer.
- size_t __off_cur = this->_M_in_cur - _M_pback;
-
- // For in | out buffers, the end can be pushed back...
- size_t __off_end = 0;
- size_t __pback_len = this->_M_in_end - _M_pback;
- size_t __save_len = _M_pback_end_save - this->_M_buf;
- if (__pback_len > __save_len)
- __off_end = __pback_len - __save_len;
-
+ const size_t __off_cur = this->_M_in_cur - _M_pback;
this->setg(this->_M_buf, _M_pback_cur_save + __off_cur,
- _M_pback_end_save + __off_end);
+ _M_pback_end_save);
_M_pback_init = false;
}
}
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/3.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/3.cc
index ddec01c..54cfba1 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/3.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/3.cc
@@ -127,13 +127,6 @@ void test07()
}
}
-#if !__GXX_WEAK__
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template
- std::basic_filebuf<gnu_char_type>::int_type
- std::basic_filebuf<gnu_char_type>::_S_pback_size;
-#endif
-
int main()
{
test07();
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/10132-2.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/10132-2.cc
index e1628c4..a391d22 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/10132-2.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/10132-2.cc
@@ -129,13 +129,6 @@ void test07()
}
}
-#if !__GXX_WEAK__
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template
- std::basic_filebuf<gnu_char_type>::int_type
- std::basic_filebuf<gnu_char_type>::_S_pback_size;
-#endif
-
int main()
{
test07();
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/10132-3.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/10132-3.cc
index 0f1ee2e..02f7b67 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/10132-3.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/10132-3.cc
@@ -129,13 +129,6 @@ void test07()
}
}
-#if !__GXX_WEAK__
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template
- std::basic_filebuf<gnu_char_type>::int_type
- std::basic_filebuf<gnu_char_type>::_S_pback_size;
-#endif
-
int main()
{
test07();
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/10096.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/10096.cc
index 588a625..8dd2434 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/10096.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/10096.cc
@@ -63,13 +63,6 @@ void test01()
VERIFY( fb.sgetc() == MyTraits::eof() );
}
-#if !__GXX_WEAK__
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template
- std::basic_filebuf<char, MyTraits>::int_type
- std::basic_filebuf<char, MyTraits>::_S_pback_size;
-#endif
-
int main()
{
test01();
diff --git a/libstdc++-v3/testsuite/27_io/basic_fstream/3.cc b/libstdc++-v3/testsuite/27_io/basic_fstream/3.cc
index 216e9a2..4f78ed0 100644
--- a/libstdc++-v3/testsuite/27_io/basic_fstream/3.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_fstream/3.cc
@@ -131,13 +131,6 @@ void test07()
}
}
-#if !__GXX_WEAK__
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template
- std::basic_filebuf<gnu_char_type>::int_type
- std::basic_filebuf<gnu_char_type>::_S_pback_size;
-#endif
-
int main()
{
test07();
diff --git a/libstdc++-v3/testsuite/27_io/basic_ifstream/3.cc b/libstdc++-v3/testsuite/27_io/basic_ifstream/3.cc
index 9de0c62..dd38b25 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ifstream/3.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ifstream/3.cc
@@ -131,13 +131,6 @@ void test07()
}
}
-#if !__GXX_WEAK__
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template
- std::basic_filebuf<gnu_char_type>::int_type
- std::basic_filebuf<gnu_char_type>::_S_pback_size;
-#endif
-
int main()
{
test07();
diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc b/libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc
index c702757..99dd0b0 100644
--- a/libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3983-fstream.cc
@@ -180,10 +180,6 @@ template
template
unsigned char
std::basic_string<unsigned char>::_Rep::_S_terminal;
-
-template
- std::basic_filebuf<unsigned char>::int_type
- std::basic_filebuf<unsigned char>::_S_pback_size;
#endif
int main()
diff --git a/libstdc++-v3/testsuite/27_io/basic_ofstream/3.cc b/libstdc++-v3/testsuite/27_io/basic_ofstream/3.cc
index 5149ecd..3bba780 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ofstream/3.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ofstream/3.cc
@@ -131,13 +131,6 @@ void test07()
}
}
-#if !__GXX_WEAK__
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template
- std::basic_filebuf<gnu_char_type>::int_type
- std::basic_filebuf<gnu_char_type>::_S_pback_size;
-#endif
-
int main()
{
test07();
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc
index a38bddc..3cdf3b8 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/3983-fstream.cc
@@ -151,10 +151,6 @@ template
template
unsigned char
std::basic_string<unsigned char>::_Rep::_S_terminal;
-
-template
- std::basic_filebuf<unsigned char>::int_type
- std::basic_filebuf<unsigned char>::_S_pback_size;
#endif
int main()
diff --git a/libstdc++-v3/testsuite/27_io/basic_streambuf/3.cc b/libstdc++-v3/testsuite/27_io/basic_streambuf/3.cc
index 36e5290..c599985 100644
--- a/libstdc++-v3/testsuite/27_io/basic_streambuf/3.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_streambuf/3.cc
@@ -129,13 +129,6 @@ void test07()
}
}
-#if !__GXX_WEAK__
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template
- std::basic_filebuf<gnu_char_type>::int_type
- std::basic_filebuf<gnu_char_type>::_S_pback_size;
-#endif
-
int main()
{
test07();