public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/35173] New: trivial long -> int implicit conversions
@ 2008-02-12 19:57 mrs at apple dot com
2008-02-12 20:00 ` [Bug libstdc++/35173] " pinskia at gcc dot gnu dot org
2008-02-12 22:39 ` manu at gcc dot gnu dot org
0 siblings, 2 replies; 3+ messages in thread
From: mrs at apple dot com @ 2008-02-12 19:57 UTC (permalink / raw)
To: gcc-bugs
We have a warning -Wshorten-64-to-32 to catch porting to 64-bit machines which
warning when a 64 bit value is converted implicitly to a 32 bit value.
It causes:
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:379: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:380: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:430: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:431: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:481: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:482: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:532: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:533: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:583: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:584: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:634: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:635: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:685: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:686: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:736: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:737: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:787: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:788: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:838: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:839: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:889: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:890: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:940: warning:
implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/limits:941: warning:
implicit conversion shortens 64-bit value into a 32-bit value
In file included from
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/locale:44,
from t5.cc:3:
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/locale_classes.h:105:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/locale_classes.h:106:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/locale_classes.h:107:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/locale_classes.h:108:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/locale_classes.h:109:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/locale_classes.h:110:
warning: implicit conversion shortens 64-bit value into a 32-bit value
In file included from
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/locale_facets.h:49,
from
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/locale:45,
from t5.cc:3:
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:57:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:58:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:59:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:60:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:61:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:62:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:63:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:64:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:65:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:66:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:67:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:68:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:69:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:70:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:71:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:72:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:73:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:74:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:75:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:109:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:110:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:111:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:112:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:113:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:114:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:115:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:150:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:151:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:152:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:153:
warning: implicit conversion shortens 64-bit value into a 32-bit value
/tmp/libstdcxx.roots/libstdcxx~dst/usr/include/c++/4.2.1/bits/ios_base.h:189:
warning: implicit conversion shortens 64-bit value into a 32-bit value
when -Wsystem-headers -m64 (LP64) is used. These are just a minor int, but
thought I'd point them out, just in case you might want to clean the code any.
Reasonably it is silly to warn about converting constant ints when the value is
known to fit in the smaller type.
limits (all the lines of the form):
static const int digits = __glibcxx_digits (char);
static const int digits10 = __glibcxx_digits10 (char);
bits/locale_classes.h
static const category ctype = 1L << 0;
static const category numeric = 1L << 1;
static const category collate = 1L << 2;
static const category time = 1L << 3;
static const category monetary = 1L << 4;
static const category messages = 1L << 5;
bits/ios_base.h:
_S_boolalpha = 1L << 0,
_S_dec = 1L << 1,
_S_fixed = 1L << 2,
_S_hex = 1L << 3,
_S_internal = 1L << 4,
_S_left = 1L << 5,
_S_oct = 1L << 6,
_S_right = 1L << 7,
_S_scientific = 1L << 8,
_S_showbase = 1L << 9,
_S_showpoint = 1L << 10,
_S_showpos = 1L << 11,
_S_skipws = 1L << 12,
_S_unitbuf = 1L << 13,
_S_uppercase = 1L << 14,
_S_app = 1L << 0,
_S_ate = 1L << 1,
_S_bin = 1L << 2,
_S_in = 1L << 3,
_S_out = 1L << 4,
_S_trunc = 1L << 5,
_S_ios_openmode_end = 1L << 16
_S_badbit = 1L << 0,
_S_eofbit = 1L << 1,
_S_failbit = 1L << 2,
_S_ios_iostate_end = 1L << 16
_S_ios_seekdir_end = 1L << 16
--
Summary: trivial long -> int implicit conversions
Product: gcc
Version: 4.2.1
Status: UNCONFIRMED
Severity: trivial
Priority: P3
Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mrs at apple dot com
GCC build triplet: i686-apple-darwin9
GCC host triplet: i686-apple-darwin9
GCC target triplet: i686-apple-darwin9
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35173
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug libstdc++/35173] trivial long -> int implicit conversions
2008-02-12 19:57 [Bug libstdc++/35173] New: trivial long -> int implicit conversions mrs at apple dot com
@ 2008-02-12 20:00 ` pinskia at gcc dot gnu dot org
2008-02-12 22:39 ` manu at gcc dot gnu dot org
1 sibling, 0 replies; 3+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2008-02-12 20:00 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from pinskia at gcc dot gnu dot org 2008-02-12 19:59 -------
I think -Wshorten-64-to-32 is bogus here. The values don't lose any
information, please fix your warning. Also you might want to try -Wconversion
in 4.3.0 and try again.
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35173
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug libstdc++/35173] trivial long -> int implicit conversions
2008-02-12 19:57 [Bug libstdc++/35173] New: trivial long -> int implicit conversions mrs at apple dot com
2008-02-12 20:00 ` [Bug libstdc++/35173] " pinskia at gcc dot gnu dot org
@ 2008-02-12 22:39 ` manu at gcc dot gnu dot org
1 sibling, 0 replies; 3+ messages in thread
From: manu at gcc dot gnu dot org @ 2008-02-12 22:39 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from manu at gcc dot gnu dot org 2008-02-12 22:38 -------
Please, try with the new -Wconversion (http://gcc.gnu.org/wiki/NewWconversion),
it shouldn't warn for values that fit (without changing sign) into the target
type.
Nevertheless, perhaps it may be interesting to make Wconversion warn about some
particular conversions in a special way.
--
manu at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |manu at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35173
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-02-12 22:39 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-12 19:57 [Bug libstdc++/35173] New: trivial long -> int implicit conversions mrs at apple dot com
2008-02-12 20:00 ` [Bug libstdc++/35173] " pinskia at gcc dot gnu dot org
2008-02-12 22:39 ` manu at gcc dot gnu dot org
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).