Index: lib/Sema/SemaChecking.cpp =================================================================== --- lib/Sema/SemaChecking.cpp +++ lib/Sema/SemaChecking.cpp @@ -12101,7 +12101,7 @@ ValueDecl *MD = ME->getMemberDecl(); auto *FD = dyn_cast(MD); // We do not care about non-data members. - if (!FD || FD->isInvalidDecl()) + if (!FD || FD->isInvalidDecl() || RD->isInvalidDecl()) return; AnyIsPacked = Index: test/Sema/address-packed.c =================================================================== --- test/Sema/address-packed.c +++ test/Sema/address-packed.c @@ -329,3 +329,14 @@ uint32_t *p32; p32 = &a[0].x; // no-warning } + +struct Invalid0 { + void *x; + struct fwd f; // expected-error {{incomplete type}} expected-note {{forward declaration}} +} __attribute__((packed)); + + +void *g14(struct Invalid0 *ivl) +{ + return &(ivl->x); +}