Lines Matching refs:VD

944   bool hasUnclaimedUses(const VarDecl *VD) const {  in hasUnclaimedUses()
946 return any_of(*Uses, [VD](const DeclRefExpr *DRE) { in hasUnclaimedUses()
947 return DRE->getDecl()->getCanonicalDecl() == VD->getCanonicalDecl(); in hasUnclaimedUses()
951 UseSetTy getUnclaimedUses(const VarDecl *VD) const { in getUnclaimedUses()
954 if (use->getDecl()->getCanonicalDecl() == VD->getCanonicalDecl()) { in getUnclaimedUses()
963 if (const auto *VD = dyn_cast<VarDecl>(D)) { in discoverDecl() local
969 Defs[VD] = DS; in discoverDecl()
974 const DeclStmt *lookupDecl(const VarDecl *VD) const { in lookupDecl()
975 return Defs.lookup(VD); in lookupDecl()
1007 void set(const VarDecl *VD, Kind K) { Map[VD] = K; } in set() argument
1009 Kind lookup(const VarDecl *VD) const { in lookup()
1010 auto I = Map.find(VD); in lookup()
1278 if (const auto *VD = dyn_cast<VarDecl>(DRE->getDecl())) { in groupWarningGadgetsByVar() local
1279 result.byVar[VD].insert(G.get()); in groupWarningGadgetsByVar()
1307 if (const auto *VD = dyn_cast<VarDecl>(DRE->getDecl())) { in groupFixablesByVar() local
1308 FixablesForUnsafeVars.byVar[VD].insert(F.get()); in groupFixablesByVar()
1384 static bool isNonNegativeIntegerExpr(const Expr *Expr, const VarDecl *VD, in isNonNegativeIntegerExpr() argument
1398 if (const auto *VD = dyn_cast<VarDecl>(DRE->getDecl())) { in getFixits() local
1399 switch (S.lookup(VD)) { in getFixits()
1405 VD->getASTContext(); in getFixits()
1406 if (!isNonNegativeIntegerExpr(Node->getIdx(), VD, Ctx)) in getFixits()
1427 const auto *VD = cast<VarDecl>(DREs.front()->getDecl()); in getFixits() local
1429 switch (S.lookup(VD)) { in getFixits()
1519 static SourceLocation getVarDeclIdentifierLoc(const VarDecl *VD) { in getVarDeclIdentifierLoc() argument
1522 return VD->getLocation(); in getVarDeclIdentifierLoc()
1527 getVarDeclIdentifierText(const VarDecl *VD, const SourceManager &SM, in getVarDeclIdentifierText() argument
1529 SourceLocation ParmIdentBeginLoc = getVarDeclIdentifierLoc(VD); in getVarDeclIdentifierText()
1545 static bool hasUnsupportedSpecifiers(const VarDecl *VD, in hasUnsupportedSpecifiers() argument
1549 bool AttrRangeOverlapping = llvm::any_of(VD->attrs(), [&](Attr *At) -> bool { in hasUnsupportedSpecifiers()
1551 VD->getBeginLoc())) && in hasUnsupportedSpecifiers()
1552 !(SM.isBeforeInTranslationUnit(VD->getEndLoc(), in hasUnsupportedSpecifiers()
1555 return VD->isInlineSpecified() || VD->isConstexpr() || in hasUnsupportedSpecifiers()
1556 VD->hasConstantInitialization() || !VD->hasLocalStorage() || in hasUnsupportedSpecifiers()
1582 getPointeeTypeText(const VarDecl *VD, const SourceManager &SM, in getPointeeTypeText() argument
1585 QualType Ty = VD->getType(); in getPointeeTypeText()
1592 TypeLoc TyLoc = VD->getTypeSourceInfo()->getTypeLoc().getUnqualifiedLoc(); in getPointeeTypeText()
1603 assert(isa<ParmVarDecl>(VD) && "An array type shall not be treated as a " in getPointeeTypeText()
1618 SourceLocation IdentLoc = getVarDeclIdentifierLoc(VD); in getPointeeTypeText()
1687 const VarDecl *VD = dyn_cast<VarDecl>(BaseDeclRefExpr->getDecl()); in getFixits() local
1689 if (VD && s.lookup(VD) == Strategy::Kind::Span) { in getFixits()
1690 ASTContext &Ctx = VD->getASTContext(); in getFixits()
1750 const VarDecl *VD = cast<VarDecl>(BaseDeclRefExpr->getDecl()); in getFixits() local
1751 switch (S.lookup(VD)) { in getFixits()
1753 ASTContext &Ctx = VD->getASTContext(); in getFixits()
1782 const auto VD = cast<VarDecl>(Node->getDecl()); in getFixits() local
1783 switch (S.lookup(VD)) { in getFixits()
1785 ASTContext &Ctx = VD->getASTContext(); in getFixits()
1851 if (const VarDecl *VD = dyn_cast<VarDecl>(DREs.front()->getDecl())) { in getFixits() local
1852 if (S.lookup(VD) == Strategy::Kind::Span) { in getFixits()
1856 StringRef varName = VD->getName(); in getFixits()
1857 const ASTContext &Ctx = VD->getASTContext(); in getFixits()
1859 if (!isNonNegativeIntegerExpr(Offset, VD, Ctx)) in getFixits()
1892 if (const VarDecl *VD = dyn_cast<VarDecl>(DREs.front()->getDecl())) { in getFixits() local
1893 if (S.lookup(VD) == Strategy::Kind::Span) { in getFixits()
1897 StringRef varName = VD->getName(); in getFixits()
1898 const ASTContext &Ctx = VD->getASTContext(); in getFixits()
2017 static std::optional<std::string> createSpanTypeForVarDecl(const VarDecl *VD, in createSpanTypeForVarDecl() argument
2019 assert(VD->getType()->isPointerType()); in createSpanTypeForVarDecl()
2023 VD, Ctx.getSourceManager(), Ctx.getLangOpts(), &PteTyQualifiers); in createSpanTypeForVarDecl()
2355 static FixItList fixVariableWithSpan(const VarDecl *VD, in fixVariableWithSpan() argument
2359 const DeclStmt *DS = Tracker.lookupDecl(VD); in fixVariableWithSpan()
2361 DEBUG_NOTE_DECL_FAIL(VD, " : variables declared this way not implemented yet"); in fixVariableWithSpan()
2366 DEBUG_NOTE_DECL_FAIL(VD, " : multiple VarDecls"); in fixVariableWithSpan()
2375 return fixLocalVarDeclWithSpan(VD, Ctx, getUserFillPlaceHolder(), Handler); in fixVariableWithSpan()
2381 fixVariable(const VarDecl *VD, Strategy::Kind K, in fixVariable() argument
2385 if (const auto *PVD = dyn_cast<ParmVarDecl>(VD)) { in fixVariable()
2390 DEBUG_NOTE_DECL_FAIL(VD, " : function not currently analyzed"); in fixVariable()
2406 DEBUG_NOTE_DECL_FAIL(VD, " : unsupported function decl"); in fixVariable()
2413 if (VD->getType()->isPointerType()) { in fixVariable()
2414 if (const auto *PVD = dyn_cast<ParmVarDecl>(VD)) in fixVariable()
2417 if (VD->isLocalVarDecl()) in fixVariable()
2418 return fixVariableWithSpan(VD, Tracker, Ctx, Handler); in fixVariable()
2420 DEBUG_NOTE_DECL_FAIL(VD, " : not a pointer"); in fixVariable()
2448 static bool isParameterOf(const VarDecl *VD, const Decl *D) { in isParameterOf() argument
2449 return isa<ParmVarDecl>(VD) && in isParameterOf()
2450 VD->getDeclContext() == dyn_cast<DeclContext>(D); in isParameterOf()
2462 for (const auto &[VD, Ignore] : FixItsForVariable) { in eraseVarsForUnfixableGroupMates()
2463 VarGrpRef Grp = VarGrpMgr.getGroupOfVar(VD); in eraseVarsForUnfixableGroupMates()
2521 for (const auto &[VD, Fixables] : FixablesForAllVars.byVar) { in getFixIts()
2522 FixItsForVariable[VD] = in getFixIts()
2523 fixVariable(VD, S.lookup(VD), D, Tracker, Ctx, Handler); in getFixIts()
2526 if (FixItsForVariable[VD].empty()) { in getFixIts()
2527 FixItsForVariable.erase(VD); in getFixIts()
2534 FixItsForVariable[VD].insert(FixItsForVariable[VD].end(), in getFixIts()
2540 VD, F->getBaseStmt()->getBeginLoc(), in getFixIts()
2544 FixItsForVariable.erase(VD); in getFixIts()
2610 for (const VarDecl *VD : UnsafeVars) { in getNaiveStrategy() local
2611 S.set(VD, Strategy::Kind::Span); in getNaiveStrategy()
2929 for (const auto &[VD, WarningGadgets] : UnsafeOps.byVar) { in checkUnsafeBufferUsage()
2930 auto FixItsIt = FixItsForVariableGroup.find(VD); in checkUnsafeBufferUsage()
2931 Handler.handleUnsafeVariableGroup(VD, VarGrpMgr, in checkUnsafeBufferUsage()