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

            Bug ID: 118107
           Summary: false warning: "${inactive union member} may be used
                    uninitialized" (in constructor call activating
                    another, empty struct member, as union member)
           Product: gcc
           Version: 14.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: giel+gcc at mortis dot eu
  Target Milestone: ---

Created attachment 59909
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59909&action=edit
reproduction scenario

Attached I have a completely cut down example that triggers a false positive
warning "X may be uninitialized". Also the same on compiler explorer:
https://godbolt.org/z/ErWaT5KMq

It only happens with -O1 *and* -fsanitize=undefined (but *not*
-fsanitize=undefined,address) (and -Wall -Wextra of course). When increasing
code size it needs -O2 at least to trigger.

The warning triggers on a call to the default constructor. Which activates an
*empty struct* as a union member. But the warning complains about the
*inactive* (non-empty) union member (maybe) being used uninitialized.

Reply via email to