rnkovacs added inline comments.

================
Comment at: lib/StaticAnalyzer/Checkers/InnerPointerChecker.cpp:192
 
-  if (Call.isCalled(CStrFn) || Call.isCalled(DataFn)) {
-    SVal RawPtr = Call.getReturnValue();
-    if (SymbolRef Sym = RawPtr.getAsSymbol(/*IncludeBaseRegions=*/true)) {
-      // Start tracking this raw pointer by adding it to the set of symbols
-      // associated with this container object in the program state map.
-      PtrSet::Factory &F = State->getStateManager().get_context<PtrSet>();
-      const PtrSet *SetPtr = State->get<RawPtrMap>(ObjRegion);
-      PtrSet Set = SetPtr ? *SetPtr : F.getEmptySet();
-      assert(C.wasInlined || !Set.contains(Sym));
-      Set = F.add(Set, Sym);
-      State = State->set<RawPtrMap>(ObjRegion, Set);
-      C.addTransition(State);
+      SVal Arg = FC->getArgSVal(ArgI);
+      const auto *ArgRegion =
----------------
NoQ wrote:
> xazax.hun wrote:
> > While I cannot recall examples in the STL the number of arguments and 
> > parameters might differ. We might have ellipsis in the parameters and this 
> > way we may pass more arguments. Since we do not have the parameter type for 
> > this case, I think it is ok to not handle it. But it might be worth to have 
> > a comment. The other case, when we have default arguments. I do not really 
> > know how the analyzer behaves with default arguments but maybe it would be 
> > worth to add a test case to ensure we do not crash on that?
> The analyzer behaves pretty badly with default arguments; we don't really 
> model them unless they are like plain integer literals. But that's not an 
> issue here because a default parameter/argument is still both a parameter and 
> an argument (where the argument expression takes the form of 
> `CXXDefaultArgExpr`).
Hm, it seems that passing objects of non-trivial types like `std::string` to a 
variadic function is implementation defined, and for `clang 6.0`, this means 
that it does not compile (does compile with `gcc 8.1` though, [[ 
https://godbolt.org/g/C3MCtV | example ]]).

Added a test for the default parameter case.


https://reviews.llvm.org/D49656



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to