diff options
| author | Roger Ferrer Ibanez <roger.ferreribanez@arm.com> | 2016-06-14 11:20:07 +0000 |
|---|---|---|
| committer | Roger Ferrer Ibanez <roger.ferreribanez@arm.com> | 2016-06-14 11:20:07 +0000 |
| commit | 985c0c274b35caf902e27f24269b6636a1bd0b17 (patch) | |
| tree | 3139a69c48c5b7aa0adcab86be45b48b3164a01c /clang/lib | |
| parent | e858136d915ea23c5f2c7e44f1988e83029164f3 (diff) | |
| download | bcm5719-llvm-985c0c274b35caf902e27f24269b6636a1bd0b17.tar.gz bcm5719-llvm-985c0c274b35caf902e27f24269b6636a1bd0b17.zip | |
Reverting "Warn when taking address of a packed member"
This new diagnostic is causing some false positives that have to be addressed.
This reverts commit 272552
llvm-svn: 272653
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 24 |
1 files changed, 0 insertions, 24 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index f617db91510..8f0f6017b31 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -10521,30 +10521,6 @@ QualType Sema::CheckAddressOfOperand(ExprResult &OrigOp, SourceLocation OpLoc) { return QualType(); } - // Taking the address of a data member/field of a packed - // struct may be a problem if the pointer value is dereferenced. - Expr *rhs = OrigOp.get(); - const auto *ME = dyn_cast<MemberExpr>(rhs); - while (ME && isa<FieldDecl>(ME->getMemberDecl())) { - QualType BaseType = ME->getBase()->getType(); - if (ME->isArrow()) - BaseType = BaseType->getPointeeType(); - RecordDecl *RD = BaseType->getAs<RecordType>()->getDecl(); - - ValueDecl *MD = ME->getMemberDecl(); - bool ByteAligned = Context.getTypeAlignInChars(MD->getType()).isOne(); - if (ByteAligned) // Attribute packed does not have any effect. - break; - - if (!ByteAligned && - (RD->hasAttr<PackedAttr>() || (MD->hasAttr<PackedAttr>()))) { - Diag(OpLoc, diag::warn_taking_address_of_packed_member) - << MD << RD << rhs->getSourceRange(); - break; - } - ME = dyn_cast<MemberExpr>(ME->getBase()); - } - return Context.getPointerType(op->getType()); } |

