On Mon, Nov 04, 2019 at 01:30:58PM -0600, Eric Blake wrote: > On 11/2/19 4:24 PM, Richard W.M. Jones wrote: > >For GCC only, define unlikely() macro. Use it on error paths to move > >code out of the hot path. > > > >In the server only, use the debug() macro (don't call nbdkit_debug > >directly). This macro checks the verbose flag and moves the call to > >nbdkit_debug out of the hot path. > >--- > > >+++ b/server/internal.h > >@@ -45,6 +45,17 @@ > > #include "cleanup.h" > > #include "nbd-protocol.h" > >+/* Define unlikely macro, but only for GCC. These are used to move > >+ * debug and error handling code out of hot paths. > >+ */ > >+#if defined(__GNUC__) > >+#define unlikely(x) __builtin_expect (!!(x), 0) > >+#define if_verbose if (unlikely (verbose)) > > Doesn't clang define __GNUC__, at which point all of our supported > compilers (since we require __attribute__((cleanup)) support) also > have __builtin_expect? > > >+#else > >+#define unlikely(x) (x) > >+#define if_verbose if (verbose) > >+#endif > > Or put another way, this #else may be dead code, and the #if may be > unnecessary compared to just unconditionally defining unlikely() and > if_verbose.
Yes ... https://bugs.llvm.org/show_bug.cgi?id=30446 However it seems to be fine in this particular case. I agree the other branch is dead code but it's probably best to keep it for future portability. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://people.redhat.com/~rjones/virt-top _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs