https://github.com/Lambo-IITian updated 
https://github.com/llvm/llvm-project/pull/180175

>From 31e6ffdd6275caacb8c03a890c607377c5b66dbe Mon Sep 17 00:00:00 2001
From: Mohit Gunani <[email protected]>
Date: Fri, 6 Feb 2026 17:10:56 +0530
Subject: [PATCH 1/3] [Clang] Improve template diffing to show qualifiers in
 elided types

This change ensures that template diagnostics like Dual<int, [...]> vs 
Dual<const int, [...]> correctly display the differing qualifiers instead of 
hiding the entire type.
---
 clang/lib/AST/ASTDiagnostic.cpp | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/clang/lib/AST/ASTDiagnostic.cpp b/clang/lib/AST/ASTDiagnostic.cpp
index b8023cb6fa10f..44983edbf870a 100644
--- a/clang/lib/AST/ASTDiagnostic.cpp
+++ b/clang/lib/AST/ASTDiagnostic.cpp
@@ -1205,8 +1205,16 @@ class TemplateDiff {
              "Both template specializations need to be valid.");
       Qualifiers FromQual = FromType.getQualifiers(),
                  ToQual = ToType.getQualifiers();
-      FromQual -= QualType(FromArgTST, 0).getQualifiers();
-      ToQual -= QualType(ToArgTST, 0).getQualifiers();
+      // FromQual -= QualType(FromArgTST, 0).getQualifiers();
+      // ToQual -= QualType(ToArgTST, 0).getQualifiers();
+      // ... your commented out lines ...
+      bool Same = false;
+      if (FromArgTST->getTemplateName().getAsTemplateDecl() == 
+          ToArgTST->getTemplateName().getAsTemplateDecl()) {
+        // If the names match, the ONLY thing that makes them different is the 
Qualifiers
+        Same = (FromQual == ToQual); 
+      }
+      Tree.SetSame(Same);
       Tree.SetTemplateDiff(FromArgTST->getTemplateName().getAsTemplateDecl(),
                            ToArgTST->getTemplateName().getAsTemplateDecl(),
                            FromQual, ToQual, FromDefault, ToDefault);

>From 8d3fc9c6664480844a46ddd5cf4658add10ee7b9 Mon Sep 17 00:00:00 2001
From: lambo <[email protected]>
Date: Fri, 6 Feb 2026 17:28:26 +0530
Subject: [PATCH 2/3] Clean up commented code in ASTDiagnostic.cpp

Removed commented out lines in ASTDiagnostic.cpp.
---
 clang/lib/AST/ASTDiagnostic.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/clang/lib/AST/ASTDiagnostic.cpp b/clang/lib/AST/ASTDiagnostic.cpp
index 44983edbf870a..7c498bc9b8e8a 100644
--- a/clang/lib/AST/ASTDiagnostic.cpp
+++ b/clang/lib/AST/ASTDiagnostic.cpp
@@ -1207,7 +1207,6 @@ class TemplateDiff {
                  ToQual = ToType.getQualifiers();
       // FromQual -= QualType(FromArgTST, 0).getQualifiers();
       // ToQual -= QualType(ToArgTST, 0).getQualifiers();
-      // ... your commented out lines ...
       bool Same = false;
       if (FromArgTST->getTemplateName().getAsTemplateDecl() == 
           ToArgTST->getTemplateName().getAsTemplateDecl()) {

>From eecfc3fd736d8a0be34b19eadc941a0d755bb067 Mon Sep 17 00:00:00 2001
From: Mohit Gunani <[email protected]>
Date: Sat, 7 Feb 2026 14:46:12 +0530
Subject: [PATCH 3/3] [Clang] Address review feedback in template diffing

---
 clang/lib/AST/ASTDiagnostic.cpp | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/clang/lib/AST/ASTDiagnostic.cpp b/clang/lib/AST/ASTDiagnostic.cpp
index 7c498bc9b8e8a..153f4bbcea25c 100644
--- a/clang/lib/AST/ASTDiagnostic.cpp
+++ b/clang/lib/AST/ASTDiagnostic.cpp
@@ -1205,14 +1205,11 @@ class TemplateDiff {
              "Both template specializations need to be valid.");
       Qualifiers FromQual = FromType.getQualifiers(),
                  ToQual = ToType.getQualifiers();
-      // FromQual -= QualType(FromArgTST, 0).getQualifiers();
-      // ToQual -= QualType(ToArgTST, 0).getQualifiers();
-      bool Same = false;
-      if (FromArgTST->getTemplateName().getAsTemplateDecl() == 
-          ToArgTST->getTemplateName().getAsTemplateDecl()) {
-        // If the names match, the ONLY thing that makes them different is the 
Qualifiers
-        Same = (FromQual == ToQual); 
-      }
+      
+      // If the names match, the ONLY thing that makes them different is the 
Qualifiers
+      bool Same = FromArgTST->getTemplateName().getAsTemplateDecl() == 
+          ToArgTST->getTemplateName().getAsTemplateDecl() && FromQual == 
ToQual;
+      
       Tree.SetSame(Same);
       Tree.SetTemplateDiff(FromArgTST->getTemplateName().getAsTemplateDecl(),
                            ToArgTST->getTemplateName().getAsTemplateDecl(),

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to