From: David Blaikie Date: Thu, 1 May 2014 18:25:19 +0000 (+0000) Subject: PR19623: Support typedefs (and alias templates) of void. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=387e171138d603c3e229d6fc89fff697c2a57b51;p=clang PR19623: Support typedefs (and alias templates) of void. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207781 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index 86e76daf0f..f41fac80a2 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -722,7 +722,6 @@ llvm::DIType CGDebugInfo::CreateType(const BlockPointerType *Ty, llvm::DIType CGDebugInfo::CreateType(const TemplateSpecializationType *Ty, llvm::DIFile Unit) { assert(Ty->isTypeAlias()); llvm::DIType Src = getOrCreateType(Ty->getAliasedType(), Unit); - assert(Src); SmallString<128> NS; llvm::raw_svector_ostream OS(NS); @@ -749,8 +748,6 @@ llvm::DIType CGDebugInfo::CreateType(const TypedefType *Ty, llvm::DIFile Unit) { // Typedefs are derived from some other type. If we have a typedef of a // typedef, make sure to emit the whole chain. llvm::DIType Src = getOrCreateType(Ty->getDecl()->getUnderlyingType(), Unit); - if (!Src) - return llvm::DIType(); // We don't set size information, but do specify where the typedef was // declared. SourceLocation Loc = Ty->getDecl()->getLocation(); diff --git a/test/CodeGenCXX/debug-info-alias.cpp b/test/CodeGenCXX/debug-info-alias.cpp index d294a0b073..fb18ac5da0 100644 --- a/test/CodeGenCXX/debug-info-alias.cpp +++ b/test/CodeGenCXX/debug-info-alias.cpp @@ -27,3 +27,11 @@ narf // CHECK: [[NARF]] = {{.*}} ; [ DW_TAG_typedef ] [narf] [line 142 = int; narf n; +template +using tv = void; +// CHECK: null} ; [ DW_TAG_typedef ] [tv] {{.*}} [from ] +tv *tvp; + +using v = void; +// CHECK: null} ; [ DW_TAG_typedef ] [v] {{.*}} [from ] +v *vp;