summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExpr.cpp
diff options
context:
space:
mode:
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