]> granicus.if.org Git - clang/commitdiff
Change the self-reference visitor (which gives the warning for self-reference oninita...
authorRichard Trieu <rtrieu@google.com>
Wed, 7 Sep 2011 00:58:53 +0000 (00:58 +0000)
committerRichard Trieu <rtrieu@google.com>
Wed, 7 Sep 2011 00:58:53 +0000 (00:58 +0000)
struct foo { char a[100], *e; } bar = { .e = bar.a };

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139213 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDecl.cpp
test/SemaCXX/uninitialized.cpp

index f8b0af49db546952fe5c196840e98f6ce7ab652f..9938954fe1d9d645e7ce77aa1b467442fa2ab5e8 100644 (file)
@@ -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())) {
index 462229cec4bd5b30410066294b0e5a39ddfd9030..c25bd201d626c548467e3735234e75d36a171151 100644 (file)
@@ -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 };