summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2017-04-13 21:49:46 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2017-04-13 21:49:46 +0000
commitcf681266e611d030258d5a801d2bb03ba3095692 (patch)
treeb2f33331e1acd14f59f1b21adfea5413bc0f07ec /clang/lib
parent3e1fc3f6fe2db16c531ea09983fdd8f59e6f89ba (diff)
downloadbcm5719-llvm-cf681266e611d030258d5a801d2bb03ba3095692.tar.gz
bcm5719-llvm-cf681266e611d030258d5a801d2bb03ba3095692.zip
Diagnose attempt to take address of bitfield members in anonymous structs.
Patch by Jacob Young! Differential Revision: https://reviews.llvm.org/D27263 llvm-svn: 300264
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Sema/SemaExpr.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index 73baf1a660f..bb174521c72 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -1772,7 +1772,10 @@ Sema::BuildDeclRefExpr(ValueDecl *D, QualType Ty, ExprValueKind VK,
!Diags.isIgnored(diag::warn_arc_repeated_use_of_weak, E->getLocStart()))
recordUseOfEvaluatedWeak(E);
- if (FieldDecl *FD = dyn_cast<FieldDecl>(D)) {
+ FieldDecl *FD = dyn_cast<FieldDecl>(D);
+ if (IndirectFieldDecl *IFD = dyn_cast<IndirectFieldDecl>(D))
+ FD = IFD->getAnonField();
+ if (FD) {
UnusedPrivateFields.remove(FD);
// Just in case we're building an illegal pointer-to-member.
if (FD->isBitField())
OpenPOWER on IntegriCloud