* pack.c (swap32): use __builtin_bswap32 on gcc 4.3.0 or later.
(swap64): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26776 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
81b7329d0b
commit
95fd5f33c0
@ -1,3 +1,8 @@
|
|||||||
|
Sun Feb 28 06:58:53 2010 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
|
* pack.c (swap32): use __builtin_bswap32 on gcc 4.3.0 or later.
|
||||||
|
(swap64): ditto.
|
||||||
|
|
||||||
Sun Feb 28 00:38:18 2010 Tanaka Akira <akr@fsij.org>
|
Sun Feb 28 00:38:18 2010 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* pack.c: use integer types with explicit size.
|
* pack.c: use integer types with explicit size.
|
||||||
|
13
pack.c
13
pack.c
@ -15,6 +15,12 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
#define GCC_VERSION_SINCE(major, minor, patchlevel) \
|
||||||
|
(defined(__GNUC__) && !defined(__INTEL_COMPILER) && \
|
||||||
|
((__GNUC__ > (major)) || \
|
||||||
|
(__GNUC__ == (major) && __GNUC_MINOR__ > (minor)) || \
|
||||||
|
(__GNUC__ == (major) && __GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ >= (patchlevel))))
|
||||||
|
|
||||||
#define SIZE16 2
|
#define SIZE16 2
|
||||||
#define SIZE32 4
|
#define SIZE32 4
|
||||||
|
|
||||||
@ -79,6 +85,11 @@ TOKEN_PASTE(swap,x)(xtype z) \
|
|||||||
return r; \
|
return r; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if GCC_VERSION_SINCE(4,3,0)
|
||||||
|
# define swap32(x) __builtin_bswap32(x)
|
||||||
|
# define swap64(x) __builtin_bswap64(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef swap16
|
#ifndef swap16
|
||||||
# define swap16(x) ((((x)&0xFF)<<8) | (((x)>>8)&0xFF))
|
# define swap16(x) ((((x)&0xFF)<<8) | (((x)>>8)&0xFF))
|
||||||
#endif
|
#endif
|
||||||
@ -92,7 +103,7 @@ TOKEN_PASTE(swap,x)(xtype z) \
|
|||||||
|
|
||||||
#ifndef swap64
|
#ifndef swap64
|
||||||
# ifdef HAVE_INT64_T
|
# ifdef HAVE_INT64_T
|
||||||
# define byte_in_64bit(n) ((uint64_t)0xff << n)
|
# define byte_in_64bit(n) ((uint64_t)0xff << (n))
|
||||||
# define swap64(x) ((((x)&byte_in_64bit(0))<<56) \
|
# define swap64(x) ((((x)&byte_in_64bit(0))<<56) \
|
||||||
|(((x)>>56)&0xFF) \
|
|(((x)>>56)&0xFF) \
|
||||||
|(((x)&byte_in_64bit(8))<<40) \
|
|(((x)&byte_in_64bit(8))<<40) \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user