Handle QualifiedNameType and SubstTemplateTypeParmType types in CGDebugInfo::CreateTypeNode.

llvm-svn: 86274
This commit is contained in:
Anders Carlsson 2009-11-06 18:45:16 +00:00
parent ac5eba93ca
commit 8a6512961f
2 changed files with 17 additions and 0 deletions

View File

@ -879,6 +879,17 @@ llvm::DIType CGDebugInfo::CreateTypeNode(QualType Ty,
return getOrCreateType(cast<TypeOfType>(Ty)->getUnderlyingType(), Unit);
case Type::Decltype:
return getOrCreateType(cast<DecltypeType>(Ty)->getUnderlyingType(), Unit);
case Type::QualifiedName: {
const QualifiedNameType *T = cast<QualifiedNameType>(Ty);
return CreateTypeNode(T->getNamedType(), Unit);
}
case Type::SubstTemplateTypeParm: {
const SubstTemplateTypeParmType *T = cast<SubstTemplateTypeParmType>(Ty);
return CreateTypeNode(T->getReplacementType(), Unit);
}
}
}

View File

@ -0,0 +1,6 @@
// RUN: clang-cc -emit-llvm-only -g
template<typename T> struct Identity {
typedef T Type;
};
void f(Identity<int>::Type a) {}