This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/48267] New: incorrect signed overflow warning when a pointer cannot possibly overflow
- From: "eggert at gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 24 Mar 2011 07:58:10 -0000
- Subject: [Bug c/48267] New: incorrect signed overflow warning when a pointer cannot possibly overflow
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48267
Summary: incorrect signed overflow warning when a pointer
cannot possibly overflow
Product: gcc
Version: 4.5.2
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: c
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: eggert@gnu.org
I ran into this problem when compiling the GNU Emacs trunk with a GCC
4.5.2 that I built on RHEL 5.5 (x86-64). I narrowed it down to the
following stripped-down test case. This smells different from the previous
bug report I filed in this area (PR48228) on the same platform.
When I compile the following program with "gcc -S -Wstrict-overflow -O2"
GCC reports "warning: assuming pointer wraparound does not occur when comparing
P +- C1 with P +- C2". This warning is incorrect, since
signed overflow is obviously impossible in this function: the only
pointers computed are head_table and head_table + 1, which are both
in range. Changing the "+ 1" to "+ 7" generates even more warnings,
though the program is still correct.
int head_table[7];
int
foo (void)
{
const int *p;
int x = 0;
for (p = head_table; p < head_table + 1; p++)
x ^= *p;
return x;
}