https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109449

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
As expected that causes

FAIL: c-c++-common/Wstringop-truncation.c  -std=gnu++98 bug 77293 (test for
warn
ings, line 271)
FAIL: g++.dg/warn/Wplacement-new-size-7.C  -std=gnu++98  (test for warnings,
lin
e 49)
FAIL: g++.dg/warn/Wplacement-new-size-7.C  -std=gnu++98  (test for warnings,
lin
e 50)
FAIL: g++.dg/warn/Wplacement-new-size-7.C  -std=gnu++98  (test for warnings,
lin
e 51)
FAIL: g++.dg/warn/Wplacement-new-size-7.C  -std=gnu++98  (test for warnings,
lin
e 55)
FAIL: g++.dg/warn/Wplacement-new-size-7.C  -std=gnu++98  (test for warnings,
line 56)
FAIL: g++.dg/warn/Wplacement-new-size-7.C  -std=gnu++98  (test for warnings,
line 57)
FAIL: g++.dg/warn/Wplacement-new-size-7.C  -std=gnu++98  (test for warnings,
line 61)
FAIL: g++.dg/warn/Wplacement-new-size-7.C  -std=gnu++98  (test for warnings,
line 62)
FAIL: g++.dg/warn/Wplacement-new-size-7.C  -std=gnu++98  (test for warnings,
line 63)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 28)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 29)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 30)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 50)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 51)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 52)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 53)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 127)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 128)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 129)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 131)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 132)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 135)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 136)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 137)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 139)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 140)
FAIL: gcc.dg/Wstringop-overflow-37.c note (test for warnings, line 194)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 195)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 213)
FAIL: gcc.dg/Wstringop-overflow-37.c note (test for warnings, line 230)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 231)
FAIL: gcc.dg/Wstringop-overflow-37.c note (test for warnings, line 236)
FAIL: gcc.dg/Wstringop-overflow-37.c  (test for warnings, line 237)
FAIL: gcc.dg/Wstringop-overflow-37.c (test for excess errors)
FAIL: gcc.dg/Wstringop-overflow-40.c  (test for warnings, line 103)
FAIL: gcc.dg/Wstringop-overflow-40.c (test for excess errors)
FAIL: gcc.dg/pr56837.c scan-tree-dump-times optimized "memset ..c, 68, 16384.;"
1
FAIL: gcc.dg/warn-strnlen-no-nul.c  (test for warnings, line 150)
FAIL: gcc.dg/warn-strnlen-no-nul.c  (test for warnings, line 154)
FAIL: c-c++-common/Wstringop-truncation.c  -Wc++-compat  bug 77293 (test for
warnings, line 271)

as those all explicitely test for this "misbehavior" (aka _FORTIFY_SOURCE=2).
Note -Wstringop-overflow=1 diagnoses this the same.

The workaround in the source would be to use for example

    uint8_t *tdp = (uint8_t *)drlg.transDirMap;

or simply use two-dimensional array accesses directly to transDirMap.


So as a summary, the diagnostic works this way by design (a design not
everyone agrees to, me included, esp. for the case of multidimensional
arrays).

Reply via email to