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).