diff options
author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2021-01-02 10:25:52 +0100 |
---|---|---|
committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2021-04-18 13:11:43 +0200 |
commit | e1f6c18b602e9d5c61100c57bf675484db6c8826 (patch) | |
tree | d01e007c2434007fafb2d5260380edb31e6751d8 | |
parent | eb4cdd21b7d0cedbbeff7f70e24473706ccce5a6 (diff) | |
download | sparse-e1f6c18b602e9d5c61100c57bf675484db6c8826.tar.gz |
add testcases for simplification of casts.
and remove one that didn't made much sense.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r-- | validation/eval/not-cast-bool.c | 15 | ||||
-rw-r--r-- | validation/eval/not-cast-float.c | 15 | ||||
-rw-r--r-- | validation/optim/and-extendx.c | 24 | ||||
-rw-r--r-- | validation/optim/trunc-not0.c | 21 |
4 files changed, 51 insertions, 24 deletions
diff --git a/validation/eval/not-cast-bool.c b/validation/eval/not-cast-bool.c new file mode 100644 index 00000000..af422412 --- /dev/null +++ b/validation/eval/not-cast-bool.c @@ -0,0 +1,15 @@ +static _Bool foo(void) +{ + unsigned char c = 1; + _Bool b = ~c; + return b; +} + +/* + * check-name: not-cast-bool + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-returns: 1 + */ diff --git a/validation/eval/not-cast-float.c b/validation/eval/not-cast-float.c new file mode 100644 index 00000000..445b91d7 --- /dev/null +++ b/validation/eval/not-cast-float.c @@ -0,0 +1,15 @@ +static int foo(void) +{ + int i = 123; + float x = ~i; + return (x < 0); +} + +/* + * check-name: eval-bool-zext-neg + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-returns: 1 + */ diff --git a/validation/optim/and-extendx.c b/validation/optim/and-extendx.c deleted file mode 100644 index 5c181c93..00000000 --- a/validation/optim/and-extendx.c +++ /dev/null @@ -1,24 +0,0 @@ -typedef unsigned short u16; -typedef short s16; -typedef unsigned int u32; -typedef int s32; -typedef unsigned long long u64; -typedef long long s64; - -u64 ufoo(int x) -{ - return x & 0x7fff; -} - -u64 sfoo(int x) -{ - return x & 0x7fff; -} - -/* - * check-name: and-extend - * check-command: test-linearize -Wno-decl $file - * - * check-output-ignore - * check-output-contains: and\\.64.*0x7fff - */ diff --git a/validation/optim/trunc-not0.c b/validation/optim/trunc-not0.c new file mode 100644 index 00000000..febed165 --- /dev/null +++ b/validation/optim/trunc-not0.c @@ -0,0 +1,21 @@ +typedef __INT32_TYPE__ int32; +typedef __INT64_TYPE__ int64; + +static _Bool sfoo(int64 a) { return ((int32) ~a) == (~ (int32)a); } +static _Bool sbar(int64 a) { return (~(int32) ~a) == (int32)a; } + + +typedef __UINT32_TYPE__ uint32; +typedef __UINT64_TYPE__ uint64; + +static _Bool ufoo(uint64 a) { return ((uint32) ~a) == (~ (uint32)a); } +static _Bool ubar(uint64 a) { return (~(uint32) ~a) == (uint32)a; } + +/* + * check-name: trunc-not0 + * check-command: test-linearize -Wno-decl $file + * check-known-to-fail + * + * check-output-ignore + * check-output-returns: 1 + */ |