[cfe-commits] r103999 - in /cfe/trunk: lib/Sema/SemaTemplateInstantiateDecl.cpp test/SemaTemplate/instantiate-attr.cpp

Douglas Gregor dgregor at apple.com
Mon May 17 16:46:49 PDT 2010


Author: dgregor
Date: Mon May 17 18:46:49 2010
New Revision: 103999

URL: http://llvm.org/viewvc/llvm-project?rev=103999&view=rev
Log:
Instantiate attributes on typedefs. This is a quick fix for PR7148,
when we really need a proper audit of our handling of attributes in
templates.

Modified:
    cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp
    cfe/trunk/test/SemaTemplate/instantiate-attr.cpp

Modified: cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp?rev=103999&r1=103998&r2=103999&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp (original)
+++ cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp Mon May 17 18:46:49 2010
@@ -217,6 +217,7 @@
     Typedef->setPreviousDeclaration(cast<TypedefDecl>(InstPrev));
   }
 
+  InstantiateAttrs(D, Typedef);
 
   Typedef->setAccess(D->getAccess());
   Owner->addDecl(Typedef);

Modified: cfe/trunk/test/SemaTemplate/instantiate-attr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/instantiate-attr.cpp?rev=103999&r1=103998&r2=103999&view=diff
==============================================================================
--- cfe/trunk/test/SemaTemplate/instantiate-attr.cpp (original)
+++ cfe/trunk/test/SemaTemplate/instantiate-attr.cpp Mon May 17 18:46:49 2010
@@ -2,6 +2,12 @@
 template <typename T>
 struct A {
   char a __attribute__((aligned(16)));
+
+  struct B {
+    typedef T __attribute__((aligned(16))) i16;
+    i16 x;
+  };
 };
 int a[sizeof(A<int>) == 16 ? 1 : -1];
+int a2[sizeof(A<int>::B) == 16 ? 1 : -1];
 





More information about the cfe-commits mailing list