NoQ added a comment.

In https://reviews.llvm.org/D35110#1117401, @baloghadamsoftware wrote:

> Sorry, Artem, but it does not work this way. Even if the symbolic expressions 
> are constrained to `[-MAX/4..MAX/4]`, after rearrangement the difference 
> still uses the whole range, thus `m>n` becomes `m-n>0`, where in the false 
> branch the range for `m-n` is `[MIN..0]`. Then if we check `n>=m` the range 
> set is reversed to `[MIN..MIN]U[0..MAX]` which results `UNKNOWN` for `n-m`. 
> It does not solve any of our problems and there is no remedy on the checker's 
> side.


Which expressions are constrained? Why does the difference use the whole range? 
Is it something that could have been fixed by the "enforce that separately" 
part in my old comment:

> iterator-related symbols are all planned to be within range [-2²⁹, -2²⁹], 
> right? So if we subtract one such symbol from another, it's going to be in 
> range [-2³⁰, 2³⁰]. Can we currently infer that? Or maybe we should make the 
> iterator checker to enforce that separately?

?


https://reviews.llvm.org/D35110



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to