summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExpr.cpp
diff options
context:
space:
mode:
authorRoger Ferrer Ibanez <roger.ferreribanez@arm.com>2016-06-14 11:20:07 +0000
committerRoger Ferrer Ibanez <roger.ferreribanez@arm.com>2016-06-14 11:20:07 +0000
commit985c0c274b35caf902e27f24269b6636a1bd0b17 (patch)
tree3139a69c48c5b7aa0adcab86be45b48b3164a01c /clang/lib/Sema/SemaExpr.cpp
parente858136d915ea23c5f2c7e44f1988e83029164f3 (diff)
downloadbcm5719-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/Sema/SemaExpr.cpp')
-rw-r--r--clang/lib/Sema/SemaExpr.cpp24
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());
}
OpenPOWER on IntegriCloud