Bug 17882 - Using -O3 -Wformat=2 causes spurious warnings on iostream
Summary: Using -O3 -Wformat=2 causes spurious warnings on iostream
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: libstdc++ (show other bugs)
Version: 3.2.1
: P2 normal
Target Milestone: 3.3
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-10-07 16:34 UTC by jlawson-gcc
Modified: 2005-07-23 22:49 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description jlawson-gcc 2004-10-07 16:34:15 UTC
Using -O2 or less does not cause this error.  Using Linux Redhat ES 2.1 and 3
with this version of gcc:

gcc (GCC) 3.2.1 20021125 (Red Hat Linux 8.0 3.2.1-1)
Copyright (C) 2002 Free Software Foundation, Inc.

and with libstdc++-devel-3.2.3-34


$ cat > stdheaderbug.cpp
#include <iostream>
int main() {
    std::cout << 1;
    return 0;
}


$ g++ -O3 -Wformat=2 -fmessage-length=0 -Werror stdheaderbug.cpp
cc1plus: warnings being treated as errors
/usr/include/c++/3.2.1/i386-redhat-linux/bits/c++locale.h: In function `int
std::__convert_from_v(char*, int, const char*, _Tv, __locale_struct* const&,
int) [with _Tv = long unsigned int]':
/usr/include/c++/3.2.1/bits/locale_facets.tcc:701:   instantiated from `_OutIter
std::num_put<_CharT, _OutIter>::_M_convert_int(_OutIter, std::ios_base&, _CharT,
char, char, _ValueT) const [with _ValueT = long unsigned int, _CharT = char,
_OutIter = std::ostreambuf_iterator<char, std::char_traits<char> >]'
/usr/include/c++/3.2.1/bits/locale_facets.tcc:895:   instantiated from `_OutIter
std::num_put<_CharT, _OutIter>::do_put(_OutIter, std::ios_base&, _CharT, long
unsigned int) const [with _CharT = char, _OutIter =
std::ostreambuf_iterator<char, std::char_traits<char> >]'
/usr/include/c++/3.2.1/bits/locale_facets.h:745:   instantiated from `_OutIter
std::num_put<_CharT, _OutIter>::put(_OutIter, std::ios_base&, _CharT, long
unsigned int) const [with _CharT = char, _OutIter =
std::ostreambuf_iterator<char, std::char_traits<char> >]'
/usr/include/c++/3.2.1/bits/ostream.tcc:215:   instantiated from
`std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits =
std::char_traits<char>]'
/usr/include/c++/3.2.1/ostream:122:   instantiated from
`std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits<char>]'
stdheaderbug.cpp:3:   instantiated from here
/usr/include/c++/3.2.1/i386-redhat-linux/bits/c++locale.h:76: warning: format
not a string literal, argument types not checked
/usr/include/c++/3.2.1/i386-redhat-linux/bits/c++locale.h:76: warning: format
not a string literal, argument types not checked
/usr/include/c++/3.2.1/i386-redhat-linux/bits/c++locale.h:78: warning: format
not a string literal, argument types not checked
/usr/include/c++/3.2.1/i386-redhat-linux/bits/c++locale.h:78: warning: format
not a string literal, argument types not checked
/usr/include/c++/3.2.1/i386-redhat-linux/bits/c++locale.h: In function `int
std::__convert_from_v(char*, int, const char*, _Tv, __locale_struct* const&,
int) [with _Tv = long int]':
/usr/include/c++/3.2.1/bits/locale_facets.tcc:701:   instantiated from `_OutIter
std::num_put<_CharT, _OutIter>::_M_convert_int(_OutIter, std::ios_base&, _CharT,
char, char, _ValueT) const [with _ValueT = long int, _CharT = char, _OutIter =
std::ostreambuf_iterator<char, std::char_traits<char> >]'
/usr/include/c++/3.2.1/bits/locale_facets.tcc:888:   instantiated from `_OutIter
std::num_put<_CharT, _OutIter>::do_put(_OutIter, std::ios_base&, _CharT, long
int) const [with _CharT = char, _OutIter = std::ostreambuf_iterator<char,
std::char_traits<char> >]'
/usr/include/c++/3.2.1/bits/locale_facets.h:740:   instantiated from `_OutIter
std::num_put<_CharT, _OutIter>::put(_OutIter, std::ios_base&, _CharT, long int)
const [with _CharT = char, _OutIter = std::ostreambuf_iterator<char,
std::char_traits<char> >]'
/usr/include/c++/3.2.1/bits/ostream.tcc:188:   instantiated from
`std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(long int) [with _CharT = char, _Traits =
std::char_traits<char>]'
/usr/include/c++/3.2.1/ostream:125:   instantiated from
`std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits<char>]'
stdheaderbug.cpp:3:   instantiated from here
/usr/include/c++/3.2.1/i386-redhat-linux/bits/c++locale.h:76: warning: format
not a string literal, argument types not checked
/usr/include/c++/3.2.1/i386-redhat-linux/bits/c++locale.h:76: warning: format
not a string literal, argument types not checked
/usr/include/c++/3.2.1/i386-redhat-linux/bits/c++locale.h:78: warning: format
not a string literal, argument types not checked
/usr/include/c++/3.2.1/i386-redhat-linux/bits/c++locale.h:78: warning: format
not a string literal, argument types not checked
$
Comment 1 Andrew Pinski 2004-10-07 16:38:46 UTC
Fixed since 3.3.