svn commit: r211130 - head/libexec/rtld-elf/mips
brde at optusnet.com.au
Tue Aug 10 12:00:20 UTC 2010
On Tue, 10 Aug 2010, Stefan Farfeleder wrote:
> On Tue, Aug 10, 2010 at 12:55:38PM +0530, Jayachandran C. wrote:
>> I think there is a problem in sys/mips/include/_endian.h
>> #define __bswap16(x) (__uint16_t)(__is_constant(x) ? \
>> __bswap16_const((__uint16_t)x) : __bswap16_var((__uint16_t)x))
>> #define __bswap32(x) (__uint32_t)(__is_constant(x) ? \
>> __bswap32_const((__uint32_t)x) : __bswap32_var((__uint32_t)x))
>> #define __bswap64(x) (__uint64_t)(__is_constant(x) ? \
>> __bswap64_const((__uint64_t)x) : __bswap64_var((__uint64_t)x))
>> I'm not sure why the cast is needed, but we should have a braces
>> around x, unless I'm completely mistaken.
And not around x in callers.
> I agree. And around the entire expression too.
I agree. But I've never seen a case where foo(x) needs to be (foo(x))
(where foo is not a macro). '()' has highest precedence for expressions
(not sure about for parameter lists) together with `' `->' and '.', and
it is hard to think of an expression with any of the latter close enough
to foo(x) to cause problems.
More information about the svn-src-all