diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2021-04-18 00:45:43 +0200 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2021-04-18 17:18:57 +0200 |
| commit | 48eb2ca449b7f8e8e0684a2d92c8a1d0224861da (patch) | |
| tree | 18fd21d390a3d696e77fe5e78233fcfc4b019aa2 /validation/memops | |
| parent | eb4cdd21b7d0cedbbeff7f70e24473706ccce5a6 (diff) | |
| download | sparse-dev-48eb2ca449b7f8e8e0684a2d92c8a1d0224861da.tar.gz | |
canonicalize constant signed compares toward zero
Currently, signed compares against a constant are canonicalized
toward the smallest possible constant. So, the following
canonicalization are done:
x < 256 --> x <= 255
x < -2047 --> x <= -2048
This has two advantages:
1) it maximalizes the number of constants possible for a given bit size.
2) it allows to remove all < and all >=
But it has also a serious disadvantages: a simple comparison against
zero, like:
x >= 0
is canonicalized into:
x > -1
Which can be more costly for some architectures if translated as such ,
is also less readable than the version using 0 and is also sometimes
quite more complicated to match in some simplification patterns.
So, canonicalize it using 'towards 0' / using the smallest constant
in absolute value.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/memops')
0 files changed, 0 insertions, 0 deletions
