This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/34515] -Wstrict-overflow produces extra warnings
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 17 Dec 2007 21:34:15 -0000
- Subject: [Bug middle-end/34515] -Wstrict-overflow produces extra warnings
- References: <bug-34515-10490@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #3 from pinskia at gcc dot gnu dot org 2007-12-17 21:34 -------
Hmm:
if (bits == 0) { register int cnt; if (quot == 0) cnt = 32; else do {
USItype __cbtmp; __asm__ ("bsrl %1,%0" : "=r" (__cbtmp) : "rm" ((USItype)
(quot))); (cnt) = __cbtmp ^ 31; } while (0); exponent -= cnt; if (32 - cnt >
53) { used = 53 + cnt; retval[0] = quot >> (32 - used); bits = 53 + 1; } else {
if ((((53) + ((32) - 1)) / (32)) > 1) retval[1] = 0; retval[0] = quot; bits =
-cnt; } } else if (bits + 32 <= 53) __mpn_lshift_1 (retval, (((53) + ((32) -
1)) / (32)), 32, quot); else { used = 53 - bits; if (used > 0) __mpn_lshift_1
(retval, (((53) + ((32) - 1)) / (32)), used, quot); } bits += 32;
Maybe this is not a compiler bug. There are at least two expressions where the
first warning is ovbious correct.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34515