diff options
| author | Olivier Goffart <ogoffart@woboq.com> | 2016-05-09 07:09:51 +0000 |
|---|---|---|
| committer | Olivier Goffart <ogoffart@woboq.com> | 2016-05-09 07:09:51 +0000 |
| commit | 63a2083be9ffcb45a8894a4b874a821855ce8f46 (patch) | |
| tree | 706133581d44c6d236f84419011a4c0799cb9607 /clang/lib/Sema/SemaExpr.cpp | |
| parent | 5af2c005eb9cf087ac89bfc7808ba9dbc904912e (diff) | |
| download | bcm5719-llvm-63a2083be9ffcb45a8894a4b874a821855ce8f46.tar.gz bcm5719-llvm-63a2083be9ffcb45a8894a4b874a821855ce8f46.zip | |
Fix spurious warnings about unused private field
If the address of a field is taken as a pointer to member, we should
not warn that the field is not used.
Normaly, yse of fields are done from MemberExpr, but in case of pointer to
member, it is in a DeclRefExpr
Differential Revision: http://reviews.llvm.org/D20054
llvm-svn: 268895
Diffstat (limited to 'clang/lib/Sema/SemaExpr.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 2b89b6bd039..66b87120b0d 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -1736,10 +1736,12 @@ Sema::BuildDeclRefExpr(ValueDecl *D, QualType Ty, ExprValueKind VK, !Diags.isIgnored(diag::warn_arc_repeated_use_of_weak, E->getLocStart())) recordUseOfEvaluatedWeak(E); - // Just in case we're building an illegal pointer-to-member. - FieldDecl *FD = dyn_cast<FieldDecl>(D); - if (FD && FD->isBitField()) - E->setObjectKind(OK_BitField); + if (FieldDecl *FD = dyn_cast<FieldDecl>(D)) { + UnusedPrivateFields.remove(FD); + // Just in case we're building an illegal pointer-to-member. + if (FD->isBitField()) + E->setObjectKind(OK_BitField); + } return E; } |

