On Tue, 2016-02-16 at 00:15 +0100, Peter Meerwald wrote: > 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 <[email protected]> > --- > 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 */
The logic checks out, so as long as it doesn't break anything in practice, ack. :) -- Arun _______________________________________________ pulseaudio-discuss mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
