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'

Reply via email to