diff -up libdca-0.0.5/libao/Makefile.in.aliasing libdca-0.0.5/libao/Makefile.in --- libdca-0.0.5/libao/Makefile.in.aliasing 2007-11-02 21:16:15.000000000 +0100 +++ libdca-0.0.5/libao/Makefile.in 2007-11-02 21:16:46.000000000 +0100 @@ -172,7 +172,7 @@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -AM_CFLAGS = $(OPT_CFLAGS) +AM_CFLAGS = $(OPT_CFLAGS) -fno-strict-aliasing AM_CPPFLAGS = -I$(top_srcdir)/include noinst_LTLIBRARIES = libao.la libao_la_SOURCES = audio_out.c audio_out_null.c audio_out_float.c \ diff -up libdca-0.0.5/libao/Makefile.am.aliasing libdca-0.0.5/libao/Makefile.am --- libdca-0.0.5/libao/Makefile.am.aliasing 2007-04-08 10:23:11.000000000 +0200 +++ libdca-0.0.5/libao/Makefile.am 2007-11-02 21:16:08.000000000 +0100 @@ -1,4 +1,4 @@ -AM_CFLAGS = $(OPT_CFLAGS) +AM_CFLAGS = $(OPT_CFLAGS) -fno-strict-aliasing AM_CPPFLAGS = -I$(top_srcdir)/include noinst_LTLIBRARIES = libao.la diff -up libdca-0.0.5/libdca/bitstream.h.aliasing libdca-0.0.5/libdca/bitstream.h --- libdca-0.0.5/libdca/bitstream.h.aliasing 2007-04-08 11:08:35.000000000 +0200 +++ libdca-0.0.5/libdca/bitstream.h 2007-11-02 21:20:07.000000000 +0100 @@ -29,22 +29,38 @@ #else -# define swab32(x)\ -((((uint8_t*)&x)[0] << 24) | (((uint8_t*)&x)[1] << 16) | \ - (((uint8_t*)&x)[2] << 8) | (((uint8_t*)&x)[3])) +static inline uint32_t swab32(uint32_t x) { + union { + uint32_t x32; + uint8_t x8[4]; + } u; + u.x32 = x; + return u.x8[0] << 24 | u.x8[1] << 16 | u.x8[2] << 8 | u.x8[3]; +} #endif #ifdef WORDS_BIGENDIAN -# define swable32(x)\ -((((uint8_t*)&x)[0] << 16) | (((uint8_t*)&x)[1] << 24) | \ - (((uint8_t*)&x)[2]) | (((uint8_t*)&x)[3] << 8)) +static inline uint32_t swable32(uint32_t x) { + union { + uint32_t x32; + uint8_t x8[4]; + } u; + u.x32 = x; + return u.x8[0] << 16 | u.x8[1] << 24 | u.x8[2] | u.x8[3] << 8; +} #else -# define swable32(x)\ -((((uint32_t)x) >> 16) | (((uint32_t)x) << 16)) +static inline uint32_t swable32(uint32_t x) { + union { + uint32_t x32; + uint16_t x16[2]; + } u; + u.x32 = x; + return u.x16[0] << 16 | u.x16[1]; +} #endif