[PATCH] D78286: [analyzer] Track runtime types represented by Obj-C Class objects

2020-04-16 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 258065. vsavchenko marked 8 inline comments as done. vsavchenko added a comment. Fix issues pointed by @NoQ. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D78286/new/ https://reviews.llvm.org/D78286 Files:

[PATCH] D78286: [analyzer] Track runtime types represented by Obj-C Class objects

2020-04-20 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko marked 7 inline comments as done. vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Checkers/DynamicTypePropagation.cpp:113 + +bool isObjCClassType(QualType Type) { + if (const auto *PointerType = dyn_cast(Type)) { NoQ wrote: > `s

[PATCH] D78286: [analyzer] Track runtime types represented by Obj-C Class objects

2020-04-20 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko marked an inline comment as done. vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Checkers/DynamicTypePropagation.cpp:198 + // 'self' variable of the current class method. + if (ReceiverSVal == Message.getSelfSVal()) { +// In th

[PATCH] D78638: [analyzer] Consider array subscripts to be interesting lvalues

2020-04-22 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko created this revision. vsavchenko added reviewers: NoQ, dcoughlin. Herald added subscribers: cfe-commits, ASDenysPetrov, martong, Charusso, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a project: clang. Static analyzer

[PATCH] D78286: [analyzer] Track runtime types represented by Obj-C Class objects

2020-04-22 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Checkers/DynamicTypePropagation.cpp:198 + // 'self' variable of the current class method. + if (ReceiverSVal == Message.getSelfSVal()) { +// In this case, we should return the type of the enc

[PATCH] D78286: [analyzer] Track runtime types represented by Obj-C Class objects

2020-04-22 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 259314. vsavchenko marked 9 inline comments as done. vsavchenko added a comment. Fix review remarks Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D78286/new/ https://reviews.llvm.org/D78286 Files: clang/in

[PATCH] D78638: [analyzer] Consider array subscripts to be interesting lvalues

2020-04-22 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko marked an inline comment as done. vsavchenko added inline comments. Comment at: clang/test/Analysis/PR53280338.cpp:1 +// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -verify %s + martong wrote: > AFAIK rdar is not accessible ou

[PATCH] D78638: [analyzer] Consider array subscripts to be interesting lvalues

2020-04-22 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 259341. vsavchenko added a comment. Add more clarity on what we test Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D78638/new/ https://reviews.llvm.org/D78638 Files: clang/lib/StaticAnalyzer/Core/ExplodedG

[PATCH] D78638: [analyzer] Consider array subscripts to be interesting lvalues

2020-04-22 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. In D78638#1997576 , @Szelethus wrote: > How come rGe20b388e2f923bfc98f63a13fea9fc19aeaec425 > doesn't > solve this? Or, rather, how come it even worked if t

[PATCH] D78638: [analyzer] Consider array subscripts to be interesting lvalues

2020-04-23 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko marked an inline comment as done. vsavchenko added inline comments. Comment at: clang/test/Analysis/CheckThatArraySubsciptNodeIsNotCollected.cpp:18-19 +// time to collect redundant nodes. This GC-like mechanism kicks in only when +// the exploded graph is large enough

[PATCH] D78286: [analyzer] Track runtime types represented by Obj-C Class objects

2020-04-23 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko marked 2 inline comments as done. vsavchenko added a comment. > Let's land this, I guess? Fantastic work! Thanks :-) Comment at: clang/lib/StaticAnalyzer/Checkers/DynamicTypePropagation.cpp:198 + // 'self' variable of the current class method. + if (Receiv

[PATCH] D78990: [analyzer] Allow bindings of the CompoundLiteralRegion

2020-04-28 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko created this revision. vsavchenko added reviewers: NoQ, dcoughlin. Herald added subscribers: cfe-commits, ASDenysPetrov, martong, Charusso, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a project: clang. CompoundLiteralR

[PATCH] D78286: [analyzer] Track runtime types represented by Obj-C Class objects

2020-04-28 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 260580. vsavchenko added a comment. Move getSelfSVal from CallEvent to ProgramState Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D78286/new/ https://reviews.llvm.org/D78286 Files: clang/include/clang/Stat

[PATCH] D78286: [analyzer] Track runtime types represented by Obj-C Class objects

2020-04-29 Thread Valeriy Savchenko via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG239c53b72b18: [analyzer] Track runtime types represented by Obj-C Class objects (authored by vsavchenko). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D78286

[PATCH] D79156: [analyzer] Merge implementations of SymInt, IntSym, and SymSym exprs

2020-04-30 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko created this revision. vsavchenko added reviewers: NoQ, dcoughlin. Herald added subscribers: cfe-commits, ASDenysPetrov, martong, Charusso, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a project: clang. SymIntExpr, IntS

[PATCH] D79232: [analyzer] Refactor range inference for symbolic expressions

2020-05-01 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko created this revision. vsavchenko added reviewers: NoQ, dcoughlin. Herald added subscribers: cfe-commits, ASDenysPetrov, martong, Charusso, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a project: clang. This change intr

[PATCH] D79232: [analyzer] Refactor range inference for symbolic expressions

2020-05-02 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko marked 3 inline comments as done. vsavchenko added a comment. > Very nice, i like this architecture. Aww, thanks 😊 > @baloghadamsoftware @steakhal @ASDenysPetrov will you be able to plug D49074 > /D50256 > /D77792 >

[PATCH] D79232: [analyzer] Refactor range inference for symbolic expressions

2020-05-04 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 261833. vsavchenko marked an inline comment as done. vsavchenko added a comment. Now `getRange` is more likely to return unfeasible range. Calling `Intersect` and `pin` methods from such ranges might cause a crash. Check for unfeasible ranges. Repositor

[PATCH] D85034: [analyzer] Simplified functions SVal::getAsSymbolicExpression and similar ones

2020-07-31 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Thanks for working on improving the quality of the codebase! I again have to nitpick about the commit message, can you please change it to "Simplify ..."? Comment at: clang/lib/StaticAnalyzer/Core/SVals.cpp:135-149 -/// getAsSymbolicExpression - If

[PATCH] D85026: [analyzer] Minor refactoring of SVal::getSubKind function

2020-07-31 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Hey, nice catch! However, I'm going to complain about commit messages again 😅 I would prefer having imperative mood in the message, something like "Refactor ..." or "Introduce minor refactoring..." Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION h

[PATCH] D85034: [analyzer] Simplify functions SVal::getAsSymbolicExpression and similar ones

2020-08-03 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. > Ready! Sorry, I remember, you've already told me. Nothing to be sorry about! It's really not that big of a deal. Thanks again! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85034/new/ https://reviews.llvm.org/D85034

[PATCH] D84303: [analyzer][tests] Fix SATest update functionality

2020-08-03 Thread Valeriy Savchenko via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG10851f9db5f7: [analyzer][tests] Fix SATest update functionality (authored by vsavchenko). Herald added a subscriber: steakhal. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://re

[PATCH] D67421: [analyzer] NFC: Move IssueHash to libAnalysis.

2020-08-04 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko accepted this revision. vsavchenko added a comment. This revision is now accepted and ready to land. Awesome, thanks! CHANGES SINCE LAST ACTION https://reviews.llvm.org/D67421/new/ https://reviews.llvm.org/D67421 ___ cfe-commits mailing

[PATCH] D67422: [analyzer] NFC: Move path diagnostic consumer implementations to libAnalysis.

2020-08-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Other than parameter names, it looks totally reasonable to me. Comment at: clang/lib/Analysis/HTMLPathDiagnosticConsumer.cpp:70 + const std::string &OutputDir, + const Preprocessor &pp, bool su

[PATCH] D84736: [analyzer][RFC] Handle pointer difference of ElementRegion and SymbolicRegion

2020-08-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Great job, I'm on board with this change! I think that our code is a bit under commented when it comes to the logic inside of functions, so I would really appreciate if we can add a good chunk of comments here! Also, I believe integration tests would be pretty much

[PATCH] D84736: [analyzer][RFC] Handle pointer difference of ElementRegion and SymbolicRegion

2020-08-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp:1035-1038 +return evalBinOpNN(state, BO_Mul, Index, + makeArrayIndex(SingleElementSize.getQuantity()), + ArrayIndexTy) +

[PATCH] D85105: [doxygen] Fix bad doxygen results for BugReporterVisitors.h

2020-08-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Hey, thanks again for cleaning up the analyzer's docs 😄 Comment at: clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h:56 /// last node should be unique. - /// Use {@code getEndPath} to customize the note associated with t

[PATCH] D85311: [analyzer][tests] Understand when diagnostics change between builds

2020-08-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko created this revision. vsavchenko added reviewers: NoQ, dcoughlin, xazax.hun, Szelethus. Herald added subscribers: cfe-commits, steakhal, ASDenysPetrov, Charusso, dkrupp, donat.nagy, mikhail.ramalho, a.sidorin, rnkovacs, szepet, baloghadamsoftware. Herald added a project: clang. vsavch

[PATCH] D67422: [analyzer] NFC: Move path diagnostic consumer implementations to libAnalysis.

2020-08-06 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added inline comments. Comment at: clang/lib/Analysis/TextPathDiagnosticConsumer.cpp:1 //===--- TextDiagnostics.cpp - Text Diagnostics for Paths ---*- C++ -*-===// // TextPathDiagnosticConsumer.cpp? Comment at: clang/lib/Analy

[PATCH] D85311: [analyzer][tests] Understand when diagnostics change between builds

2020-08-06 Thread Valeriy Savchenko via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG6ddef9247458: [analyzer][tests] Understand when diagnostics change between builds (authored by vsavchenko). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D853

[PATCH] D83942: [analyzer][tests] Add a notion of project sizes

2020-08-06 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 283548. vsavchenko added a comment. Herald added a subscriber: steakhal. Keep SATest.py Python2 compatible Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D83942/new/ https://reviews.llvm.org/D83942 Files: c

[PATCH] D85431: [analyzer] Implement a new checker ThreadPrimitivesChecker

2020-08-06 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. It is an interesting checker, but it seems that this kind of checker is extremely hard in single TU/top-down analysis. It feels like it's going to produce hell a lot of false positives in the wild. Also `mutex` is usually a global variable - the nemesis of any static

[PATCH] D85528: [analyzer] Fix cast evaluation on scoped enums in ExprEngine

2020-08-07 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Good catch! Comment at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h:98-104 +const auto IsIntegralOrUnscopedCompleteEnumerationType = [](QualType Ty) { + const Type *CanonicalType = Ty.getCanonicalType().getTypePtr();

[PATCH] D85105: [doxygen] Fix bad doxygen results for BugReporterVisitors.h

2020-08-12 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Awesome, thanks! Bt, maybe we can use `\ref` form, it looks like it's a preferred form in the codebase. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85105/new/ https://reviews.llvm.org/D85105 ___ cfe-commits

[PATCH] D85817: [analyzer] Fix crash with pointer to members values

2020-08-12 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko created this revision. vsavchenko added reviewers: NoQ, dcoughlin, xazax.hun, Szelethus. Herald added subscribers: cfe-commits, steakhal, ASDenysPetrov, martong, Charusso, dkrupp, donat.nagy, mikhail.ramalho, a.sidorin, rnkovacs, szepet, baloghadamsoftware. Herald added a project: clan

[PATCH] D85817: [analyzer] Fix crash with pointer to members values

2020-08-12 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. In D85817#2213435 , @NoQ wrote: > That's a fix for https://bugs.llvm.org/show_bug.cgi?id=46264. > > Your code looks great but i don't understand at a glance what the crash was > caused by and how does your code fix it, can you

[PATCH] D85817: [analyzer] Fix crash with pointer to members values

2020-08-13 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 285358. vsavchenko added a comment. Simplify the main test Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85817/new/ https://reviews.llvm.org/D85817 Files: clang/include/clang/StaticAnalyzer/Core/PathSensi

[PATCH] D85817: [analyzer] Fix crash with pointer to members values

2020-08-13 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 285360. vsavchenko added a comment. Add "no crash" comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85817/new/ https://reviews.llvm.org/D85817 Files: clang/include/clang/StaticAnalyzer/Core/PathSens

[PATCH] D84415: [analyzer][StdLibraryFunctionsChecker] Add POSIX pthread handling functions

2020-08-13 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Off-topic: I really think that we should have some sort of DSL for that kind of stuff. Comment at: clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp:2013 +if (Pthread_tTy) { + Pthread_tPtrTy = ACtx.getPointerType(*Pthread_tT

[PATCH] D85817: [analyzer] Fix crash with pointer to members values

2020-08-13 Thread Valeriy Savchenko via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG9cbfdde2ea06: [analyzer] Fix crash with pointer to members values (authored by vsavchenko). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85817/new/ https:/

[PATCH] D67422: [analyzer] NFC: Move path diagnostic consumer implementations to libAnalysis.

2020-08-13 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko accepted this revision. vsavchenko added a comment. Awesome, looks great! CHANGES SINCE LAST ACTION https://reviews.llvm.org/D67422/new/ https://reviews.llvm.org/D67422 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://list

[PATCH] D79336: [analyzer] Generalize bitwise OR rules for ranges

2020-05-04 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko created this revision. vsavchenko added reviewers: NoQ, dcoughlin. Herald added subscribers: cfe-commits, ASDenysPetrov, martong, Charusso, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a project: clang. vsavchenko added

[PATCH] D79336: [analyzer] Generalize bitwise OR rules for ranges

2020-05-04 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Here is a little proof I've put together (using Z3): https://gist.github.com/SavchenkoValeriy/9ad6ca72e7420fd5612e618187bd4f76 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79336/new/ https://reviews.llvm.org/D79336

[PATCH] D79336: [analyzer] Generalize bitwise OR rules for ranges

2020-05-04 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko marked 3 inline comments as done. vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:77 + assert(!isEmpty()); + // NOTE: It's a shame that we can't implement 'getMaxValue' without scanning + // the whole tree

[PATCH] D79434: [analyzer] Generalize bitwise AND rules for ranges

2020-05-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 262158. vsavchenko added a comment. Add parent change Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79434/new/ https://reviews.llvm.org/D79434 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.c

[PATCH] D79434: [analyzer] Generalize bitwise AND rules for ranges

2020-05-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko created this revision. vsavchenko added reviewers: NoQ, dcoughlin. vsavchenko added a project: clang. Herald added subscribers: cfe-commits, ASDenysPetrov, martong, Charusso, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. vsavchenko up

[PATCH] D79336: [analyzer] Generalize bitwise OR rules for ranges

2020-05-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 262163. vsavchenko added a comment. Fix few things here and there Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79336/new/ https://reviews.llvm.org/D79336 Files: clang/include/clang/StaticAnalyzer/Core/Pa

[PATCH] D79232: [analyzer] Refactor range inference for symbolic expressions

2020-05-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 262170. vsavchenko added a comment. Add clarification on infeasible ranges in bitwise tests Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79232/new/ https://reviews.llvm.org/D79232 Files: clang/include/c

[PATCH] D79336: [analyzer] Generalize bitwise OR rules for ranges

2020-05-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 262171. vsavchenko added a comment. Fix clang-format issue Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79336/new/ https://reviews.llvm.org/D79336 Files: clang/include/clang/StaticAnalyzer/Core/PathSensi

[PATCH] D79434: [analyzer] Generalize bitwise AND rules for ranges

2020-05-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Here is a little proof I've put together (using Z3): https://gist.github.com/SavchenkoValeriy/2355170159ce1febd27498c36ea22149 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79434/new/ https://reviews.llvm.org/D79434

[PATCH] D79232: [analyzer] Refactor range inference for symbolic expressions

2020-05-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko marked an inline comment as done. vsavchenko added inline comments. Comment at: clang/test/Analysis/constant-folding.c:127-128 + if (a > 10) { +clang_analyzer_eval((a & 1) <= 1); // expected-warning{{FALSE}} +clang_analyzer_eval((a & 1) > 1); // expected-warn

[PATCH] D79232: [analyzer] Refactor range inference for symbolic expressions

2020-05-05 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko marked an inline comment as done. vsavchenko added inline comments. Comment at: clang/test/Analysis/constant-folding.c:127-128 + if (a > 10) { +clang_analyzer_eval((a & 1) <= 1); // expected-warning{{FALSE}} +clang_analyzer_eval((a & 1) > 1); // expected-warn

[PATCH] D79232: [analyzer] Refactor range inference for symbolic expressions

2020-05-06 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko marked an inline comment as done. vsavchenko added inline comments. Comment at: clang/test/Analysis/constant-folding.c:127-128 + if (a > 10) { +clang_analyzer_eval((a & 1) <= 1); // expected-warning{{FALSE}} +clang_analyzer_eval((a & 1) > 1); // expected-warn

[PATCH] D79843: [analyzer] Fix crash for non-pointers annotated as nonnull

2020-05-13 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko created this revision. vsavchenko added reviewers: NoQ, dcoughlin. Herald added subscribers: cfe-commits, ASDenysPetrov, martong, Charusso, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a project: clang. Nonnull attribut

[PATCH] D79843: [analyzer] Fix crash for non-pointers annotated as nonnull

2020-05-13 Thread Valeriy Savchenko via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG855f0ce79bf3: [analyzer] Fix crash for non-pointers annotated as nonnull (authored by vsavchenko). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79843/new/

[PATCH] D79932: [analyzer] Modernize analyzer's Python scripts

2020-05-14 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko created this revision. vsavchenko added reviewers: NoQ, dcoughlin. Herald added subscribers: cfe-commits, ASDenysPetrov, Charusso, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a project: clang. vsavchenko updated this re

[PATCH] D79932: [analyzer] Modernize analyzer's Python scripts

2020-05-14 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 263963. vsavchenko added a comment. Add more 'super' clean-ups Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79932/new/ https://reviews.llvm.org/D79932 Files: clang/utils/analyzer/CmpRuns.py clang/utils

[PATCH] D79932: [analyzer] Modernize analyzer's Python scripts

2020-05-14 Thread Valeriy Savchenko via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rGc98872e3a3c0: [analyzer] Modernize analyzer's Python scripts (authored by vsavchenko). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79932/new/ https://revi

[PATCH] D80117: [analyzer] Introduce reasoning about symbolic remainder operator

2020-05-18 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko created this revision. vsavchenko added reviewers: NoQ, dcoughlin, xazax.hun, ASDenysPetrov. Herald added subscribers: cfe-commits, martong, Charusso, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, rnkovacs, szepet, baloghadamsoftware. Herald added a project: clang. New log

[PATCH] D80117: [analyzer] Introduce reasoning about symbolic remainder operator

2020-05-18 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Here is a proof in Z3: https://gist.github.com/SavchenkoValeriy/559ca923b050f2c01e340c1be543b7e0 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D80117/new/ https://reviews.llvm.org/D80117 ___

[PATCH] D79434: [analyzer] Generalize bitwise AND rules for ranges

2020-05-18 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 264603. vsavchenko added a comment. Rebase Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79434/new/ https://reviews.llvm.org/D79434 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp clang/

[PATCH] D79336: [analyzer] Generalize bitwise OR rules for ranges

2020-05-18 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 264602. vsavchenko added a comment. Fix a bug with double expressions withing integer expressions Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79336/new/ https://reviews.llvm.org/D79336 Files: clang/incl

[PATCH] D79434: [analyzer] Generalize bitwise AND rules for ranges

2020-05-18 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 264606. vsavchenko added a comment. Rebase Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79434/new/ https://reviews.llvm.org/D79434 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp clang/

[PATCH] D80117: [analyzer] Introduce reasoning about symbolic remainder operator

2020-05-18 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 264605. vsavchenko added a comment. Rebase Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D80117/new/ https://reviews.llvm.org/D80117 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp clang/

[PATCH] D79232: [analyzer] Refactor range inference for symbolic expressions

2020-05-18 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 264614. vsavchenko added a comment. Fix a problem with doubles sneaking into integer symbolic expressions Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79232/new/ https://reviews.llvm.org/D79232 Files: c

[PATCH] D79336: [analyzer] Generalize bitwise OR rules for ranges

2020-05-18 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 264615. vsavchenko added a comment. Rebase Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79336/new/ https://reviews.llvm.org/D79336 Files: clang/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueF

[PATCH] D80117: [analyzer] Introduce reasoning about symbolic remainder operator

2020-05-18 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Here is a short summary of the performance testing I conducted across a bunch of open-source projects: | | vim | git | tmux| redis

[PATCH] D80117: [analyzer] Introduce reasoning about symbolic remainder operator

2020-05-18 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko marked 2 inline comments as done. vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:459 +bool CoversTheWholeType = +(Origin.From().isMinSignedValue() || Origin.To().isMaxValue()); + NoQ w

[PATCH] D80117: [analyzer] Introduce reasoning about symbolic remainder operator

2020-05-18 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko marked an inline comment as done. vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:462 +if (CoversTheWholeType) { + return {ValueFactory.getMinValue(RangeType), + ValueFactory.getMaxValue(Range

[PATCH] D78990: [analyzer] Allow bindings of the CompoundLiteralRegion

2020-05-19 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 264831. vsavchenko added a comment. Fix code review remarks. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D78990/new/ https://reviews.llvm.org/D78990 Files: clang/lib/StaticAnalyzer/Core/RegionStore.cpp

[PATCH] D80117: [analyzer] Introduce reasoning about symbolic remainder operator

2020-05-19 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko updated this revision to Diff 264863. vsavchenko added a comment. Fix code review remarks. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D80117/new/ https://reviews.llvm.org/D80117 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintMa

[PATCH] D80171: [analyzer] LoopUnrolling: fix crash when a parameter is a loop counter

2020-05-19 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Thanks for taking your time to find and resolve the bug. I agree that this solution seems a bit too harsh. Technically there is no difference between local variable declaration and a parameter declaration (if we are talking about value types as pointed out by @xazax.

[PATCH] D80211: [analyzer] SATestBuild.py: Optionally override compiler

2020-05-19 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. I agree, but I think we should refactor a bit how we process command line arguments before that. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D80211/new/ https://reviews.llvm.org/D80211 __

[PATCH] D80211: [analyzer] SATestBuild.py: Optionally override compiler

2020-05-19 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko created this revision. vsavchenko added a reviewer: NoQ. Herald added subscribers: cfe-commits, ASDenysPetrov, Charusso, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a project: clang. NoQ accepted this revision. NoQ adde

[PATCH] D80211: [analyzer] SATestBuild.py: Optionally override compiler

2020-05-19 Thread Valeriy Savchenko via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG6846aec7313f: [analyzer] SATestBuild.py: Optionally override compiler (authored by vsavchenko). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D80211/new/ htt

[PATCH] D103096: [analyzer] Implement cast for ranges of symbolic integers.

2021-07-15 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. In D103096#2877818 , @ASDenysPetrov wrote: > Made `ignoreCast` non-virtual. > P.S. IMO, this change is not something that can be taken as a pattern, > though. It is already a pattern in other type hierarchies. Virtual funct

[PATCH] D106063: [Analyzer][solver] Remove unused functions

2021-07-15 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko accepted this revision. vsavchenko added a comment. This revision is now accepted and ready to land. Yes, let's do this! Thanks for addressing it! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106063/new/ https://reviews.llvm.org/D10606

[PATCH] D103096: [analyzer] Implement cast for ranges of symbolic integers.

2021-07-15 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1908-1912 +// Handle SymbolCast before actual assignment. +std::tie(Sym, NewConstraint) = +modifySymbolAndConstraints(Sym, NewConstraint); +if (!State) +

[PATCH] D103096: [analyzer] Implement cast for ranges of symbolic integers.

2021-07-15 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1908-1912 +// Handle SymbolCast before actual assignment. +std::tie(Sym, NewConstraint) = +modifySymbolAndConstraints(Sym, NewConstraint); +if (!State) +

[PATCH] D106102: [analyzer][solver] Introduce reasoning for not equal to operator

2021-07-16 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1223-1225 +template <> +RangeSet SymbolicRangeInferrer::VisitBinaryOperator(Range LHS, Range RHS, + QualType T) {

[PATCH] D106136: [Analyzer][solver] Fix equivalence class invariant violation in removeDeadBindings

2021-07-16 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Thanks for working on it, but it is a quite large change that I don't get the motivation for (it doesn't even fix the recently found bug). Summary explains what the patch does, but for why it is done, it talks about an invariant that is not specified anywhere in the

[PATCH] D106136: [Analyzer][solver] Fix equivalence class invariant violation in removeDeadBindings

2021-07-16 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. In D106136#2883100 , @martong wrote: > Thanks for taking your time to take a look. And I accept your statements. > Nevertheless, let me explain my motivation. > > I thought that a class is trivial if it has only one member. An

[PATCH] D106296: [analyzer] Fix for faulty namespace test in SmartPtrModelling

2021-07-20 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:254-257 + const auto *Decl = Call.getDecl(); + if (!Decl) +return false; + if (!Decl->getDeclContext()->isStdNamespace()) I think you can have a separate f

[PATCH] D106136: [Analyzer][solver] Fix equivalence class invariant violation in removeDeadBindings

2021-07-20 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. In D106136#2889610 , @martong wrote: > In D106136#2883707 , @vsavchenko > wrote: > >> In D106136#2883100 , @martong >> wrote: >> >>> Thanks f

[PATCH] D106285: [Analyzer][solver] Fix inconsistent equivalence class data

2021-07-20 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Ah, I see now! I think we could've put together a somewhat easier test knowing what's wrong, but it's not important at all. Thanks for addressing this issue! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106285/new/ ht

[PATCH] D106296: [analyzer] Fix for faulty namespace test in SmartPtrModelling

2021-07-20 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Also, I tested this fix on a set of open-source projects and I don't see any problems. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106296/new/ https://reviews.llvm.org/D106296

[PATCH] D106296: [analyzer] Fix for faulty namespace test in SmartPtrModelling

2021-07-20 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:252-255 + const auto *Decl = Call.getDecl(); + if (!Decl) +return false; + return Decl->getDeclContext()->isStdNamespace(); Can we use a one-liner that I s

[PATCH] D106296: [analyzer] Fix for faulty namespace test in SmartPtrModelling

2021-07-20 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:252 +static bool isStdFunctionCall(const CallEvent &Call) { + return Call.getDecl() && Call.getDecl() ->getDeclContext()->isStdNamespace(); +} nit: there's an ex

[PATCH] D106296: [analyzer] Fix for faulty namespace test in SmartPtrModelling

2021-07-20 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko accepted this revision. vsavchenko added a comment. Great, LGTM! But let's wait for @xazax.hun anyways Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106296/new/ https://reviews.llvm.org/D106296 __

[PATCH] D92928: [analyzer] Highlight arrows for currently selected event

2021-07-20 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Maybe I'm missing something, but do we really need to care about IE? The last version was released in 2013, and even Microsoft itself stops supporting IE. Why should we care? Is there anyone who uses old deprecated browser that is not maintained? `classList` thin

[PATCH] D92928: [analyzer] Highlight arrows for currently selected event

2021-07-20 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. I want to say that I really appreciate the effort you put into finding all the workarounds for IE, but it makes adding new features here incredibly painful because IE doesn't seem to support anything. And the majority of developers (on Linux and on MacOS) have liter

[PATCH] D103440: [WIP][analyzer] Introduce range-based reasoning for addition operator

2021-07-20 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. In D103440#2891915 , @manas wrote: > Here is the proof of correctness of the algorithm using Z3: > https://gist.github.com/weirdsmiley/ad6a9dbf3370e96d29f9e90068931d25 There is a couple of fundamental problems there that you

[PATCH] D106296: [analyzer] Fix for faulty namespace test in SmartPtrModelling

2021-07-21 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Can we please land the fix? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106296/new/ https://reviews.llvm.org/D106296 ___ cfe-commits mailing list cfe-commits@lists.llvm.org

[PATCH] D106416: [analyzer] Fix build dependency issues for SATest

2021-07-22 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko accepted this revision. vsavchenko added a comment. This revision is now accepted and ready to land. Awesome! Thanks! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106416/new/ https://reviews.llvm.org/D106416 __

[PATCH] D106285: [Analyzer][solver] Fix inconsistent equivalence class data

2021-07-23 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko accepted this revision. vsavchenko added a comment. This revision is now accepted and ready to land. Oh, I didn't accept it? Sorry! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106285/new/ https://reviews.llvm.org/D106285

[PATCH] D106739: [analyzer] Add option to SATest.py for extra checkers

2021-07-27 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Looks good! Thanks! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106739/new/ https://reviews.llvm.org/D106739 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https:/

[PATCH] D107026: [Clang] Add support for attribute 'escape'

2021-07-29 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added a comment. Great job! It looks good, but I have a couple of minor tweaks. I see that the "applies to pointer arguments only" warning is not tested for `noescape`, but I still find it to be a good practice to write a test with a bunch of cases with attributes applied in wrong p

[PATCH] D105821: [analyzer] [WIP] Model destructor for std::unique_ptr

2021-07-29 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:143 +llvm::ArrayRef ValidNames(STD_PTR_NAMES); +return llvm::is_contained(ValidNames, Name); } And why can't we pass `STD_PTR_NAMES` directly to `llvm:

[PATCH] D105821: [analyzer] [WIP] Model destructor for std::unique_ptr

2021-07-29 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko added inline comments. Comment at: clang/lib/StaticAnalyzer/Checkers/SmartPtrModeling.cpp:381 +const MemRegion *ThisRegion = DC->getCXXThisVal().getAsRegion(); +assert(ThisRegion && "We do not support explicit calls to destructor"); +const auto *InnerPtrVal

[PATCH] D107026: [Clang] Add support for attribute 'escape'

2021-07-29 Thread Valeriy Savchenko via Phabricator via cfe-commits
vsavchenko accepted this revision. vsavchenko added a comment. This revision is now accepted and ready to land. Awesome, I have nothing to add at this point! Let's still wait for @aaron.ballman to check it. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.o

<    1   2   3   4   5   6   7   8   9   >