2015-05-13 18:09 GMT+02:00 David Chisnall <david.chisn...@cl.cam.ac.uk>: > LLVM uses this quite heavily, in a macro that expands to something equivalent > to assert(0 && "unreachable reached!”) in debug mode and > __builtin_unreachable() in release mode. When you’re debugging, you get > errors if you reach unreachable code and in deployment the compiler gets a > useful hint for optimisation.
Too bad we can't use this trick in our own assert(). You'd need to define assert() like this: #define assert(expr) do { \ if (!(expr)) \ __builtin_unreachable(); \ } while (0) Unfortunately, this would cause the expression to be evaluated, which is not allowed. -- Ed Schouten <e...@nuxi.nl> _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"