https://github.com/hnakamura5 updated 
https://github.com/llvm/llvm-project/pull/155837

>From 2cc33a8a0d2cb266a52483c6bb5bcc2e95564db9 Mon Sep 17 00:00:00 2001
From: hnakamura5 <k.nakamura.hirof...@gmail.com>
Date: Thu, 28 Aug 2025 22:28:56 +0900
Subject: [PATCH 1/2] [clang-format] Fix TableGen nested DAGArg format

---
 clang/lib/Format/TokenAnnotator.cpp           | 13 ++++++++++++-
 clang/unittests/Format/FormatTestTableGen.cpp | 11 +++++++++--
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/clang/lib/Format/TokenAnnotator.cpp 
b/clang/lib/Format/TokenAnnotator.cpp
index a220de54f46bf..997fcfc2159dc 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -1045,6 +1045,14 @@ class AnnotatingParser {
       }
     }
     // Parse the [DagArgList] part
+    return parseTableGenDAGArgList(Opener, BreakInside);
+  }
+
+  // DagArgList   ::=  "," DagArg [DagArgList]
+  // This parses SimpleValue 6's [DagArgList] part.
+  bool parseTableGenDAGArgList(FormatToken *Opener, bool BreakInside) {
+    ScopedContextCreator ContextCreator(*this, tok::l_paren, 1);
+    Contexts.back().IsTableGenDAGArgList = true;
     bool FirstDAGArgListElm = true;
     while (CurrentToken) {
       if (!FirstDAGArgListElm && CurrentToken->is(tok::comma)) {
@@ -1101,6 +1109,9 @@ class AnnotatingParser {
     // SimpleValue6 ::=  "(" DagArg [DagArgList] ")"
     if (Tok->is(tok::l_paren)) {
       Tok->setType(TT_TableGenDAGArgOpener);
+      // Nested DAGArg requires space before '(' as separator.
+      if (Contexts.back().IsTableGenDAGArgList)
+        Tok->SpacesRequiredBefore = 1;
       return parseTableGenDAGArgAndList(Tok);
     }
     // SimpleValue 9: Bang operator
@@ -2138,7 +2149,7 @@ class AnnotatingParser {
     // Whether the braces may mean concatenation instead of structure or array
     // literal.
     bool VerilogMayBeConcatenation = false;
-    bool IsTableGenDAGArg = false;
+    bool IsTableGenDAGArgList = false;
     bool IsTableGenBangOpe = false;
     bool IsTableGenCondOpe = false;
     enum {
diff --git a/clang/unittests/Format/FormatTestTableGen.cpp 
b/clang/unittests/Format/FormatTestTableGen.cpp
index 1c3d187de393c..33acd2435d289 100644
--- a/clang/unittests/Format/FormatTestTableGen.cpp
+++ b/clang/unittests/Format/FormatTestTableGen.cpp
@@ -185,11 +185,18 @@ TEST_F(FormatTestTableGen, SimpleValue6) {
                "      i32:$dst6,                                // dst6\n"
                "      i32:$dst7                                 // dst7\n"
                "  );\n"
-               "  let DAGArgBang = (!cast<SomeType>(\"Some\") i32:$src1,\n"
-               "      i32:$src2);\n"
+               "  let DAGArgBang =\n"
+               "      (!cast<SomeType>(\"Some\") i32:$src1, i32:$src2);\n"
+               "  let NestedDAGArg = ((DAGArg1 (v111 v112, v113), v12) v2,\n"
+               "      (DAGArg3 (v31 v32)));\n"
                "}");
 }
 
+TEST_F(FormatTestTableGen, SimpleValue6_NestedInPat) {
+  verifyFormat("def : Pat<(vec.vt (avg (vec.vt V128:$l), (vec.vt V128:$r))),\n"
+               "          (inst $l, $r)>;");
+}
+
 TEST_F(FormatTestTableGen, SimpleValue7) {
   verifyFormat("def SimpleValue7 { let Identifier = SimpleValue; }");
 }

>From da67c7be13ecefa37d52542618bf9a9a6b302262 Mon Sep 17 00:00:00 2001
From: hnakamura5 <k.nakamura.hirof...@gmail.com>
Date: Sun, 31 Aug 2025 14:46:38 +0900
Subject: [PATCH 2/2] Changed Context's BindingStrength Increase to 0

---
 clang/lib/Format/TokenAnnotator.cpp           | 2 +-
 clang/unittests/Format/FormatTestTableGen.cpp | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/clang/lib/Format/TokenAnnotator.cpp 
b/clang/lib/Format/TokenAnnotator.cpp
index 997fcfc2159dc..27a90ed54aa0f 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -1051,7 +1051,7 @@ class AnnotatingParser {
   // DagArgList   ::=  "," DagArg [DagArgList]
   // This parses SimpleValue 6's [DagArgList] part.
   bool parseTableGenDAGArgList(FormatToken *Opener, bool BreakInside) {
-    ScopedContextCreator ContextCreator(*this, tok::l_paren, 1);
+    ScopedContextCreator ContextCreator(*this, tok::l_paren, 0);
     Contexts.back().IsTableGenDAGArgList = true;
     bool FirstDAGArgListElm = true;
     while (CurrentToken) {
diff --git a/clang/unittests/Format/FormatTestTableGen.cpp 
b/clang/unittests/Format/FormatTestTableGen.cpp
index 33acd2435d289..df20cc26e1094 100644
--- a/clang/unittests/Format/FormatTestTableGen.cpp
+++ b/clang/unittests/Format/FormatTestTableGen.cpp
@@ -185,8 +185,8 @@ TEST_F(FormatTestTableGen, SimpleValue6) {
                "      i32:$dst6,                                // dst6\n"
                "      i32:$dst7                                 // dst7\n"
                "  );\n"
-               "  let DAGArgBang =\n"
-               "      (!cast<SomeType>(\"Some\") i32:$src1, i32:$src2);\n"
+               "  let DAGArgBang = (!cast<SomeType>(\"Some\") i32:$src1,\n"
+               "      i32:$src2);\n"
                "  let NestedDAGArg = ((DAGArg1 (v111 v112, v113), v12) v2,\n"
                "      (DAGArg3 (v31 v32)));\n"
                "}");

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

Reply via email to