From 985c0c274b35caf902e27f24269b6636a1bd0b17 Mon Sep 17 00:00:00 2001 From: Roger Ferrer Ibanez Date: Tue, 14 Jun 2016 11:20:07 +0000 Subject: 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 --- clang/lib/Sema/SemaExpr.cpp | 24 ------------------------ 1 file changed, 24 deletions(-) (limited to 'clang/lib/Sema/SemaExpr.cpp') 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(rhs); - while (ME && isa(ME->getMemberDecl())) { - QualType BaseType = ME->getBase()->getType(); - if (ME->isArrow()) - BaseType = BaseType->getPointeeType(); - RecordDecl *RD = BaseType->getAs()->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() || (MD->hasAttr()))) { - Diag(OpLoc, diag::warn_taking_address_of_packed_member) - << MD << RD << rhs->getSourceRange(); - break; - } - ME = dyn_cast(ME->getBase()); - } - return Context.getPointerType(op->getType()); } -- cgit v1.2.3