http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53528
--- Comment #5 from Michal Malecki <ethouris at gmail dot com> 2012-07-26 20:18:36 UTC --- Looks nice. Is that a big deal if you also make a standard [[noreturn]] attribute simply an alias to [[gnu::noreturn]]? As far as I know the standard, they should behave exactly the same way. Another thing is that I think this should work, according to the standard: void quit [[gnu::noreturn]] () { throw 0; } And it doesn't with this patch. Of course, [[gnu::noreturn]] void quit()... works and is more intuitive, but both are required by the standard. I guess the difference is when you'd do this: int quit [[noreturn]](), pass(); // pass does return! while here both are noreturn: [[noreturn]] int quit(), pass();