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

            Bug ID: 103159
           Summary: -Wuninitialized should not depend on optimization
                    level
           Product: gcc
           Version: 10.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mathieu.malaterre at gmail dot com
  Target Milestone: ---

Consider the following:

```
% cat undef.cxx
#include <iostream>

class C
{
    int I;
public:
    int getI() { return I; }
};

int main()
{
    C c;
    std::cout << c.getI() << std::endl;

    return 0;
}
```

It is counter-intuitive to explicitely use -O2 to have a warning reported.
Compare the output of:

```
% g++ -o undef -Wuninitialized undef.cxx && ./undef
0
```

While:

```
% g++ -O2 -o undef -Wuninitialized undef.cxx && ./undef
undef.cxx: In function ‘int main()’:
undef.cxx:7:25: warning: ‘c.C::I’ is used uninitialized in this function
[-Wuninitialized]
    7 |     int getI() { return I; }
      |                         ^
0
```

Reply via email to