In file included from pulse/timeval.c:32:0: pulse/timeval.c: In function 'pa_timeval_add': ./pulsecore/macro.h:303:28: warning: left shift of negative value [-Wshift-negative-value] ? ~(~(type) 0 << (8*sizeof(type)-1)) reported by Ubuntu gcc-6 gcc-6 adds -Wshift-negative-value (enabled by -Wextra) which warns about left shifting a negative value. Such shifts are undefined because they depend on the representation of negative values. also works with -Wshift-overflow=2 Signed-off-by: Peter Meerwald <pmeerw at pmeerw.net> --- src/pulsecore/macro.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h index 1716f81..1e15f4f 100644 --- a/src/pulsecore/macro.h +++ b/src/pulsecore/macro.h @@ -298,14 +298,16 @@ static inline size_t PA_PAGE_ALIGN(size_t l) { #define PA_INT_TYPE_SIGNED(type) (!!((type) 0 > (type) -1)) +#define PA_INT_TYPE_HALF(type) ((type) 1 << (sizeof(type)*8 - 2)) + #define PA_INT_TYPE_MAX(type) \ ((type) (PA_INT_TYPE_SIGNED(type) \ - ? ~(~(type) 0 << (8*sizeof(type)-1)) \ + ? (PA_INT_TYPE_HALF(type) - 1 + PA_INT_TYPE_HALF(type)) \ : (type) -1)) #define PA_INT_TYPE_MIN(type) \ ((type) (PA_INT_TYPE_SIGNED(type) \ - ? (~(type) 0 << (8*sizeof(type)-1)) \ + ? (-1 - PA_INT_TYPE_MAX(type)) \ : (type) 0)) /* We include this at the very last place */ -- 2.7.0