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

2021-07-15 Thread Manas Gupta via Phabricator via cfe-commits
manas created this revision. Herald added subscribers: steakhal, ASDenysPetrov, martong, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a reviewer: teemperor. manas requested review of this revision. Herald added a project: clang. Her

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

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

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

2021-07-20 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. Here is the proof of correctness of the algorithm using Z3: https://gist.github.com/weirdsmiley/ad6a9dbf3370e96d29f9e90068931d25 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 ___

[PATCH] D105273: [analyzer] Introduce range-based reasoning for subtraction operator

2021-07-20 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. Here is the proof using Z3: https://gist.github.com/weirdsmiley/8a35a0e1f55f310e3566cbd47555491a Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105273/new/ https://reviews.llvm.org/D105273 ___

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

2021-07-20 Thread Manas Gupta via Phabricator via cfe-commits
manas created this revision. Herald added subscribers: steakhal, ASDenysPetrov, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a reviewer: teemperor. manas requested review of this revision. Herald added a project: clang. Herald added

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

2022-04-06 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 420962. manas added a comment. Herald added a project: All. Fix test cases to make them reachable via VisiBinaryOperator and using getConcreteValue() Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112621/new/ htt

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

2022-04-06 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. @steakhal apologies for holding onto this for so long. I managed to fix previously untestable test cases. The issue was that I was building expressions as `(u1 != u2) != 0` and the solver was canonicalizing this to an equivalent `BO_EQ` expression. That's why, it wasn't r

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

2022-04-06 Thread Manas Gupta via Phabricator via cfe-commits
manas marked 2 inline comments as done. manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1272-1273 + // (x != y). + if ((ConvertedLHS.getMaxValue() < ConvertedRHS.getMinValue()) || + (ConvertedLHS.getMinValue() > ConvertedRH

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

2022-04-07 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 421122. manas added a comment. Fix comments and rebase Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112621/new/ https://reviews.llvm.org/D112621 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp

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

2022-04-07 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 421134. manas added a comment. Format constant-folding.c Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112621/new/ https://reviews.llvm.org/D112621 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.c

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

2022-07-11 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. I was busy with other stuff. I will take a look at it now. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112621/new/ https://reviews.llvm.org/D112621 ___ cfe-commits mailing list c

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

2022-07-15 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 444911. manas added a comment. Add concrete tests for same and different types Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112621/new/ https://reviews.llvm.org/D112621 Files: clang/lib/StaticAnalyzer/Core/Ra

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

2022-07-15 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. The coverage showing unreachability of `VisitBinaryOperator` for concrete integer cases. F23801808: RangeConstraintManager.cpp.html Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1415-1416 + +

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

2022-07-18 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 445549. manas added a comment. Remove filling gaps and convert, use castTo, and add tests for short-ushort, char-uchar pairs Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112621/new/ https://reviews.llvm.org/D112

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

2022-07-18 Thread Manas Gupta via Phabricator via cfe-commits
manas marked 5 inline comments as done. manas added a comment. Considering @ASDenysPetrov 's example of `LHS = [1, 2] U [8, 9]` and `RHS = [5, 6]`, I constructed a test case as following: `(((u1 >= 1 && u1 <= 2) || (u1 >= 8 && u1 <= 9)) && u2 >= 5 && u2 <= 6)` but I can see that the analyzer is

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

2022-07-18 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 445671. manas added a comment. Rebase and fix comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112621/new/ https://reviews.llvm.org/D112621 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp

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

2022-07-18 Thread Manas Gupta via Phabricator via cfe-commits
manas marked an inline comment as done. manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1272-1273 + // (x != y). + if ((ConvertedLHS.getMaxValue() < ConvertedRHS.getMinValue()) || + (ConvertedLHS.getMinValue() > ConvertedRH

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

2021-06-01 Thread Manas Gupta via Phabricator via cfe-commits
manas created this revision. Herald added subscribers: steakhal, ASDenysPetrov, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a reviewer: teemperor. manas requested review of this revision. Herald added a project: clang. Herald added

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

2021-06-01 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. @NoQ I figured out the tests but while testing against Z3, I mixed up constraints. I am changing those. Comment at: clang/test/Analysis/constant-folding.c:265 +if (a > INT_MAX) { + clang_analyzer_eval((a + b) <= 0); // expected-warning{{FALSE}}

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

2021-06-01 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/test/Analysis/constant-folding.c:282 + if (a == UINT_MAX && b == UINT_MAX) { +clang_analyzer_eval((a + b) >= 0); // expected-warning{{FALSE}} + } manas wrote: > xazax.hun wrote: > > I think `UINT_MAX + UINT_MAX

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

2021-06-02 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 349225. manas added a comment. Fixed test cases expecting wrong assertions and added few more test cases. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 Files: clang

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

2021-09-24 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. I haven't tried specializing that `VisitBinaryOperator` method which converts Ranges from RangeSets (as @vsavchenko mentioned). Should this case for NE stay here in the switch or move? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llv

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

2021-09-24 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 374746. manas added a comment. Rebase Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106102/new/ https://reviews.llvm.org/D106102 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp clang/test/Ana

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

2021-09-25 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 375017. manas added a comment. Upgrade cmake to 3.21.3 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106416/new/ https://reviews.llvm.org/D106416 Files: clang/utils/analyzer/Dockerfile Index: clang/utils/ana

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

2021-09-25 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. @vsavchenko should we land this? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106416/new/ https://reviews.llvm.org/D106416 ___ cfe-commits mailing list cfe-commits@lists.llvm.org

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

2021-09-28 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 375682. manas added a comment. Move method to a specialized template for VisitBinaryOperator Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106102/new/ https://reviews.llvm.org/D106102 Files: clang/lib/StaticAn

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

2021-09-28 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 375689. manas added a comment. Rebase Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106102/new/ https://reviews.llvm.org/D106102 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp clang/test/Ana

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

2021-09-28 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. The pre-merge checks fail due to the patch being unable to get applied. The troubleshooting suggest to update the patch via `arc diff ```git merge-base HEAD origin``` --update D106102` an

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

2021-09-29 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. In D106102#3029633 , @martong wrote: > In D106102#3028584 , @manas wrote: > >> The pre-merge checks fail due to the patch being unable to get applied. The >> troubleshooting >>

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

2021-09-29 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 376035. manas added a comment. Apply mentioned edits in testcases Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106102/new/ https://reviews.llvm.org/D106102 Files: clang/lib/StaticAnalyzer/Core/RangeConstraint

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

2021-09-30 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. In D106102#3032888 , @steakhal wrote: > Okay, I don't see any problems besides this typo. Oops! > BTW do you plan to implement other rules besides this in the future? > E.g. we currently miss this: > 'x < y' is `true` if `max(x) <

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

2021-09-30 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 376363. manas added a comment. Fix typo Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106102/new/ https://reviews.llvm.org/D106102 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp clang/test/A

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

2021-10-01 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. In D106102#3035598 , @steakhal wrote: > Good work. Land it. I do not have landing rights. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106102/new/ https://reviews.llvm.org/D106102

[PATCH] D107312: [analyzer] Fix deprecated plistlib functions

2021-10-01 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. Gentle ping. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D107312/new/ https://reviews.llvm.org/D107312 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.o

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

2021-10-01 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. In D106102#3036474 , @steakhal wrote: > In D106102#3036220 , @manas wrote: > >> I do not have landing rights. > > Please add your name and email on whom behalf I should commit this patch. >

[PATCH] D107312: [analyzer] Fix deprecated plistlib functions

2021-10-01 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. In D107312#3036421 , @steakhal wrote: > I'm not using this script. I'm assuming you run it and verified that it works. > Thanks for cleaning this up. I have run it. It is working. Repository: rG LLVM Github Monorepo CHANGES SI

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

2021-10-01 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. I'll take a look at this over the weekend. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106102/new/ https://reviews.llvm.org/D106102 ___ cfe-commits mailing list cfe-commits@lists

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

2021-06-03 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. > I also would like to see tests where the ranges are not going all the way to > either INT_MIN or INT_MAX (if we talk about int), but overflow still might > happen, and cases where overflow might happen, but we still can identify the > overflowing results precisely (e.g.

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

2021-06-03 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 349749. manas added a comment. Added tests for residual paths and negation of certain values, and fixed expected warnings for UNKNOWN cases. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://revi

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

2021-06-04 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/test/Analysis/constant-folding.c:282 + +if (c >= -20 && d >= -40) { + clang_analyzer_eval((c + d) < -1); // expected-warning{{TRUE}} vsavchenko wrote: > manas wrote: > > vsavchenko wrote: > > > Great, it's g

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

2021-06-04 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 349796. manas added a comment. Fix for cases involving residual paths and add case for overflowing range near extremum of a type Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org

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

2021-06-04 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. In D103440#2799629 , @xazax.hun wrote: > I was wondering, if we could try something new with the tests. To increase > our confidence that the expected behavior is correct, how about including a > Z3 proof with each of the test cas

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

2021-06-05 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. In D103440#2800710 , @vsavchenko wrote: > In D103440#2800122 , @manas wrote: > >> In D103440#2799629 , @xazax.hun >> wrote: >> >>> I was wondering

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

2021-06-15 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 352283. manas edited the summary of this revision. manas added a comment. Herald added a subscriber: martong. Add logic for computing rangeset for an expression containing BO_Add. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://revie

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

2021-06-15 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1401-1402 + +// FIXME: This case in particular is resulting in failed assertion. +Range First = Range(Tmin, Max); +Range Second = Range(Min, Tmax); I cha

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

2021-06-16 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1397 +(LHS.To() < 0 && RHS.To() < 0 && Max > 0) || +(LHS.To() < 0 && RHS.To() < 0 && Max > 0)) { + return {RangeFactory, Tmin, Tmax}; vsavchenko

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

2021-06-16 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1409-1415 + if ((LHS.From() > 0 && RHS.From() > 0 && Min < 0) || + (LHS.From() < 0 && RHS.From() < 0 && Min > 0) || + (LHS.To() > 0 && RHS.To() > 0 && Max < 0) || + (

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

2021-06-16 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1409-1415 + if ((LHS.From() > 0 && RHS.From() > 0 && Min < 0) || + (LHS.From() < 0 && RHS.From() < 0 && Min > 0) || + (LHS.To() > 0 && RHS.To() > 0 && Max < 0) || + (

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

2021-06-18 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 353168. manas added a comment. Reason about cases where Min > Max Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 Files: clang/lib/StaticAnalyzer/Core/RangeConstraint

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

2021-06-18 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. The diff fixes all invalid assertion issues and also reasons about the cases where Min > Max. One thing which is stuck for me is the case where Min <= Max but it overflows. I could reason about that in this way: 1. If one of Min/Max overflows while the other doesn't then

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

2021-06-21 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/test/Analysis/constant-folding.c:280-281 + if (c < 0 && c != INT_MIN && d < 0) { +clang_analyzer_eval((c + d) == -1); // expected-warning{{FALSE}} +clang_analyzer_eval((c + d) == 0); // expected-warning{{FALSE}} +clang_a

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

2021-06-21 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1411 +if ((LHS.From() < 0 && RHS.From() < 0)) { + llvm::APSInt CrucialPoint = Tmin - LHS.From(); + if (RHS.Includes(CrucialPoint)) { vsavchenko wrote:

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

2021-06-21 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1395 + + if (Min > Max) { +// This implies that an overflow has occured as either boundary would have vsavchenko wrote: > I commented on this part previously, y

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

2021-06-21 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/test/Analysis/constant-folding.c:280-281 + if (c < 0 && c != INT_MIN && d < 0) { +clang_analyzer_eval((c + d) == -1); // expected-warning{{FALSE}} +clang_analyzer_eval((c + d) == 0); // expected-warning{{FALSE}} +clang_a

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

2021-06-21 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/test/Analysis/constant-folding.c:280-281 + if (c < 0 && c != INT_MIN && d < 0) { +clang_analyzer_eval((c + d) == -1); // expected-warning{{FALSE}} +clang_analyzer_eval((c + d) == 0); // expected-warning{{FALSE}} +clang_a

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

2021-06-22 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 353825. manas added a comment. Added updated logic for reasoning using number of overflows. Also, changed a couple of tests which were leading to unwanted constriants being propagated further. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

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

2021-06-22 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. Regarding the tweakings in `constant-folding.c`, I have refrained from using cases which were resulting in `UNKNOWN` assertions as they were the primary reason for constraints being propagated. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintMa

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

2021-06-23 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. Thanks @vsavchenko and everyone for helping! :) Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1075-1076 + /// LHSOpd binop RHSOpd == Result, where binop is any binary operation + bool hasOverflowed(llvm::APSInt LHSOpd, llvm:

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

2021-06-23 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 354154. manas added a comment. Fix issues involving cases for unsigned type and add tests Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 Files: clang/lib/StaticAnaly

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

2021-06-23 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1400 + if (ResultType.isUnsigned()) { +LHS.From().uadd_ov(RHS.From(), HasMinOverflowed); +LHS.To().uadd_ov(RHS.To(), HasMaxOverflowed); Using `uadd_ov` (and

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

2021-06-24 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 354167. manas added a comment. Rebase Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp clang/test/Ana

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

2021-06-24 Thread Manas Gupta via Phabricator via cfe-commits
manas marked an inline comment as not done. manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1400 + if (ResultType.isUnsigned()) { +LHS.From().uadd_ov(RHS.From(), HasMinOverflowed); +LHS.To().uadd_ov(RHS.To(), HasMaxOverfl

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

2021-06-24 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1400 + if (ResultType.isUnsigned()) { +LHS.From().uadd_ov(RHS.From(), HasMinOverflowed); +LHS.To().uadd_ov(RHS.To(), HasMaxOverflowed); vsavchenko wrote: >

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

2021-06-24 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1400 + if (ResultType.isUnsigned()) { +LHS.From().uadd_ov(RHS.From(), HasMinOverflowed); +LHS.To().uadd_ov(RHS.To(), HasMaxOverflowed); vsavchenko wrote: >

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

2021-08-02 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 363572. manas added a comment. upgrade cmake-3.21.0 to cmake-3.21.1 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106416/new/ https://reviews.llvm.org/D106416 Files: clang/utils/analyzer/Dockerfile Index: cl

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

2021-08-02 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. Fixing another broken dependency packages error. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D106416/new/ https://reviews.llvm.org/D106416 ___ cfe-commits mailing list cfe-commits

[PATCH] D107312: [analyzer] Fix deprecated plistlib functions

2021-08-02 Thread Manas Gupta via Phabricator via cfe-commits
manas created this revision. Herald added subscribers: steakhal, ASDenysPetrov, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a reviewer: teemperor. manas requested review of this revision. Herald added a project: clang. Herald added

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

2021-08-03 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 363734. manas added a comment. Fix test comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp cla

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

2021-08-03 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/utils/analyzer/Dockerfile:15-22 RUN apt-get update && apt-get install -y \ git=1:2.17.1* \ gettext=0.19.8.1* \ python3=3.6.7-1~18.04 \ python3-pip=9.0.1-2.3* \ -cmake=3.20.5* \ -ninja-build=1.8.2-1 +c

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

2021-08-03 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 363742. manas added a comment. Fix unrelated commits mess up! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintMana

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

2021-08-03 Thread Manas Gupta via Phabricator via cfe-commits
manas marked an inline comment as done. manas added a comment. I have updated the proof for Add: https://gist.github.com/weirdsmiley/ad6a9dbf3370e96d29f9e90068931d25 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.or

[PATCH] D105273: [analyzer] Introduce range-based reasoning for subtraction operator

2021-08-03 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. In D105273#2891921 , @manas wrote: > Here is the proof using Z3: > https://gist.github.com/weirdsmiley/8a35a0e1f55f310e3566cbd47555491a I have updated the proof for Sub. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST

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

2021-06-24 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 354424. manas added a comment. Fix issues involving usage of `uadd_ov` and family of functions Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 Files: clang/lib/Static

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

2021-06-24 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 354441. manas added a comment. Add tests for overflows on both ends Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 Files: clang/lib/StaticAnalyzer/Core/RangeConstrai

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

2021-06-25 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/test/Analysis/constant-folding.c:330 +clang_analyzer_eval((c + d) == INT_MAX - 22); // expected-warning{{FALSE}} + } +} vsavchenko wrote: > manas wrote: > > vsavchenko wrote: > > > I don't see the cases where we

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

2021-07-01 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 355825. manas added a comment. Reformat comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp cla

[PATCH] D105273: [analyzer] Introduce range-based reasoning for subtraction operator

2021-07-01 Thread Manas Gupta via Phabricator via cfe-commits
manas created this revision. Herald added subscribers: steakhal, ASDenysPetrov, martong, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a reviewer: teemperor. manas requested review of this revision. Herald added a project: clang. Her

[PATCH] D105273: [analyzer] Introduce range-based reasoning for subtraction operator

2021-07-02 Thread Manas Gupta via Phabricator via cfe-commits
manas marked 3 inline comments as done. manas added a comment. Thanks Valeriy. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1490 + // the resulting range should be [Min, Max]. + if (ResultType.isUnsigned()) { +return {RangeFactory, ValueFactory.get

[PATCH] D105273: [analyzer] Introduce range-based reasoning for subtraction operator

2021-07-02 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 356235. manas marked 3 inline comments as done. manas added a comment. Merge conditionals with similar block and add test for one overflow on Tmax-side Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105273/new/ ht

[PATCH] D105273: [analyzer] Introduce range-based reasoning for subtraction operator

2021-07-02 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1485 + if (ResultType.isUnsigned() || + ((LHS.From() >= 0 && RHS.From() < 0) && + (LHS.To() >= 0 && RHS.To() < 0)) || @vsavchenko one thing crossed my mi

[PATCH] D105273: [analyzer] Introduce range-based reasoning for subtraction operator

2021-07-02 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 356245. manas added a comment. Replace literal-value 0 with APSInt Zero Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105273/new/ https://reviews.llvm.org/D105273 Files: clang/lib/StaticAnalyzer/Core/RangeCons

[PATCH] D105273: [analyzer] Introduce range-based reasoning for subtraction operator

2021-07-02 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 356249. manas added a comment. Remove redundant getAPSIntType calls Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105273/new/ https://reviews.llvm.org/D105273 Files: clang/lib/StaticAnalyzer/Core/RangeConstrai

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

2021-07-02 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 356250. manas added a comment. Replace literal-value 0 with APSInt Zero Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 Files: clang/lib/StaticAnalyzer/Core/RangeCons

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

2021-07-02 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 356256. manas added a comment. Rebase Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103440/new/ https://reviews.llvm.org/D103440 Files: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp clang/test/Ana

[PATCH] D105447: [analyzer] Allow cmake options to be passed to satest container

2021-07-05 Thread Manas Gupta via Phabricator via cfe-commits
manas created this revision. Herald added subscribers: steakhal, ASDenysPetrov, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a reviewer: teemperor. manas requested review of this revision. Herald added a reviewer: jdoerfert. Herald

[PATCH] D105447: [analyzer] Allow cmake options to be passed to satest container

2021-07-05 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 356574. manas added a comment. Restore global cmake command Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105447/new/ https://reviews.llvm.org/D105447 Files: clang/utils/analyzer/entrypoint.py Index: clang/u

[PATCH] D105447: [analyzer] Allow cmake options to be passed to satest container

2021-07-05 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. In D105447#2858740 , @manas wrote: > Restore global cmake command Apparently, my initial observation of `LLVM_BUILD_RUNTIME=OFF` hogging up memory was false and I also didn't know what was the default value for this option. Hence

[PATCH] D105447: [analyzer] Allow cmake options to be passed to satest container

2021-07-05 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 356575. manas edited the summary of this revision. manas added a comment. Edit summary Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105447/new/ https://reviews.llvm.org/D105447 Files: clang/utils/analyzer/ent

[PATCH] D105447: [analyzer] Allow cmake options to be passed to satest container

2021-07-06 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/utils/analyzer/entrypoint.py:12 settings, rest = parse_arguments() +cmake_opts = list(filter(lambda cmd: cmd[:2]=='-D', rest)) if settings.wait: vsavchenko wrote: > I think we should still use `argparse

[PATCH] D105447: [analyzer] Allow cmake options to be passed to satest container

2021-07-06 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 356821. manas added a comment. Pass commands through settings instead of rest Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105447/new/ https://reviews.llvm.org/D105447 Files: clang/utils/analyzer/entrypoint.p

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

2021-10-27 Thread Manas Gupta via Phabricator via cfe-commits
manas created this revision. Herald added subscribers: steakhal, ASDenysPetrov, martong, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. Herald added a reviewer: teemperor. manas requested review of this revision. Herald added a project: clang. Her

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

2021-10-27 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. @steakhal @martong This patch solves the comparison between different types by bypassing the RangeSets first to `VisitBinaryOperator` which coarses/converts, and then only it checks for any True/False ranges via comparison. This is similar to what happens with `BO_Rem`, `

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

2021-10-27 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. In D112621#3090450 , @steakhal wrote: > It seems like the test does not exercise the modified code segment. > Please investigate, and make sure that the code you submit is actually > exercised by the test you provide. I am really

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

2021-11-29 Thread Manas Gupta via Phabricator via cfe-commits
manas created this revision. Herald added subscribers: steakhal, ASDenysPetrov, martong, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun. manas requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.

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

2021-11-29 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 390526. manas added a comment. Fix comparison between different types and add a test to check it Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112621/new/ https://reviews.llvm.org/D112621 Files: clang/lib/Stat

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

2021-11-29 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. I have made few changes: 1. The failed assertions due to comparison between different types have been fixed by converting all the Ranges to a given type. This will allow comparisons without throwing errors. 2. There was also a build e

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

2021-11-29 Thread Manas Gupta via Phabricator via cfe-commits
manas added a comment. Closing this as this is mistakenly a duplicate of existing differential D112621 . Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D114758/new/ https://reviews.llvm.org/D114758

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

2022-09-29 Thread Manas Gupta via Phabricator via cfe-commits
manas updated this revision to Diff 463910. manas added a comment. Fix casting to bigger/unsigned type and add tests with multiple ranges in RangeSet Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112621/new/ https://reviews.llvm.org/D112621 Files

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

2022-09-29 Thread Manas Gupta via Phabricator via cfe-commits
manas marked 3 inline comments as done. manas added a comment. Thanks @martong and @ASDenysPetrov for the feedback. I utilized `(u != n)` to disallow bifurcation in test cases. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1630-1631 + + RangeSet CastedL

[PATCH] D140086: [analyzer][solver] Improve reasoning for not equal to operator

2022-12-18 Thread Manas Gupta via Phabricator via cfe-commits
manas added inline comments. Comment at: clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp:1642 +if (LHS.isUnsigned() ^ RHS.isUnsigned()) { + if (LHS.isUnsigned() && (LHS.getBitWidth() >= RHS.getBitWidth())) { + steakhal wrote: > manas wrote: > >

  1   2   >