diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-04-13 21:49:46 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-04-13 21:49:46 +0000 |
| commit | cf681266e611d030258d5a801d2bb03ba3095692 (patch) | |
| tree | b2f33331e1acd14f59f1b21adfea5413bc0f07ec /clang/lib | |
| parent | 3e1fc3f6fe2db16c531ea09983fdd8f59e6f89ba (diff) | |
| download | bcm5719-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.cpp | 5 |
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()) |

