https://github.com/ykhatav updated 
https://github.com/llvm/llvm-project/pull/146729

>From 29dd71a91958e8de7ee811838994fa664afe75d1 Mon Sep 17 00:00:00 2001
From: "Khatavkar, Yashasvi" <yashasvi.khatav...@intel.com>
Date: Wed, 2 Jul 2025 08:23:14 -0700
Subject: [PATCH 01/12] Fix scoping of dependent typedefs

---
 clang/lib/CodeGen/CGDebugInfo.cpp              | 12 ++++++++++--
 .../dependent-template-type-scope.cpp          | 18 ++++++++++++++++++
 2 files changed, 28 insertions(+), 2 deletions(-)
 create mode 100644 clang/test/CodeGenCXX/dependent-template-type-scope.cpp

diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp 
b/clang/lib/CodeGen/CGDebugInfo.cpp
index 994bdbdae860f..1ee6f52efda6a 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -4183,9 +4183,17 @@ llvm::DICompositeType 
*CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
         llvm::MDNode::replaceWithDistinct(llvm::TempDICompositeType(RealDecl));
     break;
   }
-
-  RegionMap[RD].reset(RealDecl);
+     auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(Ty->getDecl());
+   if(CTSD) {
+   CXXRecordDecl *TemplateDecl =
+            CTSD->getSpecializedTemplate()->getTemplatedDecl();
+   RegionMap[TemplateDecl].reset(RealDecl);
+   TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
+   }
+ else {
+  RegionMap[Ty->getDecl()].reset(RealDecl);
   TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
+}
 
   if (const auto *TSpecial = dyn_cast<ClassTemplateSpecializationDecl>(RD))
     DBuilder.replaceArrays(RealDecl, llvm::DINodeArray(),
diff --git a/clang/test/CodeGenCXX/dependent-template-type-scope.cpp 
b/clang/test/CodeGenCXX/dependent-template-type-scope.cpp
new file mode 100644
index 0000000000000..3b2e57b700936
--- /dev/null
+++ b/clang/test/CodeGenCXX/dependent-template-type-scope.cpp
@@ -0,0 +1,18 @@
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm 
-debug-info-kind=standalone  -o - %s | FileCheck %s
+
+struct X {
+  typedef int inside;
+  inside i;
+};
+
+template <typename T = int>
+struct Y {
+  typedef int outside;
+  outside o;
+};
+
+X x;
+Y<> y;
+
+// CHECK: ![[Y:.*]] = distinct !DICompositeType(tag: DW_TAG_structure_type, 
name: "Y<int>", {{.*}}identifier: "_ZTS1YIiE")
+// CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "outside", scope: ![[Y]],

>From 12e9adf8c8a98b02ec8e5a58f682832d132ddfc0 Mon Sep 17 00:00:00 2001
From: "Khatavkar, Yashasvi" <yashasvi.khatav...@intel.com>
Date: Wed, 2 Jul 2025 08:24:26 -0700
Subject: [PATCH 02/12] Apply clang-format

---
 clang/lib/CodeGen/CGDebugInfo.cpp | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp 
b/clang/lib/CodeGen/CGDebugInfo.cpp
index 1ee6f52efda6a..d9b5935f7bb7c 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -4183,17 +4183,16 @@ llvm::DICompositeType 
*CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
         llvm::MDNode::replaceWithDistinct(llvm::TempDICompositeType(RealDecl));
     break;
   }
-     auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(Ty->getDecl());
-   if(CTSD) {
-   CXXRecordDecl *TemplateDecl =
-            CTSD->getSpecializedTemplate()->getTemplatedDecl();
-   RegionMap[TemplateDecl].reset(RealDecl);
-   TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
-   }
- else {
-  RegionMap[Ty->getDecl()].reset(RealDecl);
-  TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
-}
+  auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(Ty->getDecl());
+  if (CTSD) {
+    CXXRecordDecl *TemplateDecl =
+        CTSD->getSpecializedTemplate()->getTemplatedDecl();
+    RegionMap[TemplateDecl].reset(RealDecl);
+    TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
+  } else {
+    RegionMap[Ty->getDecl()].reset(RealDecl);
+    TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
+  }
 
   if (const auto *TSpecial = dyn_cast<ClassTemplateSpecializationDecl>(RD))
     DBuilder.replaceArrays(RealDecl, llvm::DINodeArray(),

>From 7e3dfe0cc9d954733f01be22f779c7583521b4a1 Mon Sep 17 00:00:00 2001
From: "Khatavkar, Yashasvi" <yashasvi.khatav...@intel.com>
Date: Thu, 10 Jul 2025 06:28:49 -0700
Subject: [PATCH 03/12] address review comments

---
 clang/lib/CodeGen/CGDebugInfo.cpp                       | 3 +--
 clang/test/CodeGenCXX/dependent-template-type-scope.cpp | 6 ------
 2 files changed, 1 insertion(+), 8 deletions(-)

diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp 
b/clang/lib/CodeGen/CGDebugInfo.cpp
index d9b5935f7bb7c..1dc12d705b2cf 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -4188,11 +4188,10 @@ llvm::DICompositeType 
*CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
     CXXRecordDecl *TemplateDecl =
         CTSD->getSpecializedTemplate()->getTemplatedDecl();
     RegionMap[TemplateDecl].reset(RealDecl);
-    TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
   } else {
     RegionMap[Ty->getDecl()].reset(RealDecl);
-    TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
   }
+  TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
 
   if (const auto *TSpecial = dyn_cast<ClassTemplateSpecializationDecl>(RD))
     DBuilder.replaceArrays(RealDecl, llvm::DINodeArray(),
diff --git a/clang/test/CodeGenCXX/dependent-template-type-scope.cpp 
b/clang/test/CodeGenCXX/dependent-template-type-scope.cpp
index 3b2e57b700936..25a4d8741b01e 100644
--- a/clang/test/CodeGenCXX/dependent-template-type-scope.cpp
+++ b/clang/test/CodeGenCXX/dependent-template-type-scope.cpp
@@ -1,17 +1,11 @@
 // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm 
-debug-info-kind=standalone  -o - %s | FileCheck %s
 
-struct X {
-  typedef int inside;
-  inside i;
-};
-
 template <typename T = int>
 struct Y {
   typedef int outside;
   outside o;
 };
 
-X x;
 Y<> y;
 
 // CHECK: ![[Y:.*]] = distinct !DICompositeType(tag: DW_TAG_structure_type, 
name: "Y<int>", {{.*}}identifier: "_ZTS1YIiE")

>From 5b88f9d72edf4ab205adcc832b19acbb5555e75d Mon Sep 17 00:00:00 2001
From: "Khatavkar, Yashasvi" <yashasvi.khatav...@intel.com>
Date: Wed, 16 Jul 2025 10:44:34 -0700
Subject: [PATCH 04/12] Address review comments

---
 clang/docs/ReleaseNotes.rst       | 3 +++
 clang/lib/CodeGen/CGDebugInfo.cpp | 3 +--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index fe1dd15c6f885..c9dbb6cfe4a83 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -220,6 +220,7 @@ Improvements to Coverage Mapping
 
 Bug Fixes in This Version
 -------------------------
+
 - Fix a crash when marco name is empty in ``#pragma push_macro("")`` or
   ``#pragma pop_macro("")``. (#GH149762).
 - `-Wunreachable-code`` now diagnoses tautological or contradictory
@@ -229,6 +230,8 @@ Bug Fixes in This Version
   cast chain. (#GH149967).
 - Fixed a crash with incompatible pointer to integer conversions in designated
   initializers involving string literals. (#GH154046)
+  macro expansion when performing analysis for nullability attributes. 
(#GH138371)
+- Fixed scope of typedefs present inside a template class. (#GH91451)
 
 Bug Fixes to Compiler Builtins
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp 
b/clang/lib/CodeGen/CGDebugInfo.cpp
index 1dc12d705b2cf..6fbed3e3369d1 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -4183,8 +4183,7 @@ llvm::DICompositeType 
*CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
         llvm::MDNode::replaceWithDistinct(llvm::TempDICompositeType(RealDecl));
     break;
   }
-  auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(Ty->getDecl());
-  if (CTSD) {
+  if (auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(Ty->getDecl())) {
     CXXRecordDecl *TemplateDecl =
         CTSD->getSpecializedTemplate()->getTemplatedDecl();
     RegionMap[TemplateDecl].reset(RealDecl);

>From 10f08d4fbcabd3d78d87c14a40ded284521e89b4 Mon Sep 17 00:00:00 2001
From: "Khatavkar, Yashasvi" <yashasvi.khatav...@intel.com>
Date: Wed, 13 Aug 2025 12:19:44 -0700
Subject: [PATCH 05/12] Address review comment

---
 clang/lib/CodeGen/CGDebugInfo.cpp | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp 
b/clang/lib/CodeGen/CGDebugInfo.cpp
index 6fbed3e3369d1..a4663f79bd609 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -4183,13 +4183,11 @@ llvm::DICompositeType 
*CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
         llvm::MDNode::replaceWithDistinct(llvm::TempDICompositeType(RealDecl));
     break;
   }
-  if (auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(Ty->getDecl())) {
-    CXXRecordDecl *TemplateDecl =
-        CTSD->getSpecializedTemplate()->getTemplatedDecl();
-    RegionMap[TemplateDecl].reset(RealDecl);
-  } else {
-    RegionMap[Ty->getDecl()].reset(RealDecl);
+  auto *Decl = Ty->getDecl();
+  if (auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(Decl)) {
+    Decl = CTSD->getSpecializedTemplate()->getTemplateDecl();
   }
+  RegionMap[Decl].reset(RealDecl);
   TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
 
   if (const auto *TSpecial = dyn_cast<ClassTemplateSpecializationDecl>(RD))

>From 3f5774338736709f724dfcb39ccb9aa5ba96e231 Mon Sep 17 00:00:00 2001
From: "Khatavkar, Yashasvi" <yashasvi.khatav...@intel.com>
Date: Thu, 14 Aug 2025 06:54:27 -0700
Subject: [PATCH 06/12] Fix release note after merge confits

---
 clang/docs/ReleaseNotes.rst | 1 -
 1 file changed, 1 deletion(-)

diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index c9dbb6cfe4a83..2b01dc4c84ec4 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -220,7 +220,6 @@ Improvements to Coverage Mapping
 
 Bug Fixes in This Version
 -------------------------
-
 - Fix a crash when marco name is empty in ``#pragma push_macro("")`` or
   ``#pragma pop_macro("")``. (#GH149762).
 - `-Wunreachable-code`` now diagnoses tautological or contradictory

>From b1fbff2491fd04fb76340de04c38dd294b55f0fb Mon Sep 17 00:00:00 2001
From: "Khatavkar, Yashasvi" <yashasvi.khatav...@intel.com>
Date: Thu, 14 Aug 2025 07:18:19 -0700
Subject: [PATCH 07/12] Fix build failure

---
 clang/lib/CodeGen/CGDebugInfo.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp 
b/clang/lib/CodeGen/CGDebugInfo.cpp
index a4663f79bd609..3f379850ac5ad 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -4183,11 +4183,11 @@ llvm::DICompositeType 
*CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
         llvm::MDNode::replaceWithDistinct(llvm::TempDICompositeType(RealDecl));
     break;
   }
-  auto *Decl = Ty->getDecl();
-  if (auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(Decl)) {
-    Decl = CTSD->getSpecializedTemplate()->getTemplateDecl();
+  
+  if (auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(RD)) {
+    RD = CTSD->getSpecializedTemplate()->getTemplatedDecl();
   }
-  RegionMap[Decl].reset(RealDecl);
+  RegionMap[RD].reset(RealDecl);
   TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
 
   if (const auto *TSpecial = dyn_cast<ClassTemplateSpecializationDecl>(RD))

>From a1ff3af79423900a667200eb9bfa6cd609efafc6 Mon Sep 17 00:00:00 2001
From: "Khatavkar, Yashasvi" <yashasvi.khatav...@intel.com>
Date: Thu, 14 Aug 2025 07:25:36 -0700
Subject: [PATCH 08/12] Apply clang-format

---
 clang/lib/CodeGen/CGDebugInfo.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp 
b/clang/lib/CodeGen/CGDebugInfo.cpp
index 3f379850ac5ad..696e0492cced7 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -4183,7 +4183,7 @@ llvm::DICompositeType 
*CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
         llvm::MDNode::replaceWithDistinct(llvm::TempDICompositeType(RealDecl));
     break;
   }
-  
+
   if (auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(RD)) {
     RD = CTSD->getSpecializedTemplate()->getTemplatedDecl();
   }

>From 8bc2ddb874f021aa5097b2bcedb28e329afa333a Mon Sep 17 00:00:00 2001
From: "Khatavkar, Yashasvi" <yashasvi.khatav...@intel.com>
Date: Thu, 14 Aug 2025 08:31:21 -0700
Subject: [PATCH 09/12] fix test failures

---
 clang/lib/CodeGen/CGDebugInfo.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp 
b/clang/lib/CodeGen/CGDebugInfo.cpp
index 696e0492cced7..9cd6d5815d9ea 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -4184,10 +4184,12 @@ llvm::DICompositeType 
*CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
     break;
   }
 
-  if (auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(RD)) {
-    RD = CTSD->getSpecializedTemplate()->getTemplatedDecl();
-  }
+  if (auto *CTSD = 
dyn_cast<ClassTemplateSpecializationDecl>(Ty->getOriginalDecl())) {
+    CXXRecordDecl *TemplateDecl  = 
CTSD->getSpecializedTemplate()->getTemplatedDecl();
+    RegionMap[TemplateDecl].reset(RealDecl);
+  }else {
   RegionMap[RD].reset(RealDecl);
+  }
   TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
 
   if (const auto *TSpecial = dyn_cast<ClassTemplateSpecializationDecl>(RD))

>From c7164eef53e165b695cb67aca853e97633fd0ac9 Mon Sep 17 00:00:00 2001
From: "Khatavkar, Yashasvi" <yashasvi.khatav...@intel.com>
Date: Thu, 14 Aug 2025 08:33:03 -0700
Subject: [PATCH 10/12] Apply clang-format

---
 clang/lib/CodeGen/CGDebugInfo.cpp | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp 
b/clang/lib/CodeGen/CGDebugInfo.cpp
index 9cd6d5815d9ea..c44fea3e6383d 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -4184,11 +4184,13 @@ llvm::DICompositeType 
*CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
     break;
   }
 
-  if (auto *CTSD = 
dyn_cast<ClassTemplateSpecializationDecl>(Ty->getOriginalDecl())) {
-    CXXRecordDecl *TemplateDecl  = 
CTSD->getSpecializedTemplate()->getTemplatedDecl();
+  if (auto *CTSD =
+          dyn_cast<ClassTemplateSpecializationDecl>(Ty->getOriginalDecl())) {
+    CXXRecordDecl *TemplateDecl =
+        CTSD->getSpecializedTemplate()->getTemplatedDecl();
     RegionMap[TemplateDecl].reset(RealDecl);
-  }else {
-  RegionMap[RD].reset(RealDecl);
+  } else {
+    RegionMap[RD].reset(RealDecl);
   }
   TypeCache[QualType(Ty, 0).getAsOpaquePtr()].reset(RealDecl);
 

>From fc20aeb6d712c5f3fa8a21deab84dcc8f3e82c59 Mon Sep 17 00:00:00 2001
From: "Khatavkar, Yashasvi" <yashasvi.khatav...@intel.com>
Date: Thu, 21 Aug 2025 10:51:09 -0700
Subject: [PATCH 11/12] Move test to debuginfo directory

---
 .../CXX}/dependent-template-type-scope.cpp                        | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename clang/test/{CodeGenCXX => 
DebugInfo/CXX}/dependent-template-type-scope.cpp (100%)

diff --git a/clang/test/CodeGenCXX/dependent-template-type-scope.cpp 
b/clang/test/DebugInfo/CXX/dependent-template-type-scope.cpp
similarity index 100%
rename from clang/test/CodeGenCXX/dependent-template-type-scope.cpp
rename to clang/test/DebugInfo/CXX/dependent-template-type-scope.cpp

>From b1fc985c4c81729748508833a3cd6510a43b5c3d Mon Sep 17 00:00:00 2001
From: "Khatavkar, Yashasvi" <yashasvi.khatav...@intel.com>
Date: Thu, 21 Aug 2025 10:54:23 -0700
Subject: [PATCH 12/12] resolve conflicts in release notes

---
 clang/docs/ReleaseNotes.rst | 1 -
 1 file changed, 1 deletion(-)

diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 2b01dc4c84ec4..6fe54f65656fc 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -229,7 +229,6 @@ Bug Fixes in This Version
   cast chain. (#GH149967).
 - Fixed a crash with incompatible pointer to integer conversions in designated
   initializers involving string literals. (#GH154046)
-  macro expansion when performing analysis for nullability attributes. 
(#GH138371)
 - Fixed scope of typedefs present inside a template class. (#GH91451)
 
 Bug Fixes to Compiler Builtins

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to