================
@@ -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);
+  }
----------------
ykhatav wrote:

I don't think it affects typedefs scoped in partial template specialization 
since the Typedef Context ends up being partial class specialization instead of 
the record decl or the Class specialization stored in the RegionMap:
`
```
0x00000057:   DW_TAG_structure_type
                DW_AT_calling_convention        (DW_CC_pass_by_value)
                DW_AT_name      ("Y<Foo<int> >")
                DW_AT_byte_size (0x04)
                DW_AT_decl_file ("/")
                DW_AT_decl_line (15)

0x0000005d:     DW_TAG_template_type_parameter
                  DW_AT_type    (0x0000006d "Foo<int>")
                  DW_AT_name    ("T")

0x00000063:     DW_TAG_member
                  DW_AT_name    ("o")
                  DW_AT_type    (0x0000006f "outside")
                  DW_AT_decl_file       ("/")
                  DW_AT_decl_line       (17)
                  DW_AT_data_member_location    (0x00)

0x0000006c:     NULL

0x0000006d:   DW_TAG_structure_type
                DW_AT_name      ("Foo<int>")
                DW_AT_declaration       (true)

0x0000006f:   DW_TAG_typedef
                DW_AT_type      (0x00000048 "int")
                DW_AT_name      ("outside")
                DW_AT_decl_file ("/")
                DW_AT_decl_line (16)

`
```
I think we should be able to address this with the other approach you 
suggested. 

https://github.com/llvm/llvm-project/pull/146729
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to