From: Ted Kremenek
Clang's static analysis engine understands the standard noreturn -attribute, which indicates that a call to a given function never returns. -Function prototypes for common functions like exit are typically -annotated with this attribute, as well as a variety of common assertion -handlers. Users can educate the static analyzer about their own custom assertion -handles (thus cutting down on false positives due to false paths) by marking -their own "panic" functions with this attribute.
+attribute. This attribute, which is typically affixed to a function prototype, +indicates that a call to a given function never returns. Function prototypes for +common functions like exit are typically annotated with this attribute, +as well as a variety of common assertion handlers. Users can educate the static +analyzer about their own custom assertion handles (thus cutting down on false +positives due to false paths) by marking their own "panic" functions +with this attribute.While useful, noreturn is not applicable in all cases. Sometimes there are special functions that for all intensive purposes should be considered