Lines Matching refs:Exp

275   unsigned buildSExpr(const Expr *Exp, CallingContext *CallCtx,
277 if (!Exp)
280 if (const DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(Exp)) {
301 } else if (isa<CXXThisExpr>(Exp)) {
313 } else if (const MemberExpr *ME = dyn_cast<MemberExpr>(Exp)) {
321 } else if (const CXXMemberCallExpr *CMCE = dyn_cast<CXXMemberCallExpr>(Exp)) {
351 } else if (const CallExpr *CE = dyn_cast<CallExpr>(Exp)) {
381 } else if (const BinaryOperator *BOE = dyn_cast<BinaryOperator>(Exp)) {
387 } else if (const UnaryOperator *UOE = dyn_cast<UnaryOperator>(Exp)) {
414 dyn_cast<ArraySubscriptExpr>(Exp)) {
421 dyn_cast<AbstractConditionalOperator>(Exp)) {
428 } else if (const ChooseExpr *CE = dyn_cast<ChooseExpr>(Exp)) {
435 } else if (const CastExpr *CE = dyn_cast<CastExpr>(Exp)) {
437 } else if (const ParenExpr *PE = dyn_cast<ParenExpr>(Exp)) {
439 } else if (const ExprWithCleanups *EWC = dyn_cast<ExprWithCleanups>(Exp)) {
441 } else if (const CXXBindTemporaryExpr *E = dyn_cast<CXXBindTemporaryExpr>(Exp)) {
443 } else if (isa<CharacterLiteral>(Exp) ||
444 isa<CXXNullPtrLiteralExpr>(Exp) ||
445 isa<GNUNullExpr>(Exp) ||
446 isa<CXXBoolLiteralExpr>(Exp) ||
447 isa<FloatingLiteral>(Exp) ||
448 isa<ImaginaryLiteral>(Exp) ||
449 isa<IntegerLiteral>(Exp) ||
450 isa<StringLiteral>(Exp) ||
451 isa<ObjCStringLiteral>(Exp)) {
951 const Expr *Exp; // The expression for this variable, OR
953 Context Ctx; // The map with which Exp should be interpreted.
955 bool isReference() { return !Exp; }
960 : Dec(D), Exp(E), Ref(0), Ctx(C)
965 : Dec(D), Exp(nullptr), Ref(R), Ctx(C)
1000 if (VarDefinitions[i].Exp) {
1002 return VarDefinitions[i].Exp;
1040 const Expr *Exp = VarDefinitions[i].Exp;
1045 if (Exp) Exp->dump();
1080 Context addDefinition(const NamedDecl *D, const Expr *Exp, Context Ctx) {
1084 VarDefinitions.push_back(VarDefinition(D, Exp, Ctx));
1098 Context updateDefinition(const NamedDecl *D, Expr *Exp, Context Ctx) {
1103 VarDefinitions.push_back(VarDefinition(D, Exp, Ctx));
1425 void getMutexIDs(MutexIDList &Mtxs, AttrType *Attr, Expr *Exp,
1429 void getMutexIDs(MutexIDList &Mtxs, AttrType *Attr, Expr *Exp,
1456 static const ValueDecl *getValueDecl(const Expr *Exp) {
1457 if (const auto *CE = dyn_cast<ImplicitCastExpr>(Exp))
1460 if (const auto *DR = dyn_cast<DeclRefExpr>(Exp))
1463 if (const auto *ME = dyn_cast<MemberExpr>(Exp))
1602 Expr *Exp, const NamedDecl *D,
1606 SExpr Mu(nullptr, Exp, D, SelfDecl);
1608 SExpr::warnInvalidLock(Handler, nullptr, Exp, D,
1616 SExpr Mu(Arg, Exp, D, SelfDecl);
1618 SExpr::warnInvalidLock(Handler, Arg, Exp, D, ClassifyDiagnostic(Attr));
1630 Expr *Exp, const NamedDecl *D,
1650 getMutexIDs(Mtxs, Attr, Exp, D);
1752 CallExpr *Exp =
1754 if (!Exp)
1757 NamedDecl *FunDecl = dyn_cast_or_null<NamedDecl>(Exp->getCalleeDecl());
1770 getMutexIDs(ExclusiveLocksToAdd, A, Exp, FunDecl,
1778 getMutexIDs(SharedLocksToAdd, A, Exp, FunDecl,
1789 SourceLocation Loc = Exp->getExprLoc();
1812 void warnIfMutexNotHeld(const NamedDecl *D, const Expr *Exp, AccessKind AK,
1815 void warnIfMutexHeld(const NamedDecl *D, const Expr *Exp, Expr *MutexExp,
1818 void checkAccess(const Expr *Exp, AccessKind AK);
1819 void checkPtAccess(const Expr *Exp, AccessKind AK);
1821 void handleCall(Expr *Exp, const NamedDecl *D, VarDecl *VD = nullptr);
1835 void VisitCallExpr(CallExpr *Exp);
1836 void VisitCXXConstructExpr(CXXConstructExpr *Exp);
1842 void BuildLockset::warnIfMutexNotHeld(const NamedDecl *D, const Expr *Exp,
1848 SExpr Mutex(MutexExp, Exp, D);
1850 SExpr::warnInvalidLock(Analyzer->Handler, MutexExp, Exp, D, DiagKind);
1867 LK, Exp->getExprLoc(),
1872 LK, Exp->getExprLoc());
1879 Exp->getExprLoc());
1883 void BuildLockset::warnIfMutexHeld(const NamedDecl *D, const Expr *Exp,
1886 SExpr Mutex(MutexExp, Exp, D);
1888 SExpr::warnInvalidLock(Analyzer->Handler, MutexExp, Exp, D, DiagKind);
1895 DiagKind, D->getNameAsString(), Mutex.toString(), Exp->getExprLoc());
1903 void BuildLockset::checkAccess(const Expr *Exp, AccessKind AK) {
1904 Exp = Exp->IgnoreParenCasts();
1906 if (const UnaryOperator *UO = dyn_cast<UnaryOperator>(Exp)) {
1913 if (const ArraySubscriptExpr *AE = dyn_cast<ArraySubscriptExpr>(Exp)) {
1918 if (const MemberExpr *ME = dyn_cast<MemberExpr>(Exp)) {
1925 const ValueDecl *D = getValueDecl(Exp);
1931 Exp->getExprLoc());
1934 warnIfMutexNotHeld(D, Exp, AK, I->getArg(), POK_VarAccess,
1939 void BuildLockset::checkPtAccess(const Expr *Exp, AccessKind AK) {
1941 if (const ParenExpr *PE = dyn_cast<ParenExpr>(Exp)) {
1942 Exp = PE->getSubExpr();
1945 if (const CastExpr *CE = dyn_cast<CastExpr>(Exp)) {
1952 Exp = CE->getSubExpr();
1958 const ValueDecl *D = getValueDecl(Exp);
1964 Exp->getExprLoc());
1967 warnIfMutexNotHeld(D, Exp, AK, I->getArg(), POK_VarDereference,
1981 void BuildLockset::handleCall(Expr *Exp, const NamedDecl *D, VarDecl *VD) {
1982 SourceLocation Loc = Exp->getExprLoc();
1997 A, Exp, D, VD);
2010 Analyzer->getMutexIDs(AssertLocks, A, Exp, D, VD);
2021 Analyzer->getMutexIDs(AssertLocks, A, Exp, D, VD);
2034 Analyzer->getMutexIDs(GenericLocksToRemove, A, Exp, D, VD);
2036 Analyzer->getMutexIDs(SharedLocksToRemove, A, Exp, D, VD);
2038 Analyzer->getMutexIDs(ExclusiveLocksToRemove, A, Exp, D, VD);
2047 warnIfMutexNotHeld(D, Exp, A->isShared() ? AK_Read : AK_Written, Arg,
2055 warnIfMutexHeld(D, Exp, Arg, ClassifyDiagnostic(A));
2151 void BuildLockset::VisitCallExpr(CallExpr *Exp) {
2152 if (CXXMemberCallExpr *CE = dyn_cast<CXXMemberCallExpr>(Exp)) {
2171 } else if (CXXOperatorCallExpr *OE = dyn_cast<CXXOperatorCallExpr>(Exp)) {
2195 NamedDecl *D = dyn_cast_or_null<NamedDecl>(Exp->getCalleeDecl());
2198 handleCall(Exp, D);
2201 void BuildLockset::VisitCXXConstructExpr(CXXConstructExpr *Exp) {
2202 const CXXConstructorDecl *D = Exp->getConstructor();
2204 const Expr* Source = Exp->getArg(0);