https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96078
Bug ID: 96078 Summary: [10/11 Regression] flatten attribute on constructor and destructor causes spurious warning Product: gcc Version: 10.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: rs2740 at gmail dot com Target Milestone: --- struct A { [[gnu::flatten]] A() {} [[gnu::flatten]] ~A() {} }; A a; Produces no warnings with GCC 9 but on GCC 10 and trunk warns: <source>:3:22: warning: 'flatten' attribute is ignored on aliases [-Wattributes] 3 | [[gnu::flatten]] ~A() {} | ^ <source>:2:22: warning: 'flatten' attribute is ignored on aliases [-Wattributes] 2 | [[gnu::flatten]] A() {} | ^ The warning appears to be introduced by the fix to PR92372. Marking `A` as `final` eliminates the warnings, as does giving it an virtual base class. Presumably the issue is that in the problematic case one of the complete/base object c/dtors was treated as an alias for the other?