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

            Bug ID: 102248
           Summary: -Wstringop-overflow false positive
           Product: gcc
           Version: 10.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: eugene.chereshnev at intel dot com
  Target Milestone: ---

Created attachment 51428
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51428&action=edit
Preprocessed file

Observing false positive with 10.x versions, 9.x and 11.x versions are good.
Reproduced only with -O3.

$ g++ --version
g++ (GCC) 10.3.0
Copyright (C) 2020 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 1.cpp
#include <cstdint>

struct Foo {
    int8_t a, b;

    Foo(): a(0), b(1) {}
};

struct Bar {
    Bar();

    Foo x0;
    Foo x1;
    Foo x2;
    Foo x3;
};


void foo(Foo&);

Bar::Bar() { foo(x0); }
$ g++ -c -O3 1.cpp
In constructor ‘Foo::Foo()’,
    inlined from ‘Bar::Bar()’ at 1.cpp:21:10:
1.cpp:6:21: warning: writing 8 bytes into a region of size 2
[-Wstringop-overflow=]
    6 |     Foo(): a(0), b(1) {}
      |                     ^
1.cpp: In constructor ‘Bar::Bar()’:
1.cpp:12:9: note: at offset 0 to object ‘Bar::x0’ with size 2 declared here
   12 |     Foo x0;
      |         ^~

Godbolt link: https://godbolt.org/z/W7e4PqK7n
  • [Bug c++/102248] New: -Wst... eugene.chereshnev at intel dot com via Gcc-bugs

Reply via email to