================
@@ -4189,8 +4189,13 @@ llvm::DICompositeType
*CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
llvm::MDNode::replaceWithDistinct(llvm::TempDICompositeType(RealDecl));
break;
}
-
- RegionMap[Ty->getDecl()].reset(RealDecl);
+ if (auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(Ty->getDecl())) {
+ CXXRecordDecl *TemplateDecl =
+ CTSD->getSpecializedTemplate()->getTemplatedDecl();
+ RegionMap[TemplateDecl].reset(RealDecl);
+ } else {
+ RegionMap[Ty->getDecl()].reset(RealDecl);
+ }
----------------
dwblaikie wrote:
But I'm still a bit confused by this code in general - the `templated decl` is
the generic thing, right? But DWARF doesn't describe generic things, so we'd
want to put these nested elements in specific instantiations...
(presumably if this patch is the right path forward, we'd need something
similar for the `RegionMap.erase(Ty->getDecl());` ? (or perhapps that's matched
up with some other mutation))
https://github.com/llvm/llvm-project/pull/146729
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits