From c89862660bd3845ace7977480db3a43dc80475f4 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Tue, 12 Apr 2011 13:13:27 -0400 Subject: optimize ntohl etc. in terms of bswap functions we can do this without violating the namespace now that they are macros/inline functions rather than extern functions. the motivation is that gcc was generating giant, slow, horrible code for the old functions, and now generates a single byte-swapping instruction. --- src/network/ntohl.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/network/ntohl.c') diff --git a/src/network/ntohl.c b/src/network/ntohl.c index 64379196..d6fce459 100644 --- a/src/network/ntohl.c +++ b/src/network/ntohl.c @@ -1,10 +1,8 @@ #include +#include uint32_t ntohl(uint32_t n) { - union { - uint32_t i; - uint8_t b[4]; - } u = { n }; - return (u.b[0]<<24) | (u.b[1]<<16) | (u.b[2]<<8) | u.b[3]; + union { int i; char c; } u = { 1 }; + return u.c ? bswap_32(n) : n; } -- cgit v1.2.1