https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90432
Bug ID: 90432 Summary: Internal compiler error with no_unique_address empty type with constructor call followed by value initialized to non-zero Product: gcc Version: 9.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: david at doublewise dot net Target Milestone: --- The following code causes an internal compiler error: struct empty {}; struct has_empty { [[no_unique_address]] empty brace_or_equal_initialized{}; }; struct has_value { int non_zero = 1; }; struct pair : has_empty, has_value {}; pair a; //pair b = pair(); <source>:14:7: internal compiler error: in output_constructor_regular_field, at varasm.c:5207 14 | pair a; | ^ See it live: https://godbolt.org/z/tvdsmg The error occurs if you comment out a and uncomment b, as well. `brace_or_equal_initialized` can also be initialized by a regular constructor call, the important part is just that the constructor is explicitly called.