mirror of https://github.com/microsoft/clang.git
Add missing check to warning for packed attribute. PR14259.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167510 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cb7b45e6d8
commit
b68ec6b7ff
|
@ -963,7 +963,8 @@ static void handlePackedAttr(Sema &S, Decl *D, const AttributeList &Attr) {
|
|||
else if (FieldDecl *FD = dyn_cast<FieldDecl>(D)) {
|
||||
// If the alignment is less than or equal to 8 bits, the packed attribute
|
||||
// has no effect.
|
||||
if (!FD->getType()->isIncompleteType() &&
|
||||
if (!FD->getType()->isDependentType() &&
|
||||
!FD->getType()->isIncompleteType() &&
|
||||
S.Context.getTypeAlign(FD->getType()) <= 8)
|
||||
S.Diag(Attr.getLoc(), diag::warn_attribute_ignored_for_field_of_type)
|
||||
<< Attr.getName() << FD->getType();
|
||||
|
|
|
@ -25,3 +25,12 @@ namespace test1 {
|
|||
int test1[__builtin_offsetof(type, a) == 0 ? 1 : -1];
|
||||
int test2[__builtin_offsetof(type, b) == 4 ? 1 : -1];
|
||||
}
|
||||
|
||||
namespace test2 {
|
||||
template <class type>
|
||||
struct fastscriptmember {
|
||||
type Member __attribute__ ((packed));
|
||||
char x;
|
||||
};
|
||||
int test0[sizeof(fastscriptmember<int>) == 5 ? 1 : -1];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue