Sema: Don't give attribute alias vars with struct type an init expr
authorDavid Majnemer <david.majnemer@gmail.com>
Sun, 8 Feb 2015 10:55:14 +0000 (10:55 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Sun, 8 Feb 2015 10:55:14 +0000 (10:55 +0000)
We'd give the VarDecl a CXXConstructExpr even though it is annotated
with an alias attribute.  This would make us trip over sanity checking
asserts.

This fixes PR22493.

llvm-svn: 228523

clang/lib/Sema/SemaDecl.cpp
clang/test/SemaCXX/cxx11-gnu-attrs.cpp

index a5ce9a0..f187ee2 100644 (file)
@@ -9259,6 +9259,8 @@ void Sema::ActOnUninitializedDecl(Decl *RealDecl,
         Var->setInvalidDecl();
         return;
       }
+    } else {
+      return;
     }
 
     // The variable can not have an abstract class type.
index 9f18224..ac9cc55 100644 (file)
@@ -15,6 +15,9 @@ void aliasb [[gnu::alias("_Z6alias1v")]] ();
 void alias1() {}
 void aliasa [[gnu::alias("_Z6alias1v")]] ();
 
+extern struct PR22493Ty {
+} PR22493 [[gnu::alias("_ZN7pcrecpp2RE6no_argE")]];
+
 [[gnu::aligned(8)]] int aligned;
 void aligned_fn [[gnu::aligned(32)]] ();
 struct [[gnu::aligned(8)]] aligned_struct {};