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

            Bug ID: 112747
           Summary: #pragma GCC diagnostic ignored "-Wstringop-overflow"
                    has no effect in pre-compiled headers.
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: pch
          Assignee: unassigned at gcc dot gnu.org
          Reporter: piannetta at kalrayinc dot com
  Target Milestone: ---

==> t.c <==
#include "t.h"

extern char a[10];

int g ()
{
  return f(a, 11, 1);
}

==> t.h <==
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstringop-overflow"
static char f (char *a, int idx, char v) { return a[idx] = v; }
#pragma GCC diagnostic pop

=====================================

$ gcc t.c -O2 -c
$ gcc t.h -O2
$ gcc t.c -O2
In function 'f',
    inlined from 'g' at t.c:8:10:
t.h:3:58: warning: writing 1 byte into a region of size 0
[-Wstringop-overflow=]
t.c: In function 'g':
t.c:4:13: note: at offset 11 into destination object 'a' of size 10

=====================================

-Wstringop-overflow is not ignored as it ought to be when a pre-compiled header
exists. This cause the test
gcc/libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/minimal.cc
from libstdc++v3 to fail.

I can reproduce the bug on gcc12, gcc13, gcc14 and trunk.
  • [Bug pch/112747] New: #pragma ... piannetta at kalrayinc dot com via Gcc-bugs

Reply via email to