MP_ENSURE(_d, _sz); \
} \
_d->v[_o++] = MPW(_i); \
- if (_i <= MPW_MAX) \
+ if (MUFFLE_WARNINGS_EXPR( \
+ CLANG_WARNING("-Wtautological-constant-out-of-range-compare"), \
+ _i <= MPW_MAX)) \
break; \
else \
- MUFFLE_WARNINGS_STMT(GCC_WARNING("-Wdiv-by-zero"), { \
+ MUFFLE_WARNINGS_STMT(GCC_WARNING("-Wdiv-by-zero") \
+ CLANG_WARNING("-Wdivision-by-zero"), { \
_i /= (type)MPW_MAX + 1; \
}); \
} \
MP_ENSURE(_d, _sz); \
} \
_d->v[_o++] = MPW(-_i); \
- if (_i >= -MPW_MAX) \
+ if (MUFFLE_WARNINGS_EXPR( \
+ CLANG_WARNING("-Wtautological-constant-out-of-range-compare"), \
+ _i >= -MPW_MAX)) \
break; \
else \
- MUFFLE_WARNINGS_STMT(GCC_WARNING("-Wdiv-by-zero"), { \
+ MUFFLE_WARNINGS_STMT(GCC_WARNING("-Wdiv-by-zero") \
+ CLANG_WARNING("-Wdivision-by-zero"), { \
_i /= (type)MPW_MAX + 1; \
}); \
} \
/* --- Do all the arithmetic in negative numbers --- */ \
\
while (_v < _vl && _max > 0) { \
- _i -= *_v << _s; \
+ _i -= (type)*_v << _s; \
_s += MPW_BITS; \
_v++; \
_max /= (mpd)MPW_MAX + 1; \