https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120010
--- Comment #2 from H. Peter Anvin <hpa at zytor dot com> --- Having to omit the name puts us right back into macro hell... having to macroize every function definition. It also violates the principle of least surprise, since __attribute__((used)) works if attached to the variable name in the definition, but not if it is carried with the type; I believe the user has a reasonable expectation that the two syntactical options would behave equivalently.