[cfe-dev] [analyzer] Condition optimization improvements for RangeConstraintManager

Denis Petrov via cfe-dev cfe-dev at lists.llvm.org
Wed Apr 22 13:55:53 PDT 2020


Hi, CSA ?community.


I got an idea how to make RangeConstraintManager? more sofisticated.

I want you speak out, share your vision about this idea.


Actually this bug https://bugs.llvm.org/show_bug.cgi?id=13426 pushed me to these thoughts.

Let's consider the next snippet:


int foo(int y, int x) {
int x;
if (y == z) {
x = 0;
}
if (y != z) {
x = 1;
}
return x;
}

Finally CSA reports you:
warning: Undefined or garbage value returned to caller
      [core.uninitialized.UndefReturn]
        return x;

But as a human you know that `x` has definitely been initialized.
As you can see CSA builds paths without relying on previous conditions (except the case {A-B} {B-A}m it is already done).
The same behavior appears when:
(y >  z) (y <= z)
(y <= z) (y >  z)?
(y == z) (z != y)?
etc.
I made a solution for this but have not upload it for review yet.

I also have some more thoughts about optimization such:
if (y <  z) {}
if (y <= z) {} // which is a subset of (y < z)

I can continue to do this improvement and show you the result soon.


________________________________
Denys Petrov
Senior ะก++ Developer | Kharkiv, Ukraine

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20200422/aa19d74e/attachment.html>


More information about the cfe-dev mailing list