On 21/04/2016 13:25, Pedro Giffuni wrote:
On 21/04/2016 13:12, Hans Petter Selasky wrote:
On 04/21/16 19:59, Pedro Giffuni wrote:
On 21/04/2016 12:52, Juli Mallett wrote:
On Thu, Apr 21, 2016 at 10:22 AM, Hans Petter Selasky
<h...@selasky.org> wrote:
On 04/21/16 19:12, Ngie Cooper wrote:
Hi,
Then there should be an assertion or something else of that sort (I
forget if we have a __builtin_unreachable()-alike macro in the kernel;
the lint(1)y NOTREACHED isn't as nice as actual code) so that it is
apparent to a human that this case cannot be reached. The presence of
a do-nothing default case is not typically indicative of unreachable
code.
We do have __unreachable() in cdefs.h
It should work with both GCC and clang.
Pedro.
I don't see anyone using __unreachable() yet in the kernel. Do you
recommend it over a KASSERT() ?
It's a rather recent addition (I added it after checking NetBSD's cdefs).
It is meant mostly for the compiler/static analyzers.
From the clang documentation:
"The __builtin_unreachable() builtin has completely undefined
behavior. Since it has undefined behavior, it is a statement that it
is never reached and the optimizer can take advantage of this to
produce better code. This builtin takes no arguments and produces a
void result."
Replying to myself with the better description[1]:
"__builtin_unreachable is used to indicate that a specific point in the
program cannot be reached, even if the compiler might otherwise think it
can. This is useful to improve optimization and eliminates certain
warnings. "
Pedro.
[1]
http://clang.llvm.org/docs/LanguageExtensions.html#builtin-functions
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"