diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-07-11 22:38:07 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-07-11 22:38:07 +0000 |
commit | 5e78cd43a033b3dedf741fca4fa1652f9cb3e41c (patch) | |
tree | 00fc7c665562e62d63149fb5556288313c96e339 | |
parent | ffc97ee1d3d5f7d30ed38fd12995e6db010f7dd0 (diff) |
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
-rw-r--r-- | lib/AST/Type.cpp | 4 | ||||
-rw-r--r-- | test/CodeGenCXX/mangle.cpp | 8 |
2 files changed, 10 insertions, 2 deletions
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<typename T> + void f(decltype(sizeof(decltype(T() + T())))) {} + + // CHECK: define weak_odr void @_ZN6test341fIiEEvDTstDTplcvT__EcvS1__EEE + template void f<int>(decltype(sizeof(1))); +} |