https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93384
--- Comment #25 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Yeah, I think that is a good summary. I wasn't sure if 2) is safe, but perhaps it is if it comes from analysis of the function body (for user attributes, I believe I've seen (or even wrote, don't remember) an alias on error(3) function, where error itself can't be noreturn, but the alias would be something we always call with arguments that will make it noreturn, and that is something we don't want to propagate in between the decls). And yes, for 3) that is something I've mentioned above, though not in the form of looking up the assembler name, but walking the aliases, though I guess looking up the assembler name is better. Dunno if we can punt if we don't find a suitable name in a certain number of attempts, I see most of the callers that can cope with the function returning NULL, but at least one spot asserts that it returns non-NULL.