https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114818
Bug ID: 114818 Summary: 'constructor', 'destructor' function attributes vs. 'extern' Product: gcc Version: 14.0 Status: UNCONFIRMED Keywords: diagnostic, documentation Severity: minor Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: tschwinge at gcc dot gnu.org Target Milestone: --- By chance, I noticed that when 'constructor', 'destructor' function attributes appear on an 'extern' function declaration, then that is (a) accepted without any diagnostic by the C, C++ front ends, but (b) no 'constructor', 'destructor' calls are emitted. (Doesn't matter whether the function does or doesn't get linked in.) Assuming that is the expected behavior, should we update 'gcc/doc/extend.texi' for this, and implement a diagnostic (warning or even error, enabled by default)? I found that in 'gcc/doc/tm.texi', '@node Initialization' we state: [...] Each object file that defines an initialization function also puts a word in the constructor section to point to that function. [...] Note "defines", which excludes 'extern'.