Lines Matching refs:Exp
407 const Expr *Exp = nullptr; member
415 bool isReference() const { return !Exp; } in isReference()
420 : Dec(D), Exp(E), Ctx(C) {} in VarDefinition()
457 if (VarDefinitions[i].Exp) { in lookupExpr()
459 return VarDefinitions[i].Exp; in lookupExpr()
497 const Expr *Exp = VarDefinitions[i].Exp; in dump() local
502 if (Exp) Exp->dump(); in dump()
538 Context addDefinition(const NamedDecl *D, const Expr *Exp, Context Ctx) { in addDefinition() argument
542 VarDefinitions.push_back(VarDefinition(D, Exp, Ctx)); in addDefinition()
556 Context updateDefinition(const NamedDecl *D, Expr *Exp, Context Ctx) { in updateDefinition() argument
561 VarDefinitions.push_back(VarDefinition(D, Exp, Ctx)); in updateDefinition()
1112 void getMutexIDs(CapExprSet &Mtxs, AttrType *Attr, const Expr *Exp,
1116 void getMutexIDs(CapExprSet &Mtxs, AttrType *Attr, const Expr *Exp,
1143 const Expr *Exp, AccessKind AK, Expr *MutexExp,
1146 void warnIfMutexHeld(const FactSet &FSet, const NamedDecl *D, const Expr *Exp,
1150 void checkAccess(const FactSet &FSet, const Expr *Exp, AccessKind AK,
1152 void checkPtAccess(const FactSet &FSet, const Expr *Exp, AccessKind AK,
1278 static const ValueDecl *getValueDecl(const Expr *Exp) { in getValueDecl() argument
1279 if (const auto *CE = dyn_cast<ImplicitCastExpr>(Exp)) in getValueDecl()
1282 if (const auto *DR = dyn_cast<DeclRefExpr>(Exp)) in getValueDecl()
1285 if (const auto *ME = dyn_cast<MemberExpr>(Exp)) in getValueDecl()
1387 const Expr *Exp, const NamedDecl *D, in getMutexIDs() argument
1391 CapabilityExpr Cp = SxBuilder.translateAttrExpr(nullptr, D, Exp, Self); in getMutexIDs()
1393 warnInvalidLock(Handler, nullptr, D, Exp, Cp.getKind()); in getMutexIDs()
1403 CapabilityExpr Cp = SxBuilder.translateAttrExpr(Arg, D, Exp, Self); in getMutexIDs()
1405 warnInvalidLock(Handler, nullptr, D, Exp, Cp.getKind()); in getMutexIDs()
1419 const Expr *Exp, const NamedDecl *D, in getMutexIDs() argument
1439 getMutexIDs(Mtxs, Attr, Exp, D); in getMutexIDs()
1546 const auto *Exp = getTrylockCallExpr(Cond, LVarCtx, Negate); in getEdgeLockset() local
1547 if (!Exp) in getEdgeLockset()
1550 auto *FunDecl = dyn_cast_or_null<NamedDecl>(Exp->getCalleeDecl()); in getEdgeLockset()
1560 Exp, FunDecl, PredBlock, CurrBlock, Attr->getSuccessValue(), in getEdgeLockset()
1564 SourceLocation Loc = Exp->getExprLoc(); in getEdgeLockset()
1592 void checkAccess(const Expr *Exp, AccessKind AK, in checkAccess() argument
1594 Analyzer->checkAccess(FSet, Exp, AK, POK); in checkAccess()
1596 void checkPtAccess(const Expr *Exp, AccessKind AK, in checkPtAccess() argument
1598 Analyzer->checkPtAccess(FSet, Exp, AK, POK); in checkPtAccess()
1601 void handleCall(const Expr *Exp, const NamedDecl *D,
1619 void VisitCallExpr(const CallExpr *Exp);
1620 void VisitCXXConstructExpr(const CXXConstructExpr *Exp);
1622 void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *Exp);
1631 const FactSet &FSet, const NamedDecl *D, const Expr *Exp, AccessKind AK, in warnIfMutexNotHeld() argument
1635 CapabilityExpr Cp = SxBuilder.translateAttrExpr(MutexExp, D, Exp, Self); in warnIfMutexNotHeld()
1637 warnInvalidLock(Handler, MutexExp, D, Exp, Cp.getKind()); in warnIfMutexNotHeld()
1690 const NamedDecl *D, const Expr *Exp, in warnIfMutexHeld() argument
1694 CapabilityExpr Cp = SxBuilder.translateAttrExpr(MutexExp, D, Exp, Self); in warnIfMutexHeld()
1696 warnInvalidLock(Handler, MutexExp, D, Exp, Cp.getKind()); in warnIfMutexHeld()
1714 void ThreadSafetyAnalyzer::checkAccess(const FactSet &FSet, const Expr *Exp, in checkAccess() argument
1717 Exp = Exp->IgnoreImplicit()->IgnoreParenCasts(); in checkAccess()
1719 SourceLocation Loc = Exp->getExprLoc(); in checkAccess()
1723 while (const auto *DRE = dyn_cast<DeclRefExpr>(Exp)) { in checkAccess()
1728 if (E == Exp) in checkAccess()
1730 Exp = E->IgnoreImplicit()->IgnoreParenCasts(); in checkAccess()
1737 if (const auto *UO = dyn_cast<UnaryOperator>(Exp)) { in checkAccess()
1744 if (const auto *BO = dyn_cast<BinaryOperator>(Exp)) { in checkAccess()
1755 if (const auto *AE = dyn_cast<ArraySubscriptExpr>(Exp)) { in checkAccess()
1760 if (const auto *ME = dyn_cast<MemberExpr>(Exp)) { in checkAccess()
1767 const ValueDecl *D = getValueDecl(Exp); in checkAccess()
1776 warnIfMutexNotHeld(FSet, D, Exp, AK, I->getArg(), POK, nullptr, Loc); in checkAccess()
1781 void ThreadSafetyAnalyzer::checkPtAccess(const FactSet &FSet, const Expr *Exp, in checkPtAccess() argument
1787 if (const auto *PE = dyn_cast<ParenExpr>(Exp)) { in checkPtAccess()
1788 Exp = PE->getSubExpr(); in checkPtAccess()
1791 if (const auto *CE = dyn_cast<CastExpr>(Exp)) { in checkPtAccess()
1798 Exp = CE->getSubExpr(); in checkPtAccess()
1804 if (const auto *UO = dyn_cast<UnaryOperator>(Exp)) { in checkPtAccess()
1832 const ValueDecl *D = getValueDecl(Exp); in checkPtAccess()
1837 Handler.handleNoMutexHeld(D, PtPOK, AK, Exp->getExprLoc()); in checkPtAccess()
1840 warnIfMutexNotHeld(FSet, D, Exp, AK, I->getArg(), PtPOK, nullptr, in checkPtAccess()
1841 Exp->getExprLoc()); in checkPtAccess()
1859 void BuildLockset::handleCall(const Expr *Exp, const NamedDecl *D, in handleCall() argument
1867 if (Exp) { in handleCall()
1869 const auto *TagT = Exp->getType()->getAs<TagType>(); in handleCall()
1870 if (D->hasAttrs() && TagT && Exp->isPRValue()) { in handleCall()
1874 Analyzer->ConstructedObjects.insert({Exp, Placeholder}); in handleCall()
1876 if (isa<CXXConstructExpr>(Exp)) in handleCall()
1879 Scp = CapabilityExpr(Placeholder, Exp->getType(), /*Neg=*/false); in handleCall()
1883 Loc = Exp->getExprLoc(); in handleCall()
1894 A, Exp, D, Self); in handleCall()
1904 Analyzer->getMutexIDs(AssertLocks, A, Exp, D, Self); in handleCall()
1918 Analyzer->getMutexIDs(GenericLocksToRemove, A, Exp, D, Self); in handleCall()
1920 Analyzer->getMutexIDs(SharedLocksToRemove, A, Exp, D, Self); in handleCall()
1922 Analyzer->getMutexIDs(ExclusiveLocksToRemove, A, Exp, D, Self); in handleCall()
1929 Analyzer->warnIfMutexNotHeld(FSet, D, Exp, in handleCall()
1934 Analyzer->getMutexIDs(ScopedReqsAndExcludes, A, Exp, D, Self); in handleCall()
1942 Analyzer->warnIfMutexHeld(FSet, D, Exp, Arg, Self, Loc); in handleCall()
1945 Analyzer->getMutexIDs(ScopedReqsAndExcludes, A, Exp, D, Self); in handleCall()
1957 if (Exp) { in handleCall()
1958 if (const auto *CE = dyn_cast<CallExpr>(Exp)) in handleCall()
1960 else if (const auto *CE = dyn_cast<CXXConstructExpr>(Exp)) in handleCall()
1975 A, Exp, D, Self); in handleCall()
1976 Analyzer->getMutexIDs(DeclaredLocks, A, Exp, D, Self); in handleCall()
1983 Analyzer->getMutexIDs(GenericLocksToRemove, A, Exp, D, Self); in handleCall()
1985 Analyzer->getMutexIDs(SharedLocksToRemove, A, Exp, D, Self); in handleCall()
1987 Analyzer->getMutexIDs(ExclusiveLocksToRemove, A, Exp, D, Self); in handleCall()
1988 Analyzer->getMutexIDs(DeclaredLocks, A, Exp, D, Self); in handleCall()
1995 Analyzer->warnIfMutexNotHeld(FSet, D, Exp, in handleCall()
1998 Analyzer->getMutexIDs(DeclaredLocks, A, Exp, D, Self); in handleCall()
2005 Analyzer->warnIfMutexHeld(FSet, D, Exp, Arg, Self, Loc); in handleCall()
2006 Analyzer->getMutexIDs(DeclaredLocks, A, Exp, D, Self); in handleCall()
2029 Exp->getExprLoc()); in handleCall()
2037 Exp->getExprLoc(), D->getLocation(), Scope->toString(), in handleCall()
2041 Exp->getExprLoc(), D->getLocation(), Scope->toString(), in handleCall()
2045 Exp->getExprLoc(), D->getLocation(), Scope->toString(), in handleCall()
2160 void BuildLockset::VisitCallExpr(const CallExpr *Exp) { in VisitCallExpr() argument
2161 if (const auto *CE = dyn_cast<CXXMemberCallExpr>(Exp)) { in VisitCallExpr()
2177 } else if (const auto *OE = dyn_cast<CXXOperatorCallExpr>(Exp)) { in VisitCallExpr()
2220 examineArguments(Exp->getDirectCallee(), Exp->arg_begin(), Exp->arg_end()); in VisitCallExpr()
2223 auto *D = dyn_cast_or_null<NamedDecl>(Exp->getCalleeDecl()); in VisitCallExpr()
2226 handleCall(Exp, D); in VisitCallExpr()
2229 void BuildLockset::VisitCXXConstructExpr(const CXXConstructExpr *Exp) { in VisitCXXConstructExpr() argument
2230 const CXXConstructorDecl *D = Exp->getConstructor(); in VisitCXXConstructExpr()
2232 const Expr* Source = Exp->getArg(0); in VisitCXXConstructExpr()
2235 examineArguments(D, Exp->arg_begin(), Exp->arg_end()); in VisitCXXConstructExpr()
2238 handleCall(Exp, D); in VisitCXXConstructExpr()
2280 const MaterializeTemporaryExpr *Exp) { in VisitMaterializeTemporaryExpr() argument
2281 if (const ValueDecl *ExtD = Exp->getExtendingDecl()) { in VisitMaterializeTemporaryExpr()
2283 UnpackConstruction(Exp->getSubExpr())); in VisitMaterializeTemporaryExpr()