This is the mail archive of the gcc-bugs@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]

[Bug libstdc++/17882] New: Using -O3 -Wformat=2 causes spurious warnings on iostream


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
$

-- 
           Summary: Using -O3 -Wformat=2 causes spurious warnings on
                    iostream
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: libstdc++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jlawson-gcc at bovine dot net
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17882


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