On Sun, 2019-02-03 at 11:49 -0500, Chuck Lever wrote: > > On Feb 3, 2019, at 10:00 AM, Trond Myklebust < > > trondmy@xxxxxxxxxxxxxxx> wrote: > > > > Doesn't gcc's __builtin_bswap32() already compute the result at > > compile > > time when you feed it a constant value? AFAICS it is supposed to, > > which > > is why we use it directly in include/uapi/linux/swab.h instead of > > using > > a special cased __builtin_constant_p(). > > The return type of __builtin_bswap32 is uint32_t, not __be32. > > I will stick with cpu_to_be32(), and simply add the missing > constants. > cpu_to_be32() is a macro that expands to __builtin_bswap32() plus a cast for most architectures on gcc. What I'm saying is that as far as I know, the existing #defines should compile into be32 constants by default, as should any call of the form cpu_to_b32(<const expression>) and htonl(<const expression>). -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@xxxxxxxxxxxxxxx