diff options
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 1 | ||||
-rw-r--r-- | test/SemaCXX/uninitialized.cpp | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index f8b0af49db..9938954fe1 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -5443,6 +5443,7 @@ namespace { } void VisitMemberExpr(MemberExpr *E) { + if (E->getType()->canDecayToPointerType()) return; if (isa<FieldDecl>(E->getMemberDecl())) if (DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(E->getBase()->IgnoreParenImpCasts())) { diff --git a/test/SemaCXX/uninitialized.cpp b/test/SemaCXX/uninitialized.cpp index 462229cec4..c25bd201d6 100644 --- a/test/SemaCXX/uninitialized.cpp +++ b/test/SemaCXX/uninitialized.cpp @@ -115,3 +115,5 @@ struct S { S(char (*)[5]) : x(boo(x)) {} S(char (*)[6]) : x(far(x)) {} }; + +struct C { char a[100], *e; } car = { .e = car.a }; |