diff options
author | DeLesley Hutchins <delesley@google.com> | 2014-03-10 23:03:49 +0000 |
---|---|---|
committer | DeLesley Hutchins <delesley@google.com> | 2014-03-10 23:03:49 +0000 |
commit | d1c9b37db91e6e0256a509899e8139f1963514e3 (patch) | |
tree | 215d3ea6109ce880a4d4fb39973978027fea5cdd /clang/lib/Analysis | |
parent | ce376c0fcb8548b980257d30d43164c4a63f70ad (diff) | |
download | bcm5719-llvm-d1c9b37db91e6e0256a509899e8139f1963514e3.tar.gz bcm5719-llvm-d1c9b37db91e6e0256a509899e8139f1963514e3.zip |
Thread safety analysis: move smart pointer checks from -Wthread-safety-beta
to -Wthread-safety.
llvm-svn: 203510
Diffstat (limited to 'clang/lib/Analysis')
-rw-r--r-- | clang/lib/Analysis/ThreadSafety.cpp | 46 |
1 files changed, 19 insertions, 27 deletions
diff --git a/clang/lib/Analysis/ThreadSafety.cpp b/clang/lib/Analysis/ThreadSafety.cpp index cf8b289207c..51f5e030691 100644 --- a/clang/lib/Analysis/ThreadSafety.cpp +++ b/clang/lib/Analysis/ThreadSafety.cpp @@ -1857,10 +1857,8 @@ void BuildLockset::checkAccess(const Expr *Exp, AccessKind AK) { } if (const ArraySubscriptExpr *AE = dyn_cast<ArraySubscriptExpr>(Exp)) { - if (Analyzer->Handler.issueBetaWarnings()) { - checkPtAccess(AE->getLHS(), AK); - return; - } + checkPtAccess(AE->getLHS(), AK); + return; } if (const MemberExpr *ME = dyn_cast<MemberExpr>(Exp)) { @@ -1884,27 +1882,23 @@ void BuildLockset::checkAccess(const Expr *Exp, AccessKind AK) { /// \brief Checks pt_guarded_by and pt_guarded_var attributes. void BuildLockset::checkPtAccess(const Expr *Exp, AccessKind AK) { - if (Analyzer->Handler.issueBetaWarnings()) { - while (true) { - if (const ParenExpr *PE = dyn_cast<ParenExpr>(Exp)) { - Exp = PE->getSubExpr(); - continue; - } - if (const CastExpr *CE = dyn_cast<CastExpr>(Exp)) { - if (CE->getCastKind() == CK_ArrayToPointerDecay) { - // If it's an actual array, and not a pointer, then it's elements - // are protected by GUARDED_BY, not PT_GUARDED_BY; - checkAccess(CE->getSubExpr(), AK); - return; - } - Exp = CE->getSubExpr(); - continue; + while (true) { + if (const ParenExpr *PE = dyn_cast<ParenExpr>(Exp)) { + Exp = PE->getSubExpr(); + continue; + } + if (const CastExpr *CE = dyn_cast<CastExpr>(Exp)) { + if (CE->getCastKind() == CK_ArrayToPointerDecay) { + // If it's an actual array, and not a pointer, then it's elements + // are protected by GUARDED_BY, not PT_GUARDED_BY; + checkAccess(CE->getSubExpr(), AK); + return; } - break; + Exp = CE->getSubExpr(); + continue; } + break; } - else - Exp = Exp->IgnoreParenCasts(); const ValueDecl *D = getValueDecl(Exp); if (!D || !D->hasAttrs()) @@ -2134,11 +2128,9 @@ void BuildLockset::VisitCallExpr(CallExpr *Exp) { case OO_Star: case OO_Arrow: case OO_Subscript: { - if (Analyzer->Handler.issueBetaWarnings()) { - const Expr *Obj = OE->getArg(0); - checkAccess(Obj, AK_Read); - checkPtAccess(Obj, AK_Read); - } + const Expr *Obj = OE->getArg(0); + checkAccess(Obj, AK_Read); + checkPtAccess(Obj, AK_Read); break; } default: { |