diff options
author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2019-09-25 20:47:28 +0200 |
---|---|---|
committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2019-09-30 03:38:41 +0200 |
commit | 6d37de7ad9804f1a606839346101f2425ed86a13 (patch) | |
tree | b70bb4ded54ee8f7308b6688e32eb5c9be3f037c | |
parent | 2b96cd804dc7e4b5f6a0aae62c1962bd6b2caae9 (diff) | |
download | sparse-6d37de7ad9804f1a606839346101f2425ed86a13.tar.gz |
add test for enum sign extension
In a declaration like:
enum {
a = 0x80000000,
b = -1,
}
the underlying type should be long and b's value should be
0xffffffffffffffff (on a 64-bit machine) but is 0xffffffff.
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r-- | validation/enum-sign-extend.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/validation/enum-sign-extend.c b/validation/enum-sign-extend.c new file mode 100644 index 00000000..9dfbc5eb --- /dev/null +++ b/validation/enum-sign-extend.c @@ -0,0 +1,13 @@ +enum num { + a = 0x80000000, + b = -1, +}; + +_Static_assert([typeof(b)] == [long], "type"); +_Static_assert(b == -1L, "value"); + +/* + * check-name: enum-sign-extend + * check-command: sparse -m64 $file + * check-known-to-fail + */ |