diff options
author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-02-21 21:47:24 +0100 |
---|---|---|
committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-12-29 14:39:38 +0100 |
commit | 6d8a3e9551de00258d1663adf87d29954ef96555 (patch) | |
tree | 8525bd25e6e358aa65c29c19daa82c14c33d296b | |
parent | 0f2eee32cae5b87d1871ebafe766c8b65a5234f8 (diff) | |
download | sparse-6d8a3e9551de00258d1663adf87d29954ef96555.tar.gz |
add testcases for exotic enum values
There is more than one complexity in the evaluation of enums.
Add a test for enums with 'exotic' values not covered in other tests.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r-- | validation/enum-type-exotic.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/validation/enum-type-exotic.c b/validation/enum-type-exotic.c new file mode 100644 index 00000000..a17ca0ad --- /dev/null +++ b/validation/enum-type-exotic.c @@ -0,0 +1,28 @@ +enum foobar { + C = (unsigned char)0, + L = 1L, +}; + +unsigned int foo(void); +unsigned int foo(void) +{ +#ifdef __CHECKER__ + _Static_assert([typeof(C)] == [enum foobar], "enum type"); + _Static_assert([typeof(C)] != [unsigned char], "char type"); +#endif + + typeof(C) v = ~0; + return v; +} + +/* + * check-name: enum-type-exotic + * check-description: + * GCC type's for C is 'int' or maybe 'unsigned int' + * but certainly not 'unsigned char' like here. + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-excludes: ret\\.32 *\\$255 + */ |