https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68334
--- Comment #1 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- I don't see any difference between declaring the function noreturn (or pure, or const, or returning non-aliased memory like malloc, or ...) and declaring it to have a certain type. In both cases, if overriding at link time is allowed, the overriding copy must still have the declared property.