reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/StaticAnalyzer/Checkers/IteratorChecker.cpp
  371   const auto *Func = dyn_cast_or_null<FunctionDecl>(Call.getDecl());
  379       if (const auto *InstCall = dyn_cast<CXXInstanceCall>(&Call)) {
  382         verifyAccess(C, Call.getArgSVal(0));
  388         if (const auto *InstCall = dyn_cast<CXXInstanceCall>(&Call)) {
  391           if (Call.getNumArgs() >= 1) {
  392             verifyIncrement(C, Call.getArgSVal(0));
  397         if (const auto *InstCall = dyn_cast<CXXInstanceCall>(&Call)) {
  400           if (Call.getNumArgs() >= 1) {
  401             verifyDecrement(C, Call.getArgSVal(0));
  405         if (const auto *InstCall = dyn_cast<CXXInstanceCall>(&Call)) {
  407           if (Call.getNumArgs() >= 1 &&
  408               Call.getArgExpr(0)->getType()->isIntegralOrEnumerationType()) {
  411                                    Call.getArgSVal(0));
  414           if (Call.getNumArgs() >= 2 &&
  415               Call.getArgExpr(1)->getType()->isIntegralOrEnumerationType()) {
  417                                    Call.getArgSVal(0), Call.getArgSVal(1));
  417                                    Call.getArgSVal(0), Call.getArgSVal(1));
  422         if (const auto *InstCall = dyn_cast<CXXInstanceCall>(&Call)) {
  425           verifyDereference(C, Call.getArgSVal(0));
  431       if (const auto *InstCall = dyn_cast<CXXInstanceCall>(&Call)) {
  432         if (Call.getNumArgs() < 1)
  436             !isIteratorType(Call.getArgExpr(0)->getType()))
  439         verifyMatch(C, InstCall->getCXXThisVal(), Call.getArgSVal(0));
  441         if (Call.getNumArgs() < 2)
  444         if (!isIteratorType(Call.getArgExpr(0)->getType()) ||
  445             !isIteratorType(Call.getArgExpr(1)->getType()))
  448         verifyMatch(C, Call.getArgSVal(0), Call.getArgSVal(1));
  448         verifyMatch(C, Call.getArgSVal(0), Call.getArgSVal(1));
  451   } else if (const auto *InstCall = dyn_cast<CXXInstanceCall>(&Call)) {
  460       verifyMatch(C, Call.getArgSVal(0),
  462       if (Call.getNumArgs() == 2) {
  463         verifyMatch(C, Call.getArgSVal(1),
  467       verifyMatch(C, Call.getArgSVal(0),
  469       if (Call.getNumArgs() == 3 &&
  470           isIteratorType(Call.getArgExpr(1)->getType()) &&
  471           isIteratorType(Call.getArgExpr(2)->getType())) {
  472         verifyMatch(C, Call.getArgSVal(1), Call.getArgSVal(2));
  472         verifyMatch(C, Call.getArgSVal(1), Call.getArgSVal(2));
  475       verifyMatch(C, Call.getArgSVal(0),
  478   } else if (isa<CXXConstructorCall>(&Call)) {
  480     if (Call.getNumArgs() < 2)
  483     const auto *Ctr = cast<CXXConstructorDecl>(Call.getDecl());
  491     if (!isIteratorType(Call.getArgExpr(0)->getType()) ||
  492         !isIteratorType(Call.getArgExpr(1)->getType()))
  495     verifyMatch(C, Call.getArgSVal(0), Call.getArgSVal(1));
  495     verifyMatch(C, Call.getArgSVal(0), Call.getArgSVal(1));
  549           LHS = Call.getArgSVal(J);
  551           verifyMatch(C, LHS, Call.getArgSVal(J));