https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91707
Bug ID: 91707 Summary: spurious stringop-overflow warning with -fsanitize=undefined Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: sanitizer Assignee: unassigned at gcc dot gnu.org Reporter: uecker at eecs dot berkeley.edu CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org, jakub at gcc dot gnu.org, kcc at gcc dot gnu.org, marxin at gcc dot gnu.org Target Milestone: --- Created attachment 46854 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46854&action=edit test case With recent GCC versions from git there is a spurious warning when the undefined behavior sanitizer is used. $ ../gcc_build_clean/gcc/xgcc -B ../gcc_build_clean/gcc -Wall -O2 -fsanitize=undefined -c strop.c In function ‘real_from_complex_dims’, inlined from ‘md_test’ at strop.c:14:2: strop.c:7:11: warning: writing 8 bytes into a region of size 0 [-Wstringop-overflow=] 7 | odims[0] = 2; | ~~~~~~~~~^~~ $ ../gcc_build_clean/gcc/xgcc --version xgcc (GCC) 10.0.0 20190907 (experimental) Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ cat strop.c extern void md_copy_dims(unsigned int D, long odims[D], const long idims[D]); extern void md_test(unsigned int D, const long idims[D]); static void real_from_complex_dims(unsigned int D, long odims[D + 1], const long idims[D]) { odims[0] = 2; md_copy_dims(D, odims + 1, idims); } void md_test(unsigned int D, const long idims[D]) { long dimsR[D + 1]; real_from_complex_dims(D, dimsR, idims); long strsR[D + 1]; (void)strsR; return; }