[Bug rtl-optimization/82103] New: spurious stringop-overflow warning
arnd at linaro dot org
gcc-bugzilla@gcc.gnu.org
Mon Sep 4 23:07:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82103
Bug ID: 82103
Summary: spurious stringop-overflow warning
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: arnd at linaro dot org
Target Milestone: ---
On a current snapshot (tested with r251683), I get a warning that seems
unhelpful and probably should not be there.
This happened in exactly one file from the Linux kernel so far, on any 32-bit
target:
$ arm-linux-gnueabi-gcc-8.0.0 -Werror -O2 -march=armv7-a -c -Wall
hns_ethtool-b.c
hns_ethtool-b.c: In function 'g':
hns_ethtool-b.c:9:7: error: 'memset' specified size 4294967295 exceeds maximum
object size 2147483647 [-Werror=stringop-overflow=]
memset(__p, v, __n); \
^~~~~~~~~~~~~~~~~~~
hns_ethtool-b.c:18:2: note: in expansion of macro 'memset'
memset(&data[frame_size / 2], 0, frame_size / 2 - 1);
^~~~~~
---
extern void f(void);
extern void *memset();
#define memset(p, v, n) \
({ \
void *__p = p; \
unsigned int __n = n; \
if (__n != 0) \
memset(__p, v, __n); \
(__p); \
})
void g(char *data, unsigned int frame_size, _Bool c)
{
memset(data, 5, frame_size);
if (c)
f();
memset(&data[frame_size / 2], 0, frame_size / 2 - 1);
memset(&data[frame_size / 2 + 0], 4, frame_size / 2 - 11);
}
More information about the Gcc-bugs
mailing list