Sema: Variable definitions cannot be __attribute__((alias))
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 19 Jan 2015 09:00:28 +0000 (09:00 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 19 Jan 2015 09:00:28 +0000 (09:00 +0000)
commit2dc8146643856d29c33880b86506141d30d5866f
tree6480c97086c09f0160678b9284effd8ea01c864c
parent0540f4141fb187d6f5cb2d871bd5fbc27e1f4512
Sema: Variable definitions cannot be __attribute__((alias))

Things that are OK:
  extern int var1 __attribute((alias("v1")));
  static int var2 __attribute((alias("v2")));

Things that are not OK:
  int var3 __attribute((alias("v3")));
  extern int var4 __attribute((alias("v4"))) = 4;

We choose to accpet:
  struct S { static int var5 __attribute((alias("v5"))); };

  This code causes assertion failues in GCC 4.8 and ICC 13.0.1, we have
  no reason to reject it.

This partially fixes PR22217.

llvm-svn: 226436
clang/include/clang/Basic/Attr.td
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/lib/Sema/SemaDecl.cpp
clang/lib/Sema/SemaDeclAttr.cpp
clang/test/Misc/ast-dump-attr.cpp
clang/test/Sema/alias-redefinition.c