https://github.com/Arvind220903 created 
https://github.com/llvm/llvm-project/pull/191150

None

>From 5b9ac75a7b497716a6e9f8338c0cbc8ee0defc52 Mon Sep 17 00:00:00 2001
From: Arvind <[email protected]>
Date: Thu, 9 Apr 2026 13:16:28 +0530
Subject: [PATCH 1/5] checkout: temporary commit for worktree checkout


>From 65bad99bec597f48f79d67a2b862f843e00f497b Mon Sep 17 00:00:00 2001
From: Arvind <[email protected]>
Date: Thu, 9 Apr 2026 14:58:44 +0530
Subject: [PATCH 2/5] feat: add T546f4rv5.json test case for compiler
 verification

---
 T546f4rv5.json |   1 +
 pr_191141.json | Bin 0 -> 37786 bytes
 repro.ll       |  47 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 48 insertions(+)
 create mode 100644 T546f4rv5.json
 create mode 100644 pr_191141.json
 create mode 100644 repro.ll

diff --git a/T546f4rv5.json b/T546f4rv5.json
new file mode 100644
index 0000000000000..cd4adbbd4e659
--- /dev/null
+++ b/T546f4rv5.json
@@ -0,0 +1 @@
+{"sessions":[{"id":1,"language":"llvm","source":"target datalayout = 
\"e-m:e-p:64:64-i64:64-i128:128-n32:64-S128\"\ntarget triple = 
\"riscv64-unknown-linux-gnu\"\n\ndefine void @foo(i64 %var_4, i1 
%tobool.not.us) #0 {\nentry:\n  br label %for.body.us\n\nfor.body.us:           
                           ; preds = %for.body.us, %entry\n  %0 = insertelement 
<16 x i64> poison, i64 %var_4, i64 0\n  %1 = icmp slt <16 x i64> %0, 
zeroinitializer\n  %2 = bitcast <16 x i1> %1 to i16\n  %3 = icmp ne i16 %2, 0\n 
 %4 = insertelement <16 x i64> %0, i64 0, i64 0\n  %5 = insertelement <16 x 
i64> %4, i64 1, i64 2\n  %6 = icmp slt <16 x i64> %4, zeroinitializer\n  %7 = 
bitcast <16 x i1> %6 to i16\n  %8 = icmp ne i16 %7, 0\n  %9 = insertelement <16 
x i64> %5, i64 0, i64 3\n  %10 = icmp slt <16 x i64> %9, zeroinitializer\n  %11 
= bitcast <16 x i1> %10 to i16\n  %12 = icmp ne i16 %11, 0\n  br i1 %12, label 
%for.body.us, label %for.cond13.preheader.us\n\nfor.cond13.preheader.us:        
                  ; preds = %for.body.us\n  br i1 %tobool.not.us, label 
%for.body23.us.us484.us.us.us.preheader, label 
%for.body23.us.us499.us.us.us.preheader\n\nfor.body23.us.us499.us.us.us.preheader:
           ; preds = %for.cond13.preheader.us\n  br i1 %8, label 
%for.body30.us363.us449.us.us.us.us, label 
%vector.ph4767\n\nfor.body23.us.us484.us.us.us.preheader:           ; preds = 
%for.cond13.preheader.us\n  %op.rdx6735 = or i1 false, %3\n  br i1 %12, label 
%for.body30.us351.us.us.us611.us.us, label %vector.ph3672\n\nvector.ph3672:     
                               ; preds = 
%for.body23.us.us484.us.us.us.preheader\n  ret 
void\n\nfor.body30.us351.us.us.us611.us.us:               ; preds = 
%for.body23.us.us484.us.us.us.preheader\n  ret void\n\nvector.ph4767:           
                         ; preds = %for.body23.us.us499.us.us.us.preheader\n  
ret void\n\nfor.body30.us363.us449.us.us.us.us:               ; preds = 
%for.body23.us.us499.us.us.us.preheader\n  ret void\n}\n\nattributes #0 = { 
\"target-features\"=\"+v\" 
}","conformanceview":false,"compilers":[{"_internalid":1,"id":"llctrunk","options":"-march=riscv64
 -O3 
-verify-machineinstrs","filters":{"binary":false,"binaryObject":false,"commentOnly":true,"demangle":true,"directives":true,"execute":false,"intel":false,"labels":true,"libraryCode":true,"trim":false,"debugCalls":false},"libs":[],"specialoutputs":[],"tools":[],"overrides":[]}],"executors":[]}],"trees":[]}
\ No newline at end of file
diff --git a/pr_191141.json b/pr_191141.json
new file mode 100644
index 
0000000000000000000000000000000000000000..dbc8ac0ba1c15a46f94f16812cb513c4827e43a9
GIT binary patch
literal 37786
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

literal 0
HcmV?d00001

diff --git a/repro.ll b/repro.ll
new file mode 100644
index 0000000000000..90d423644882a
--- /dev/null
+++ b/repro.ll
@@ -0,0 +1,47 @@
+target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
+target triple = "riscv64-unknown-linux-gnu"
+
+define void @foo(i64 %var_4, i1 %tobool.not.us) #0 {
+entry:
+  br label %for.body.us
+
+for.body.us:                                      ; preds = %for.body.us, 
%entry
+  %0 = insertelement <16 x i64> poison, i64 %var_4, i64 0
+  %1 = icmp slt <16 x i64> %0, zeroinitializer
+  %2 = bitcast <16 x i1> %1 to i16
+  %3 = icmp ne i16 %2, 0
+  %4 = insertelement <16 x i64> %0, i64 0, i64 0
+  %5 = insertelement <16 x i64> %4, i64 1, i64 2
+  %6 = icmp slt <16 x i64> %4, zeroinitializer
+  %7 = bitcast <16 x i1> %6 to i16
+  %8 = icmp ne i16 %7, 0
+  %9 = insertelement <16 x i64> %5, i64 0, i64 3
+  %10 = icmp slt <16 x i64> %9, zeroinitializer
+  %11 = bitcast <16 x i1> %10 to i16
+  %12 = icmp ne i16 %11, 0
+  br i1 %12, label %for.body.us, label %for.cond13.preheader.us
+
+for.cond13.preheader.us:                          ; preds = %for.body.us
+  br i1 %tobool.not.us, label %for.body23.us.us484.us.us.us.preheader, label 
%for.body23.us.us499.us.us.us.preheader
+
+for.body23.us.us499.us.us.us.preheader:           ; preds = 
%for.cond13.preheader.us
+  br i1 %8, label %for.body30.us363.us449.us.us.us.us, label %vector.ph4767
+
+for.body23.us.us484.us.us.us.preheader:           ; preds = 
%for.cond13.preheader.us
+  %op.rdx6735 = or i1 false, %3
+  br i1 %12, label %for.body30.us351.us.us.us611.us.us, label %vector.ph3672
+
+vector.ph3672:                                    ; preds = 
%for.body23.us.us484.us.us.us.preheader
+  ret void
+
+for.body30.us351.us.us.us611.us.us:               ; preds = 
%for.body23.us.us484.us.us.us.preheader
+  ret void
+
+vector.ph4767:                                    ; preds = 
%for.body23.us.us499.us.us.us.preheader
+  ret void
+
+for.body30.us363.us449.us.us.us.us:               ; preds = 
%for.body23.us.us499.us.us.us.preheader
+  ret void
+}
+
+attributes #0 = { "target-features"="+v" }
\ No newline at end of file

>From 6e987206b9f7ffaefd1de1b80760f72cf8bbdffb Mon Sep 17 00:00:00 2001
From: Arvind <[email protected]>
Date: Thu, 9 Apr 2026 15:16:41 +0530
Subject: [PATCH 3/5] checkout: temporary commit for worktree checkout


>From c52aec71c2d39f34e762b58c362b4ac33c1ca844 Mon Sep 17 00:00:00 2001
From: Arvind <[email protected]>
Date: Thu, 9 Apr 2026 15:17:21 +0530
Subject: [PATCH 4/5] checkout: temporary commit for worktree checkout


>From f0a083ad3f3653e6b5e7b47e2189f68ad27d0ac6 Mon Sep 17 00:00:00 2001
From: Arvind <[email protected]>
Date: Thu, 9 Apr 2026 15:21:16 +0530
Subject: [PATCH 5/5] [Clang] Suppress false-positive deprecation and
 availability warnings on annotated using alias declarations

Fixes #191099 by wrapping alias declarations in a ParsingDeclRAIIObject, 
correctly delaying and suppressing diagnostics from the underlying type if the 
alias itself holds the same attribute.
---
 clang/lib/Parse/ParseDeclCXX.cpp | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp
index 5a7863506cc91..e967f448e5866 100644
--- a/clang/lib/Parse/ParseDeclCXX.cpp
+++ b/clang/lib/Parse/ParseDeclCXX.cpp
@@ -721,6 +721,9 @@ Parser::DeclGroupPtrTy Parser::ParseUsingDeclaration(
   if (InInitStatement && Tok.isNot(tok::identifier))
     return nullptr;
 
+  std::optional<ParsingDeclRAIIObject> UsingRAII;
+  UsingRAII.emplace(*this, ParsingDeclRAIIObject::NoParent);
+
   UsingDeclarator D;
   bool InvalidDeclarator = ParseUsingDeclarator(Context, D);
 
@@ -760,8 +763,12 @@ Parser::DeclGroupPtrTy Parser::ParseUsingDeclaration(
     Decl *AD = ParseAliasDeclarationAfterDeclarator(
         TemplateInfo, UsingLoc, D, DeclEnd, AS, Attrs, &DeclFromDeclSpec);
 
-    if (!AD)
+    if (!AD) {
+      UsingRAII->abort();
       return nullptr;
+    }
+
+    UsingRAII->complete(AD);
 
     return Actions.ConvertDeclToDeclGroup(AD, DeclFromDeclSpec);
   }
@@ -779,6 +786,7 @@ Parser::DeclGroupPtrTy Parser::ParseUsingDeclaration(
     // Unfortunately, we have to bail out instead of recovering by
     // ignoring the parameters, just in case the nested name specifier
     // depends on the parameters.
+    UsingRAII->abort();
     return nullptr;
   }
 
@@ -789,9 +797,10 @@ Parser::DeclGroupPtrTy Parser::ParseUsingDeclaration(
     DiagnoseCXX11AttributeExtension(Attrs);
     Attrs.prepend(PrefixAttrs.begin(), PrefixAttrs.end());
 
-    if (InvalidDeclarator)
+    if (InvalidDeclarator) {
       SkipUntil(tok::comma, tok::semi, StopBeforeMatch);
-    else {
+      UsingRAII->abort();
+    } else {
       // "typename" keyword is allowed for identifiers only,
       // because it may be a type definition.
       if (D.TypenameLoc.isValid() &&
@@ -806,13 +815,19 @@ Parser::DeclGroupPtrTy Parser::ParseUsingDeclaration(
       Decl *UD = Actions.ActOnUsingDeclaration(getCurScope(), AS, UsingLoc,
                                                D.TypenameLoc, D.SS, D.Name,
                                                D.EllipsisLoc, Attrs);
-      if (UD)
+      if (UD) {
         DeclsInGroup.push_back(UD);
+        UsingRAII->complete(UD);
+      } else {
+        UsingRAII->abort();
+      }
     }
 
     if (!TryConsumeToken(tok::comma))
       break;
 
+    UsingRAII.emplace(*this, ParsingDeclRAIIObject::NoParent);
+
     // Parse another using-declarator.
     Attrs.clear();
     InvalidDeclarator = ParseUsingDeclarator(Context, D);

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

Reply via email to