Correctly propagate the storage class to function template instantiations.

This fixes pr15753. This is another case of the fuzzy definition of the
"as written" storage class of an instantiation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179581 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2013-04-16 02:29:15 +00:00
Родитель 148d9223f0
Коммит 459ef03126
2 изменённых файлов: 13 добавлений и 1 удалений

Просмотреть файл

@ -1162,7 +1162,7 @@ Decl *TemplateDeclInstantiator::VisitFunctionDecl(FunctionDecl *D,
FunctionDecl *Function =
FunctionDecl::Create(SemaRef.Context, DC, D->getInnerLocStart(),
D->getNameInfo(), T, TInfo,
D->getStorageClass(),
D->getCanonicalDecl()->getStorageClass(),
D->isInlineSpecified(), D->hasWrittenPrototype(),
D->isConstexpr());

Просмотреть файл

@ -0,0 +1,12 @@
// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
template <typename T> static int Foo(T t);
template <typename T>
int Foo(T t) {
return t;
}
template<> int Foo<int>(int i) {
return i;
}
// CHECK-NOT: define