https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115850
Bug ID: 115850 Summary: gcc generates invalid warning Product: gcc Version: 14.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: joseph.weening at gmail dot com Target Milestone: --- The following program generates an invalid warning: warning: ‘s2’ accessing 16 bytes in a region of size 8 The warning disappears if the calls to s1() and s2() are transposed. $ cat bug.i # 0 "bug.c" # 0 "<built-in>" # 0 "<command-line>" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 0 "<command-line>" 2 # 1 "bug.c" struct tt { long b[2][1]; }; void s1(long a[1]); void s2(long b[2][1]); void s3(struct tt *p) { s1(p->b[0]); s2(p->b); } $ gcc -v -save-temps -O2 -c bug.c Using built-in specs. COLLECT_GCC=gcc Target: x86_64-pc-linux-gnu Configured with: ../gcc-14.1.0/configure --prefix=/usr/local/gcc/14.1.0 --disable-multilib --enable-languages=c,c++,fortran --with-gmp=/usr/local/gmp/6.3.0 --with-mpc=/usr/local/mpc/1.3.1 --with-mpfr=/usr/local/mpfr/4.2.1 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 14.1.0 (GCC) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O2' '-c' '-mtune=generic' '-march=x86-64' /n/linux9/gcc/14.1.0/bin/../libexec/gcc/x86_64-pc-linux-gnu/14.1.0/cc1 -E -quiet -v -iprefix /n/linux9/gcc/14.1.0/bin/../lib/gcc/x86_64-pc-linux-gnu/14.1.0/ bug.c -mtune=generic -march=x86-64 -O2 -fpch-preprocess -o bug.i ignoring nonexistent directory "/n/linux9/gcc/14.1.0/bin/../lib/gcc/x86_64-pc-linux-gnu/14.1.0/../../../../x86_64-pc-linux-gnu/include" ignoring duplicate directory "/n/linux9/gcc/14.1.0/bin/../lib/gcc/../../lib/gcc/x86_64-pc-linux-gnu/14.1.0/include" ignoring nonexistent directory "/usr/local/include" ignoring duplicate directory "/n/linux9/gcc/14.1.0/bin/../lib/gcc/../../lib/gcc/x86_64-pc-linux-gnu/14.1.0/include-fixed" ignoring nonexistent directory "/n/linux9/gcc/14.1.0/bin/../lib/gcc/../../lib/gcc/x86_64-pc-linux-gnu/14.1.0/../../../../x86_64-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/local/anaconda/envs/2024.02a-cpu/include /n/linux9/gcc/14.1.0/bin/../lib/gcc/x86_64-pc-linux-gnu/14.1.0/include /n/linux9/gcc/14.1.0/bin/../lib/gcc/x86_64-pc-linux-gnu/14.1.0/include-fixed /n/linux9/gcc/14.1.0/bin/../lib/gcc/../../include /usr/include End of search list. COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O2' '-c' '-mtune=generic' '-march=x86-64' /n/linux9/gcc/14.1.0/bin/../libexec/gcc/x86_64-pc-linux-gnu/14.1.0/cc1 -fpreprocessed bug.i -quiet -dumpbase bug.c -dumpbase-ext .c -mtune=generic -march=x86-64 -O2 -version -o bug.s GNU C17 (GCC) version 14.1.0 (x86_64-pc-linux-gnu) compiled by GNU C version 14.1.0, GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.16.1-GMP warning: GMP header version 6.3.0 differs from library version 6.2.0. warning: MPFR header version 4.2.1 differs from library version 4.1.0-p9. warning: MPC header version 1.3.1 differs from library version 1.2.1. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: b43844a30dca62c6d3913d953be6fb40 bug.c: In function ‘s3’: bug.c:11:3: warning: ‘s2’ accessing 16 bytes in a region of size 8 []8;;https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/Warning-Options.html#index-Wno-stringop-overflow-Wstringop-overflow=]8;;] 11 | s2(p->b); | ^~~~~~~~ bug.c:11:3: note: referencing argument 1 of type ‘long int[2][1]’ bug.c:7:6: note: in a call to function ‘s2’ 7 | void s2(long b[2][1]); | ^~ COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O2' '-c' '-mtune=generic' '-march=x86-64' as -v --64 -o bug.o bug.s GNU assembler version 2.42 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.42 COMPILER_PATH=/n/linux9/gcc/14.1.0/bin/../libexec/gcc/x86_64-pc-linux-gnu/14.1.0/:/n/linux9/gcc/14.1.0/bin/../libexec/gcc/ LIBRARY_PATH=/n/linux9/gcc/14.1.0/bin/../lib/gcc/x86_64-pc-linux-gnu/14.1.0/:/n/linux9/gcc/14.1.0/bin/../lib/gcc/:/n/linux9/gcc/14.1.0/bin/../lib/gcc/x86_64-pc-linux-gnu/14.1.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/local/anaconda/envs/2024.02a-cpu/lib/:/n/linux9/gcc/14.1.0/bin/../lib/gcc/x86_64-pc-linux-gnu/14.1.0/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O2' '-c' '-mtune=generic' '-march=x86-64'