diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2022-07-24 15:11:41 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2023-02-08 19:04:38 +0000 | 
| commit | fcaf7f8644a9988098ac6be2165bce3ea4786e91 (patch) | |
| tree | 08a554363df16b968a623d651c09d82a5a0b1c65 /contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp | |
| parent | 753f127f3ace09432b2baeffd71a308760641a62 (diff) | |
| parent | 4b4fe385e49bd883fd183b5f21c1ea486c722e61 (diff) | |
Diffstat (limited to 'contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp')
| -rw-r--r-- | contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp b/contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp index 03bbf078d7e8..32d950864ce7 100644 --- a/contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp +++ b/contrib/llvm-project/clang/lib/Analysis/ThreadSafety.cpp @@ -1679,6 +1679,17 @@ void BuildLockset::checkAccess(const Expr *Exp, AccessKind AK,      return;    } +  if (const auto *BO = dyn_cast<BinaryOperator>(Exp)) { +    switch (BO->getOpcode()) { +    case BO_PtrMemD: // .* +      return checkAccess(BO->getLHS(), AK, POK); +    case BO_PtrMemI: // ->* +      return checkPtAccess(BO->getLHS(), AK, POK); +    default: +      return; +    } +  } +    if (const auto *AE = dyn_cast<ArraySubscriptExpr>(Exp)) {      checkPtAccess(AE->getLHS(), AK, POK);      return;  | 
