[PATCH] D28955: [analyzer] Enable support for symbolic extension/truncation

Artem Dergachev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 17 06:40:07 PST 2020


NoQ added a subscriber: mikhail.ramalho.
NoQ added a comment.
Herald added subscribers: Charusso, dkrupp, donat.nagy, Szelethus, a.sidorin, rnkovacs, szepet, baloghadamsoftware.

@mikhail.ramalho brought this up in pr41809 <https://bugs.llvm.org/show_bug.cgi?id=41809#c16> so let's revisit this.

Like, the patch looks great, the idea looks great, but i'd like to make super duper sure that the behavior without Z3 remains the same, because we are in no position to give up on the no-Z3 mode yet.



================
Comment at: test/Analysis/PR3991.m:63
+#else
+  BOOL doGetDir = self.directoryPathComponents != 0 && self.currentPathComponentIndex < [self.directoryPathComponents count]; // expected-warning{{Assignment of a non-Boolean value}}
+#endif
----------------
This looks like a regression to me. Even though `BoolAssignment` is an alpha checker, it's definitely one of the good ones, which i want to enable by default sooner rather than later, so can we try not to regress it too much?


================
Comment at: test/Analysis/std-c-library-functions.c:149
   if (isgraph(y))
-    clang_analyzer_eval(isprint(x)); // expected-warning{{TRUE}}
+    clang_analyzer_eval(isprint(y)); // expected-warning{{TRUE}}
 }
----------------
Why did this //have// to change? I don't remember all the details of how these functions work, but as far as i remember the only character that is printable but not graphical is the space character (32) which converts between `int` and `char` just fine.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D28955/new/

https://reviews.llvm.org/D28955





More information about the cfe-commits mailing list