[PATCH] D133865: [clang][dataflow] Replace usage of the deprecated overload of `checkDataflow`.

2022-09-15 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/unittests/Analysis/FlowSensitive/TestingSupportTest.cpp:83-88 +AnalysisInputs( +Code, hasName(Target), +[](ASTContext &Co

[PATCH] D133930: [clang][dataflow] Replace `transfer(const Stmt *, ...)` with `transfer(const CFGElement *, ...)` in `Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel`.

2022-09-15 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. This revision is now accepted and ready to land. Comment at: clang/include/clang/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.h:75 + std::vector + diagnose(ASTContext &Context, const CFGElement *Elt, co

[PATCH] D133933: [clang][dataflow] Modify `transfer` in `DataflowModel` to take `CFGElement` as input instead of `Stmt`.

2022-09-15 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. This revision is now accepted and ready to land. Comment at: clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h:235 + /// Return value indicates whether the model processed the `Element`. + virtual bool tra

[PATCH] D133935: [clang][dataflow] Refactor `clang/Analysis/FlowSensitive/MatchSwitchTest.cpp`.

2022-09-15 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. This revision is now accepted and ready to land. Comment at: clang/unittests/Analysis/FlowSensitive/MatchSwitchTest.cpp:139 TEST(MatchSwitchTest, ReturnNonVoid) { using namespace ast_matchers; Let

[PATCH] D127898: [clang][dataflow] Add API to separate analysis from diagnosis

2022-06-28 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp:401 + const TypeErasedDataflowAnalysisState &State) { +PostVisitStmt(Stmt.getStmt(), State); + }

[PATCH] D128352: [clang][dataflow] Use diagnosis API in optional checker

2022-06-28 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h:126-129 +auto *Lattice = +llvm::any_cast(&State.Lattice.Value); +PostVisitStmt(Stmt, DataflowAnalysisState{ +

[PATCH] D128833: [clang][dataflow] Handle `for` statements without conditions

2022-06-29 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev created this revision. sgatev added reviewers: ymandel, xazax.hun, gribozavr2. Herald added subscribers: martong, tschuett, rnkovacs. Herald added a project: All. sgatev requested review of this revision. Herald added a project: clang. Handle `for` statements without conditions. Repositor

[PATCH] D128833: [clang][dataflow] Handle `for` statements without conditions

2022-06-30 Thread Stanislav Gatev via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG8207c2a66030: [clang][dataflow] Handle `for` statements without conditions (authored by sgatev). Herald added a reviewer: NoQ. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://re

[PATCH] D128924: [clang][dataflow] Replace TEST_F with TEST where possible

2022-06-30 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added a comment. Thanks! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D128924/new/ https://reviews.llvm.org/D128924 ___ cfe-commits mailing list cfe-commits@lists.ll

[PATCH] D129180: [clang][dataflow] Return a solution from the solver when `Constraints` are `Satisfiable`.

2022-07-06 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/Solver.h:45 +enum class Assignment : int8_t { + Unassigned = -1, + AssignedFalse = 0, A solution consists of true/false assignments for all variables. Having an `U

[PATCH] D129180: [clang][dataflow] Return a solution from the solver when `Constraints` are `Satisfiable`.

2022-07-07 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/Solver.h:78 +Status Status; +std::optional> Solution; }; `#include "llvm/ADT/DenseMap.h"` Comment at: clang/lib/Analy

[PATCH] D122231: [clang][dataflow] Add support for `value_or` in a comparison.

2022-03-28 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp:270 + // needed. + BoolValue &ComparisonValue = MakeValue(Env, *HasValueVal); + auto *ComparisonExprLoc = ymandel wrote: > ymandel wrote: > > xa

[PATCH] D122231: [clang][dataflow] Add support for `value_or` in a comparison.

2022-03-29 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp:270 + // needed. + BoolValue &ComparisonValue = MakeValue(Env, *HasValueVal); + auto *ComparisonExprLoc = ymandel wrote: > sgatev wrote: > > yma

[PATCH] D122231: [clang][dataflow] Add support for `value_or` in a comparison.

2022-03-30 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp:279 + cast_or_null(Env.getValue(*ComparisonExprLoc))) { +Env.setValue(*ComparisonExprLoc, + Env.m

[PATCH] D122231: [clang][dataflow] Add support for `value_or` in a comparison.

2022-03-31 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp:275 + State.Env.getValue(*ValueOrPredExpr, SkipPast::None)); + if (ExprValue == nullptr) { +auto &ExprLoc = State.Env.creat

[PATCH] D122273: [clang][dataflow] Fix handling of base-class fields

2022-03-31 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. This revision is now accepted and ready to land. Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:168 +static void +getFieldsFromClassHierarchy(QualType Type, bool IgnorePrivateFields, +

[PATCH] D122273: [clang][dataflow] Fix handling of base-class fields

2022-03-31 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/StorageLocation.h:59-60 /// can be traced independently by abstract interpretation. For example: a -/// struct with public members. +/// struct with public members

[PATCH] D122830: [clang][dataflow] Add support for (built-in) (in)equality operators

2022-03-31 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:53 + if (auto *LHSValue = dyn_cast_or_null( + Env.getValue(*LHSNorm, SkipPast::Reference))) +if (auto *RHSValue = dyn_cast_or_null( ---

[PATCH] D122838: [clang][dataflow] Add support for correlation of boolean (tracked) values

2022-04-01 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. This revision is now accepted and ready to land. Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:79 +for (BoolValue *Constraint : Env1.getFlowConditionConstraints()) { + Expr1 = &Env1.makeA

[PATCH] D123037: [clang][dataflow] Support integral casts

2022-04-05 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:206 + // boolean. + auto &ExprLoc = Env.createStorageLocation(*S); + Env.setStorageLocation(*S, ExprLoc); Nit: Just `Loc`? I beli

[PATCH] D130522: [clang][dataflow] Fix SAT solver crashes on `X ^ X` and `X v X`

2022-07-25 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/WatchedLiteralsSolver.cpp:273 + +// Visit a sub-value of `Val` (pick any, they are identical). + } else { Let's visit `C->getLeftSubValue()` her

[PATCH] D130519: [clang][dataflow] Add explicit "AST" nodes for implications and iff

2022-07-26 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/Value.h:40-41 // Synthetic boolean values are either atomic values or composites that // represent conjunctions, disjunctions, and negations. Atomi

[PATCH] D130600: [clang][dataflow] Handle return statements

2022-07-26 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:338-339 +if (Loc == nullptr) { + // The outermost context does not set a storage location for `return`, so + // in that case we just ignore `return` statements. + return; --

[PATCH] D130600: [clang][dataflow] Handle return statements

2022-07-28 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/DataflowAnalysisContext.h:114 + /// + /// `return` must not be assigned a storage location. + void setReturnStorageLocation(StorageLocation &Loc) { li.zhe.hua wrote: > sames

[PATCH] D130270: [clang][dataflow] Use a dedicated bool to encode which branch was taken

2022-07-28 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:103 if (Value *MergedVal = MergedEnv.createValue(Type)) if (Model.merge(Type, *Val1, Env1, *Val2, Env2, *MergedVal, MergedEnv)) return

[PATCH] D131014: [clang][dataflow] Make the type of the post visit callback consistent

2022-08-02 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev created this revision. sgatev added reviewers: ymandel, xazax.hun, gribozavr2, samestep. Herald added subscribers: martong, tschuett, rnkovacs. Herald added a reviewer: NoQ. Herald added a project: All. sgatev requested review of this revision. Herald added a project: clang. Make the type o

[PATCH] D131014: [clang][dataflow] Make the type of the post visit callback consistent

2022-08-02 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 449398. sgatev added a comment. Update commit message Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D131014/new/ https://reviews.llvm.org/D131014 Files: clang/include/clang/Analysis/FlowSensitive/DataflowAnaly

[PATCH] D129097: [clang][dataflow] Handle null pointers of type std::nullptr_t

2022-08-02 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/DataflowAnalysisContext.h:96 /// /// `Type` must not be null. StorageLocation &getStableStorageLocation(QualType Type); This is inconsistent with the change introduced

[PATCH] D131021: [clang][dataflow] Rename member to make it clear that it isn't stable

2022-08-02 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev created this revision. sgatev added reviewers: ymandel, xazax.hun, gribozavr2, wyt. Herald added subscribers: martong, tschuett, rnkovacs. Herald added a reviewer: NoQ. Herald added a project: All. sgatev requested review of this revision. Herald added a project: clang. Rename `DataflowAnal

[PATCH] D131021: [clang][dataflow] Rename member to make it clear that it isn't stable

2022-08-02 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 449436. sgatev added a comment. Update commit message Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D131021/new/ https://reviews.llvm.org/D131021 Files: clang/include/clang/Analysis/FlowSensitive/DataflowAnaly

[PATCH] D131014: [clang][dataflow] Make the type of the post visit callback consistent

2022-08-02 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 449449. sgatev added a comment. Herald added a subscriber: carlosgalvezp. Herald added a project: clang-tools-extra. Address comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D131014/new/ https://reviews.llv

[PATCH] D131014: [clang][dataflow] Make the type of the post visit callback consistent

2022-08-02 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added a comment. In D131014#3694852 , @samestep wrote: > Seems reasonable 👍 I'm curious though, why does this not require > `clang-tools-extra/clang-tidy/bugprone/UncheckedOptionalAccessCheck.cpp` to > be updated? It does, thanks! Fixed. Repos

[PATCH] D131039: [clang][dataflow] Add cache of `ControlFlowContext`s for function decls.

2022-08-02 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/ControlFlowContext.h:34 + /// Builds a ControlFlowContext from an AST node. `D` is the function in which + /// `S` resides. All arguments must be non-null. static llvm::Expected build(const

[PATCH] D131014: [clang][dataflow] Make the type of the post visit callback consistent

2022-08-02 Thread Stanislav Gatev via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGc44c71843f3e: [clang][dataflow] Make the type of the post visit callback consistent (authored by sgatev). Repository: rG LLVM Github Monorepo CHA

[PATCH] D131021: [clang][dataflow] Rename member to make it clear that it isn't stable

2022-08-02 Thread Stanislav Gatev via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG817dd5e3fd6b: [clang][dataflow] Rename member to make it clear that it isn't stable (authored by sgatev). Repository: rG LLVM Github Monorepo CHA

[PATCH] D131065: [clang][dataflow] Store DeclContext of block being analysed in Environment if available.

2022-08-03 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. This revision is now accepted and ready to land. Comment at: clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h:170 + /// Returns the `DeclCtx` of the block being analysed if provided, otherwise + ///

[PATCH] D131039: [clang][dataflow] Add cache of `ControlFlowContext`s for function decls.

2022-08-03 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/ControlFlowContext.h:34 + /// Builds a ControlFlowContext from an AST node. `D` is the function in which + /// `S` resides. All arguments must be non-null. st

[PATCH] D131109: [clang][dataflow][NFC] Fix outdated comment on getStableStorageLocation

2022-08-03 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added a comment. Thanks! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D131109/new/ https://reviews.llvm.org/D131109 ___ cfe-commits mailing list cfe-commits@lists.ll

[PATCH] D130600: [clang][dataflow] Handle return statements

2022-08-03 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:345 +// FIXME: Support reference-type returns. +assert(Val->getKind() != Value::Kind::Reference); + Let's do `if (Val->getKind() == Value::Kind::Reference) return;`. O

[PATCH] D130726: [clang][dataflow] Handle multiple context-sensitive calls to the same function

2022-08-03 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:250 + // scope, we do not propagate the maps. + this->LocToVal = std::move(CalleeEnv.LocToVal); + this->MemberLocToStruct = std::move(CalleeEnv.MemberLocToStruct); --

[PATCH] D130600: [clang][dataflow] Handle return statements

2022-08-04 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:348 +auto *Loc = Env.getReturnStorageLocation(); +assert(Loc != nullptr); +// FIXME: Model NRVO. samestep wrote: > sgatev wrote: > > Let's do `if (Loc == nullptr)

[PATCH] D131170: [clang][dataflow] Analyze method bodies

2022-08-04 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h:383 StorageLocation *ReturnLoc = nullptr; - // FIXME: Move `ThisPointeeLoc` here from `DataflowAnalysisContext`. + StorageLocation *ThisPointeeLoc = nullptr;

[PATCH] D131170: [clang][dataflow] Analyze method bodies

2022-08-04 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. This revision is now accepted and ready to land. Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:217 +const Expr *Arg = MethodCall->getImplicitObjectArgument(); +Env.ThisPointeeLoc = Env.get

[PATCH] D130600: [clang][dataflow] Handle return statements

2022-08-04 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:208 Environment Env(*this); + Env.ReturnLoc = Env.getStorageLocation(*Call, SkipPast::Reference); Let's add a FIXME to support

[PATCH] D131170: [clang][dataflow] Analyze method bodies

2022-08-04 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:217 +const Expr *Arg = MethodCall->getImplicitObjectArgument(); +Env.ThisPointeeLoc = Env.getStorageLocation(*Arg, SkipPast::Reference); + } samestep wrote

[PATCH] D131065: [clang][dataflow] Store DeclContext of block being analysed in Environment if available.

2022-08-05 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:537-539 + auto *Caller = Env.getDeclCtx(); + Env = Environment(ExitState->Env); + Env.setDeclCtx(Caller); I believe you'll need t

[PATCH] D131280: [clang][dataflow] Parameterize analysis by explicit map of analyzable functions.

2022-08-08 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/ControlFlowContext.h:83 +/// overload sets. change the key to support uniqueness. +llvm::Expected> +buildFunctionMapFromAST(ASTUnit &Unit); `#include "llvm/ADT/StringMap.h"` ==

[PATCH] D131438: [clang][dataflow] Analyze constructor bodies

2022-08-09 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h:138 /// + /// `Call` must be either a `CallExpr` or a `CXXConstructExpr`. + /// How about we define overloads that take these types instead of taking

[PATCH] D131438: [clang][dataflow] Analyze constructor bodies

2022-08-10 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h:379 + /// Shared implementation of `pushCall` overloads. + void pushCallInternal(const FunctionDecl *FuncDecl, +Arra

[PATCH] D121197: [clang][dataflow] Add analysis that detects unsafe accesses to optionals

2022-03-09 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 414029. sgatev marked 2 inline comments as done. sgatev added a comment. Address reviewers' comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D121197/new/ https://reviews.llvm.org/D121197 Files: clang/i

[PATCH] D121197: [clang][dataflow] Add analysis that detects unsafe accesses to optionals

2022-03-09 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp:115 + // optional::has_value + .CaseOf(isOptionalMemberCallWithName("has_value"), + transferOptionalHasValueCall) xazax.hun

[PATCH] D121197: [clang][dataflow] Add analysis that detects unsafe accesses to optionals

2022-03-09 Thread Stanislav Gatev via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGce205cffdfa0: [clang][dataflow] Add analysis that detects unsafe accesses to optionals (authored by sgatev). Changed prior to commit: https://revi

[PATCH] D121285: [clang][dataflow] Move dataflow testing support out of unittests

2022-03-09 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev created this revision. sgatev added reviewers: ymandel, xazax.hun, gribozavr2. Herald added subscribers: tschuett, steakhal, rnkovacs, mgorny. Herald added a project: All. sgatev requested review of this revision. Herald added a reviewer: jdoerfert. Herald added a subscriber: sstefan1. Heral

[PATCH] D121285: [clang][dataflow] Move dataflow testing support out of unittests

2022-03-09 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 414074. sgatev added a comment. Update top level comment. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D121285/new/ https://reviews.llvm.org/D121285 Files: clang/include/clang/Analysis/FlowSensitive/Testing/D

[PATCH] D121285: [clang][dataflow] Move dataflow testing support out of unittests

2022-03-09 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 414094. sgatev added a comment. Move NoopAnalysis.h to clang/include/clang/Analysis/FlowSensitive/Testing. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D121285/new/ https://reviews.llvm.org/D121285 Files: cla

[PATCH] D121285: [clang][dataflow] Move dataflow testing support out of unittests

2022-03-09 Thread Stanislav Gatev via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG26bbde2612b2: [clang][dataflow] Move dataflow testing support out of unittests (authored by sgatev). Repository: rG LLVM Github Monorepo CHANGES

[PATCH] D121378: [clang][dataflow] Model the behavior of various optional members

2022-03-10 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev created this revision. sgatev added reviewers: ymandel, xazax.hun, gribozavr2. Herald added subscribers: tschuett, steakhal, rnkovacs. Herald added a project: All. sgatev requested review of this revision. Herald added a project: clang. Model `make_optional`, optional's default constructor,

[PATCH] D121378: [clang][dataflow] Model the behavior of various optional members

2022-03-10 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 414396. sgatev marked an inline comment as done. sgatev added a comment. Address reviewers' comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D121378/new/ https://reviews.llvm.org/D121378 Files: clang/li

[PATCH] D121378: [clang][dataflow] Model the behavior of various optional members

2022-03-10 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev marked an inline comment as done. sgatev added inline comments. Comment at: clang/unittests/Analysis/FlowSensitive/UncheckedOptionalAccessModelTest.cpp:33 static constexpr char StdTypeTraitsHeader[] = R"( +#ifndef TYPE_TRAITS_H +#define TYPE_TRAITS_H xaz

[PATCH] D121455: [clang][dataflow] Add support for nested composite bool expressions

2022-03-11 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev created this revision. sgatev added reviewers: ymandel, xazax.hun, gribozavr2. Herald added subscribers: tschuett, steakhal, rnkovacs. Herald added a project: All. sgatev requested review of this revision. Herald added a project: clang. This is part of the implementation of the dataflow ana

[PATCH] D121378: [clang][dataflow] Model the behavior of various optional members

2022-03-13 Thread Stanislav Gatev via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. sgatev marked an inline comment as done. Closed by commit rG9e0fc6768378: [clang][dataflow] Model the behavior of various optional members (authored by sgatev). Reposi

[PATCH] D121455: [clang][dataflow] Add support for nested composite bool expressions

2022-03-14 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 415021. sgatev marked an inline comment as done. sgatev added a comment. Address reviewers' comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D121455/new/ https://reviews.llvm.org/D121455 Files: clang/li

[PATCH] D121455: [clang][dataflow] Add support for nested composite bool expressions

2022-03-14 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:516 +// assigned to it. +Visit(&SubExpr); +if (auto *Val = dyn_cast_or_null( xazax.hun wrote: > Could you elaborate on when would this happen? I'd expect the trave

[PATCH] D121602: [clang][dataflow] Model the behavior of non-standard optional constructors

2022-03-14 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev created this revision. sgatev added reviewers: ymandel, xazax.hun, gribozavr2. Herald added subscribers: tschuett, steakhal, rnkovacs. Herald added a project: All. sgatev requested review of this revision. Herald added a project: clang. Model nullopt, inplace, value, and conversion construc

[PATCH] D121455: [clang][dataflow] Add support for nested composite bool expressions

2022-03-14 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:516 +// assigned to it. +Visit(&SubExpr); +if (auto *Val = dyn_cast_or_null( xazax.hun wrote: > sgatev wrote: > > xazax.hun wrote: > > > Could you elaborate on whe

[PATCH] D121455: [clang][dataflow] Add support for nested composite bool expressions

2022-03-14 Thread Stanislav Gatev via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rGcf63e9d4cacc: [clang][dataflow] Add support for nested composite bool expressions (authored by sgatev). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D121455/

[PATCH] D121602: [clang][dataflow] Model the behavior of non-standard optional constructors

2022-03-14 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 415177. sgatev marked 2 inline comments as done. sgatev added a comment. Address reviewers' comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D121602/new/ https://reviews.llvm.org/D121602 Files: clang/in

[PATCH] D121602: [clang][dataflow] Model the behavior of non-standard optional constructors

2022-03-14 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 415178. sgatev marked 2 inline comments as done. sgatev added a comment. Add a FIXME. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D121602/new/ https://reviews.llvm.org/D121602 Files: clang/include/clang/Anal

[PATCH] D121602: [clang][dataflow] Model the behavior of non-standard optional constructors

2022-03-14 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev marked 2 inline comments as done. sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp:264 + +[](const CXXMemberCallExpr *E, LatticeTransferState &State) { +assignOptionalValue(*E->getImpli

[PATCH] D121602: [clang][dataflow] Model the behavior of non-standard optional constructors

2022-03-15 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 415349. sgatev marked 3 inline comments as done. sgatev added a comment. Address reviewers' comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D121602/new/ https://reviews.llvm.org/D121602 Files: clang/in

[PATCH] D121602: [clang][dataflow] Model the behavior of non-standard optional constructors

2022-03-15 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/MatchSwitch.h:146 + std::vector> + Actions; xazax.hun wrote: > Nit: looks like we need to repeat the action type. Should we restore the > using above? It's not the same. T

[PATCH] D121602: [clang][dataflow] Model the behavior of non-standard optional constructors

2022-03-15 Thread Stanislav Gatev via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG092a530ca187: [clang][dataflow] Model the behavior of non-standard optional constructors (authored by sgatev). Repository: rG LLVM Github Monorepo

[PATCH] D121197: [clang][dataflow] Add analysis that detects unsafe accesses to optionals

2022-03-16 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added a comment. In D121197#3385669 , @Szelethus wrote: > Seems like all new files are missing the header blurb about the licence. Thanks for spotting that! I'll prepare a patch to fix it. Repository: rG LLVM Github Monorepo CHANGES SINCE LAS

[PATCH] D121796: [clang][dataflow] Add an API for dataflow "models" -- reusable analysis components.

2022-03-16 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. This revision is now accepted and ready to land. Comment at: clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h:148-149 +/// b) Models should focus on _modeling_ a particular aspect of program +///semant

[PATCH] D121863: [clang][dataflow] Model the behavior of non-standard optional assignment

2022-03-16 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev created this revision. sgatev added reviewers: ymandel, xazax.hun, gribozavr2. Herald added subscribers: tschuett, steakhal, rnkovacs. Herald added a project: All. sgatev requested review of this revision. Herald added a project: clang. Model nullopt, value, and conversion assignment operat

[PATCH] D121863: [clang][dataflow] Model the behavior of non-standard optional assignment

2022-03-17 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 416132. sgatev marked 3 inline comments as done. sgatev added a comment. Address comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D121863/new/ https://reviews.llvm.org/D121863 Files: clang/include/clan

[PATCH] D121863: [clang][dataflow] Model the behavior of non-standard optional assignment

2022-03-17 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp:81 +auto isOptionalValueOrConversionAssignment() { + return cxxOperatorCallExpr( xazax.hun wrote: > While really like the convenience matchers w

[PATCH] D121863: [clang][dataflow] Model the behavior of non-standard optional assignment

2022-03-17 Thread Stanislav Gatev via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rGb000b7705ad8: [clang][dataflow] Model the behavior of non-standard optional assignment (authored by sgatev). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D12

[PATCH] D121797: [clang][dataflow] Add modeling of Chromium's CHECK functionality

2022-03-18 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/Models/ChromiumCheckModel.h:15 + +#include "clang/AST/ASTContext.h" +#include "clang/AST/DeclCXX.h" This is unnecessary. Commen

[PATCH] D122121: [clang][dataflow] Add action caching support to MatchSwitch

2022-03-21 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev created this revision. sgatev added reviewers: ymandel, xazax.hun, gribozavr2. Herald added subscribers: tschuett, steakhal, rnkovacs. Herald added a project: All. sgatev requested review of this revision. Herald added a project: clang. Enable default caching of actionsin `MatchSwitch` so t

[PATCH] D122129: [clang][dataflow] Model the behavior of optional and std swap

2022-03-21 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev created this revision. sgatev added reviewers: ymandel, xazax.hun, gribozavr2. Herald added subscribers: tschuett, steakhal, rnkovacs. Herald added a project: All. sgatev requested review of this revision. Herald added a project: clang. Repository: rG LLVM Github Monorepo https://reviews

[PATCH] D122121: [clang][dataflow] Add action caching support to MatchSwitch

2022-03-21 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 416906. sgatev added a comment. Address comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D122121/new/ https://reviews.llvm.org/D122121 Files: clang/include/clang/Analysis/FlowSensitive/MatchSwitch.h c

[PATCH] D122121: [clang][dataflow] Add action caching support to MatchSwitch

2022-03-21 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev marked an inline comment as done. sgatev added a comment. In D122121#3396022 , @ymandel wrote: > What is the motivation for stashing the results of a match on a statement? Do > we expect to encounter the same statement often? The matcher is evalu

[PATCH] D122129: [clang][dataflow] Model the behavior of optional and std swap

2022-03-21 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 416953. sgatev added a comment. Address comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D122129/new/ https://reviews.llvm.org/D122129 Files: clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAcc

[PATCH] D122129: [clang][dataflow] Model the behavior of optional and std swap

2022-03-22 Thread Stanislav Gatev via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG2ddd57ae1ec4: [clang][dataflow] Model the behavior of optional and std swap (authored by sgatev). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D122129/new/

[PATCH] D122143: [clang][dataflow] Add support for disabling warnings on smart pointers.

2022-03-22 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. This revision is now accepted and ready to land. Comment at: clang/include/clang/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.h:31 +struct UncheckedOptionalAccessModelOptions { + /// Ignore optionals rea

[PATCH] D122231: [clang][dataflow] Add support for `value_or` in a comparison.

2022-03-23 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp:119 + auto NonEmptyStringOptional = unaryOperator( + hasOperatorName("!"), + hasUnaryOperand(cxxMemberCallExpr( Why handle negation here

[PATCH] D123961: [clang][dataflow] Do not crash on missing `Value` for struct-typed variable init.

2022-04-19 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:184-186 - // FIXME: The initializer expression must always be assigned a value. - // Replace this with an assert when we have sufficient coverage of - // language features.

[PATCH] D123858: [clang][dataflow] Ensure well-formed flow conditions.

2022-04-19 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp:112-113 cast_or_null(Env.getValue(Cond, SkipPast::Reference)); -if (Val == nullptr) - return; +// Value merging depends on flow conditions from differe

[PATCH] D123961: [clang][dataflow] Do not crash on missing `Value` for struct-typed variable init.

2022-04-19 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:184-186 - // FIXME: The initializer expression must always be assigned a value. - // Replace this with an assert when we have sufficient coverage of -

[PATCH] D123858: [clang][dataflow] Ensure well-formed flow conditions.

2022-04-20 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/unittests/Analysis/FlowSensitive/TypeErasedDataflowAnalysisTest.cpp:884 +// +// Note: currently, abstract function calls are uninterpreted, so the test +// exercises this case. If and when we change t

[PATCH] D119447: [clang][dataflow] Include terminator statements in buildStmtToBasicBlockMap

2022-02-10 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev created this revision. sgatev added reviewers: ymandel, xazax.hun, gribozavr2. Herald added subscribers: tschuett, steakhal, rnkovacs. sgatev requested review of this revision. Herald added a project: clang. This will be necessary later when we add support for evaluating logic expressions s

[PATCH] D119447: [clang][dataflow] Include terminator statements in buildStmtToBasicBlockMap

2022-02-11 Thread Stanislav Gatev via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG87c32be023d2: [clang][dataflow] Include terminator statements in buildStmtToBasicBlockMap (authored by sgatev). Repository: rG LLVM Github Monorep

[PATCH] D119953: [clang][dataflow] Add transfer functions for logical and, or, not.

2022-02-16 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev created this revision. sgatev added reviewers: ymandel, xazax.hun, gribozavr2. Herald added subscribers: tschuett, steakhal, rnkovacs. sgatev requested review of this revision. Herald added a project: clang. This is part of the implementation of the dataflow analysis framework. See "[RFC] A

[PATCH] D119953: [clang][dataflow] Add transfer functions for logical and, or, not.

2022-02-16 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 409296. sgatev added a comment. Remove unnecessary IgnoreParens calls. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D119953/new/ https://reviews.llvm.org/D119953 Files: clang/include/clang/Analysis/FlowSensit

[PATCH] D119953: [clang][dataflow] Add transfer functions for logical and, or, not.

2022-02-16 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev updated this revision to Diff 409330. sgatev marked 5 inline comments as done. sgatev added a comment. Address reviewers' comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D119953/new/ https://reviews.llvm.org/D119953 Files: clang/in

[PATCH] D119953: [clang][dataflow] Add transfer functions for logical and, or, not.

2022-02-16 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev added inline comments. Comment at: clang/include/clang/Analysis/FlowSensitive/Value.h:39 +// represent conjunctions, disjunctions, and negations. +AtomicBoolValue, +BoolConjunctionValue, xazax.hun wrote: > Do we need `Value` in the `Kind` if we

[PATCH] D119953: [clang][dataflow] Add transfer functions for logical and, or, not.

2022-02-17 Thread Stanislav Gatev via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGdd4dde8d39a9: [clang][dataflow] Add transfer functions for logical and, or, not. (authored by sgatev). Repository: rG LLVM Github Monorepo CHANGE

[PATCH] D124104: [clang][dataflow] Fix `Environment::join`'s handling of flow condition merging

2022-04-24 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:339-341 // Move `LocToVal` so that `Environment::ValueModel::merge` can safely assign // values to storage locations while this code iterates ov

[PATCH] D124104: [clang][dataflow] Fix `Environment::join`'s handling of flow condition merging

2022-04-25 Thread Stanislav Gatev via Phabricator via cfe-commits
sgatev accepted this revision. sgatev added inline comments. Comment at: clang/unittests/Analysis/FlowSensitive/TypeErasedDataflowAnalysisTest.cpp:356 + +return V1 == V2 || + Env1.flowConditionImplies(*V1) == Env2.flowConditionImplies(*V2); ymandel

  1   2   3   4   >