diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2021-01-05 00:01:08 +0100 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2021-01-26 22:49:11 +0100 |
| commit | 54b6c78979c2a131a55c5439937e5e6bd8584b06 (patch) | |
| tree | 3d99eaa76ad40b9f427113be38204d3c6dea2a11 /validation | |
| parent | 7b1d4ca6b5ad28ccf8e489c58fe99c00b1436bfb (diff) | |
| download | sparse-dev-54b6c78979c2a131a55c5439937e5e6bd8584b06.tar.gz | |
cmps: canonicalize signed compares with constant
Modify the constants to canonicalize (x < C) to (x <= (C-1)) and
(x <= C) to (x > (C-1)). This choice is partially arbitrary but
1) it's the one with the smallest positive constants,
2) it eliminates all OP_SET_LT & OP_SET_GE with a constant.
A disadvantage of this choice is that we lost some compares with 0:
(x < 0) is now canonicalized into (x <= -1).
Note: Another good choice would be to canonicalize using the
smallest absolute constants. This would keep compares with 0
but would also keep the 4 kinds of comparison.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation')
| -rw-r--r-- | validation/optim/canonical-cmps.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/validation/optim/canonical-cmps.c b/validation/optim/canonical-cmps.c index f42664b2..42801cdc 100644 --- a/validation/optim/canonical-cmps.c +++ b/validation/optim/canonical-cmps.c @@ -10,7 +10,6 @@ _Bool ge_x(int a) { return (a >= 1234) == (a > 1233); } /* * check-name: canonical-cmps * check-command: test-linearize -Wno-decl $file - * check-known-to-fail * * check-output-ignore * check-output-returns: 1 |
