diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-12-17 01:39:43 +0100 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2021-04-19 00:56:42 +0200 |
| commit | 94750498b1d3ef03fd78920b70e7330072dbb4ed (patch) | |
| tree | 3b31f4eac1903318fdc76bbd765a787167231313 /validation/eval | |
| parent | 98075702ca78ff79e568a6b8004ee5fad7b0bfbe (diff) | |
| download | sparse-dev-94750498b1d3ef03fd78920b70e7330072dbb4ed.tar.gz | |
remove early simplification of casts during evaluation
The current code will simplify away some casts at evaluation time
but doesn't take in account some special cases:
* (bool)~<int> is not equivalent to ~(bool)<int> (anything not all 0 or 1)
* (float)~<int> is not equivalent to ~(float)<int> which doesn't make sense.
* (int)(float)<int> is not a no-op if the (float) overflows
This kind of simplification is better done on the IR where the different
kind of casts correspond to distinct instructions.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/eval')
| -rw-r--r-- | validation/eval/not-cast-bool.c | 1 | ||||
| -rw-r--r-- | validation/eval/not-cast-float.c | 1 |
2 files changed, 0 insertions, 2 deletions
diff --git a/validation/eval/not-cast-bool.c b/validation/eval/not-cast-bool.c index af422412..acd8bbf2 100644 --- a/validation/eval/not-cast-bool.c +++ b/validation/eval/not-cast-bool.c @@ -8,7 +8,6 @@ static _Bool foo(void) /* * 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 index 445b91d7..d474d69b 100644 --- a/validation/eval/not-cast-float.c +++ b/validation/eval/not-cast-float.c @@ -8,7 +8,6 @@ static int foo(void) /* * check-name: eval-bool-zext-neg * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-returns: 1 |
