From: Douglas Gregor Date: Mon, 11 Jul 2011 22:38:07 +0000 (+0000) Subject: Allow us to compute linkage et al for instantiation-dependent types. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5e78cd43a033b3dedf741fca4fa1652f9cb3e41c;p=clang Allow us to compute linkage et al for instantiation-dependent types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134932 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp index ca63ec87b1..20a0d595e4 100644 --- a/lib/AST/Type.cpp +++ b/lib/AST/Type.cpp @@ -1980,8 +1980,8 @@ static CachedProperties computeCachedProperties(const Type *T) { #define DEPENDENT_TYPE(Class,Base) case Type::Class: #define NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class,Base) case Type::Class: #include "clang/AST/TypeNodes.def" - // Treat dependent types as external. - assert(T->isDependentType()); + // Treat instantiation-dependent types as external. + assert(T->isInstantiationDependentType()); return CachedProperties(ExternalLinkage, DefaultVisibility, false); case Type::Builtin: diff --git a/test/CodeGenCXX/mangle.cpp b/test/CodeGenCXX/mangle.cpp index dd10ca4a21..8f1c682bb0 100644 --- a/test/CodeGenCXX/mangle.cpp +++ b/test/CodeGenCXX/mangle.cpp @@ -802,3 +802,11 @@ namespace test33 { // CHECK: call i32 @_ZN6test333fooINS_1BEEENS_1AIT_Xsr1XIS3_EE5valueEE4typeEv() } } + +namespace test34 { + template + void f(decltype(sizeof(decltype(T() + T())))) {} + + // CHECK: define weak_odr void @_ZN6test341fIiEEvDTstDTplcvT__EcvS1__EEE + template void f(decltype(sizeof(1))); +}