diff options
author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-12-12 01:12:46 +0100 |
---|---|---|
committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-12-14 00:40:52 +0100 |
commit | 1376b07cf3395716bd566afa31631d4753b0d54a (patch) | |
tree | 40fb89a67178992d86c3bf6ec88d485757e011df | |
parent | f010d1ae2a19ea171a2ef64dc92a8c29cd160cbd (diff) | |
download | sparse-1376b07cf3395716bd566afa31631d4753b0d54a.tar.gz |
use bits_mask() for predefined_max()
Creating a bit mask using '(1 << n) - 1' is undefined if
n is as big as the width of an int.
Use the safe helper bits_mask() to create the mask/value
for predefined_max().
Note: predefined_max() is currently correct only for signed types.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r-- | lib.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -46,6 +46,7 @@ #include "target.h" #include "machine.h" #include "version.h" +#include "bits.h" int verbose, optimize_level, optimize_size, preprocessing; int die_if_error = 0; @@ -1142,7 +1143,7 @@ static void predefined_width(const char *name, unsigned bits) static void predefined_max(const char *name, const char *suffix, unsigned bits) { - unsigned long long max = (1ULL << (bits - 1 )) - 1; + unsigned long long max = bits_mask(bits - 1); char buf[32]; snprintf(buf, sizeof(buf), "__%s_MAX__", name); |