[PATCH] D23112: [analyzer] Correctly add assumptions based on array bounds.

Artem Dergachev via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 3 07:20:05 PDT 2016


NoQ added a comment.

Nice catch!

Now, this needs a test. How about this one:

  // enable the debug.ExprInspection checker?
  void clang_analyzer_eval(int);
  
  void test_asume_after_access(unsigned long x) {
    char buf[100];
    buf[x] = 1;
    clang_analyzer_eval(x <= 99); // expected-warning{{TRUE}}
  }

By the way, if we replace `char` with `int`, this test fails even with your patch. The reason is, the assumption is added on `(4 * x)` rather than on `x`, and the constraint manager explodes. Does anybody volunteer to fix this (eg. on the checker side - throw easier equations at the solver)?


https://reviews.llvm.org/D23112





More information about the cfe-commits mailing list