[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