NoQ added inline comments.
================ Comment at: clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp:409 - Optional<Summary> FoundSummary = findFunctionSummary(FD, CE, C); + for (const ValueConstraintPtr& VC : Summary.ArgConstraints) { + ProgramStateRef SuccessSt = VC->apply(State, Call, Summary); ---------------- martong wrote: > NoQ wrote: > > Maybe we should add an assertion that the same argument isn't specified > > multiple times. > I think there could be cases when we want to have e.g. a not-null constraint > on the 1st argument, but also we want to express that the 1st argument's size > is described by the 2nd argument. I am planning to implement such a > constraints in the future. In that case we would have two constraints on the > 1st argument and the assert would fire. Wait, i misunderstood the code. It's even worse than that: you're adding transitions in a loop, so it'll cause state splits for every constraint. Because you do not intend to create multiple branches here, there needs to be exactly one `addTransition` performed every time `checkPreCall` is called. I.e., for now this code is breaking everything whenever there's more than one constraint, regardless of whether it's on the same argument. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D73898/new/ https://reviews.llvm.org/D73898 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits