sval: type: use type_bits() through out.
authorDan Carpenter <dan.carpenter@oracle.com>
Mon, 19 Nov 2012 16:32:33 +0000 (19 19:32 +0300)
committerDan Carpenter <dan.carpenter@oracle.com>
Mon, 19 Nov 2012 18:47:47 +0000 (19 21:47 +0300)
This changes things a little because sval_bits() used to assume an int
if the type wasn't specified but type_bits() returns zero.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch_sval.c
smatch_type.c

index d91d426..631503a 100644 (file)
@@ -84,18 +84,12 @@ int sval_signed(sval_t sval)
 
 int sval_bits(sval_t sval)
 {
-       if (!sval.type)
-               return 32;
-       return sval.type->bit_size;
+       return type_bits(sval.type);
 }
 
 int sval_positive_bits(sval_t sval)
 {
-       if (!sval.type)
-               return 31;
-       if (sval_signed(sval))
-               return sval.type->bit_size - 1;
-       return sval.type->bit_size;
+       return type_positive_bits(sval.type);
 }
 
 int sval_bits_used(sval_t sval)
index 3cc6d67..614235c 100644 (file)
@@ -36,8 +36,8 @@ int type_positive_bits(struct symbol *type)
        if (!type)
                return 0;
        if (type_unsigned(type))
-               return type->bit_size;
-       return type->bit_size - 1;
+               return type_bits(type);
+       return type_bits(type) - 1;
 }
 
 static struct symbol *get_binop_type(struct expression *expr)
@@ -302,11 +302,7 @@ sval_t sval_type_max(struct symbol *base_type)
        if (!base_type || !base_type->bit_size)
                return ret;
 
-       if (type_unsigned(base_type))
-               ret.value = (~0ULL) >> (64 - base_type->bit_size);
-       else
-               ret.value = (~0ULL) >> (64 - (base_type->bit_size - 1));
-
+       ret.value = (~0ULL) >> (64 - type_positive_bits(base_type));
        return ret;
 }
 
@@ -323,7 +319,7 @@ sval_t sval_type_min(struct symbol *base_type)
                return ret;
        }
 
-       ret.value = (~0ULL) << (base_type->bit_size - 1);
+       ret.value = (~0ULL) << type_positive_bits(base_type);
 
        return ret;
 }
@@ -335,7 +331,7 @@ int nr_bits(struct expression *expr)
        type = get_type(expr);
        if (!type)
                return 0;
-       return type->bit_size;
+       return type_bits(type);
 }
 
 int is_static(struct expression *expr)