[llvm] [UTC] Align label var handling of old lines to new lines (PR #173850)

Kunqiu Chen via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 29 01:28:25 PST 2025


https://github.com/Camsyn updated https://github.com/llvm/llvm-project/pull/173850

>From 78f9074fbf5c79e893b7e9dc1e379a10ee4ec82e Mon Sep 17 00:00:00 2001
From: Camsyn <camsyn at foxmail.com>
Date: Mon, 29 Dec 2025 16:56:34 +0800
Subject: [PATCH 1/5] Before-commit test

---
 .../Inputs/keep-label-name.ll                 | 57 +++++++++++++++++++
 .../Inputs/keep-label-name.ll.expected        | 57 +++++++++++++++++++
 .../update_test_checks/keep-label-name.test   |  3 +
 3 files changed, 117 insertions(+)
 create mode 100644 llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/keep-label-name.ll
 create mode 100644 llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/keep-label-name.ll.expected
 create mode 100644 llvm/test/tools/UpdateTestChecks/update_test_checks/keep-label-name.test

diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/keep-label-name.ll b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/keep-label-name.ll
new file mode 100644
index 0000000000000..c065d8a09461d
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/keep-label-name.ll
@@ -0,0 +1,57 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -S | FileCheck %s
+
+define void @foo(i32 %v) {
+; CHECK-LABEL: define void @foo(
+; CHECK-SAME: i32 [[V:%.*]]) {
+; CHECK-NEXT:  [[ENTRY:.*:]]
+; CHECK-NEXT:    br i1 false, label %[[CASE2:.*]], label %[[IF_ELSE:.*]]
+; CHECK:       [[IF_ELSE]]:
+; CHECK-NEXT:    switch i32 [[V]], label %[[DEFAULT:.*]] [
+; CHECK-NEXT:      i32 3, label %[[EXIT:.*]]
+; CHECK-NEXT:      i32 2, label %[[CASE2]]
+; CHECK-NEXT:      i32 1, label %[[CASE1:.*]]
+; CHECK-NEXT:    ]
+; CHECK:       [[CASE1]]:
+; CHECK-NEXT:    br label %[[DEFAULT]]
+; CHECK:       [[CASE2]]:
+; CHECK-NEXT:    br label %[[DEFAULT]]
+; CHECK:       [[DEFAULT]]:
+; CHECK-NEXT:    [[PHI:%.*]] = phi i32 [ 1, %[[CASE1]] ], [ 2, %[[CASE2]] ], [ [[V]], %[[IF_ELSE]] ]
+; CHECK-NEXT:    br label %[[SWITCH:.*]]
+; CHECK:       [[SWITCH]]:
+; CHECK-NEXT:    br label %[[EXIT]]
+; CHECK:       [[UNREACH:.*:]]
+; CHECK-NEXT:    br label %[[EXIT]]
+; CHECK:       [[EXIT]]:
+; CHECK-NEXT:    ret void
+;
+entry:
+  br i1 false, label %case2, label %if.else
+
+if.else:                                          ; preds = %entry
+  switch i32 %v, label %default [
+  i32 3, label %exit
+  i32 2, label %case2
+  i32 1, label %case1
+  ]
+
+case1:                                            ; preds = %if.else
+  br label %default
+
+case2:                                            ; preds = %if.else, %entry
+  br label %default
+
+default:                                          ; preds = %case2, %case1, %if.else
+  %phi = phi i32 [ 1, %case1 ], [ 2, %case2 ], [ %v, %if.else ]
+  br label %switch
+
+switch:                                           ; preds = %default
+  br label %exit
+
+unreach:                                          ; No predecessors!
+  br label %exit
+
+exit:                                             ; preds = %unreach, %switch, %if.else
+  ret void
+}
diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/keep-label-name.ll.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/keep-label-name.ll.expected
new file mode 100644
index 0000000000000..4976cd6682ca8
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/keep-label-name.ll.expected
@@ -0,0 +1,57 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -S | FileCheck %s
+
+define void @foo(i32 %v) {
+; CHECK-LABEL: define void @foo(
+; CHECK-SAME: i32 [[V:%.*]]) {
+; CHECK-NEXT:  [[ENTRY:.*:]]
+; CHECK-NEXT:    br i1 false, label %[[CASE2:.*]], label %[[IF_ELSE:.*]]
+; CHECK:       [[IF_ELSE]]:
+; CHECK-NEXT:    switch i32 [[V]], label %[[DEFAULT:.*]] [
+; CHECK-NEXT:      i32 3, label %[[EXIT:.*]]
+; CHECK-NEXT:      i32 2, label %[[CASE2]]
+; CHECK-NEXT:      i32 1, label %[[UNREACH:.*]]
+; CHECK-NEXT:    ]
+; CHECK:       [[UNREACH]]:
+; CHECK-NEXT:    br label %[[DEFAULT]]
+; CHECK:       [[CASE2]]:
+; CHECK-NEXT:    br label %[[DEFAULT]]
+; CHECK:       [[DEFAULT]]:
+; CHECK-NEXT:    [[PHI:%.*]] = phi i32 [ 1, %[[UNREACH]] ], [ 2, %[[CASE2]] ], [ [[V]], %[[IF_ELSE]] ]
+; CHECK-NEXT:    br label %[[SWITCH:.*]]
+; CHECK:       [[SWITCH]]:
+; CHECK-NEXT:    br label %[[EXIT]]
+; CHECK:       [[UNREACH1:.*:]]
+; CHECK-NEXT:    br label %[[EXIT]]
+; CHECK:       [[EXIT]]:
+; CHECK-NEXT:    ret void
+;
+entry:
+  br i1 false, label %case2, label %if.else
+
+if.else:                                          ; preds = %entry
+  switch i32 %v, label %default [
+  i32 3, label %exit
+  i32 2, label %case2
+  i32 1, label %case1
+  ]
+
+case1:                                            ; preds = %if.else
+  br label %default
+
+case2:                                            ; preds = %if.else, %entry
+  br label %default
+
+default:                                          ; preds = %case2, %case1, %if.else
+  %phi = phi i32 [ 1, %case1 ], [ 2, %case2 ], [ %v, %if.else ]
+  br label %switch
+
+switch:                                           ; preds = %default
+  br label %exit
+
+unreach:                                          ; No predecessors!
+  br label %exit
+
+exit:                                             ; preds = %unreach, %switch, %if.else
+  ret void
+}
diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/keep-label-name.test b/llvm/test/tools/UpdateTestChecks/update_test_checks/keep-label-name.test
new file mode 100644
index 0000000000000..5488e78c4ac03
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/keep-label-name.test
@@ -0,0 +1,3 @@
+## keep-label-name test checking that update_test_checks.py does not replace unchanged label names
+# RUN: cp -f %S/Inputs/keep-label-name.ll %t.ll && %update_test_checks %t.ll
+# RUN: diff -u %t.ll %S/Inputs/keep-label-name.ll.expected

>From bbde02da0503469b9253debde68505380291c762 Mon Sep 17 00:00:00 2001
From: Camsyn <camsyn at foxmail.com>
Date: Mon, 29 Dec 2025 16:59:34 +0800
Subject: [PATCH 2/5] Align how to handle label var

---
 llvm/utils/UpdateTestChecks/common.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/llvm/utils/UpdateTestChecks/common.py b/llvm/utils/UpdateTestChecks/common.py
index baa0377cd8b81..303e6840f578b 100644
--- a/llvm/utils/UpdateTestChecks/common.py
+++ b/llvm/utils/UpdateTestChecks/common.py
@@ -1577,7 +1577,12 @@ def find_diff_matching(lhs: List[str], rhs: List[str]) -> List[tuple]:
 
 
 VARIABLE_TAG = "[[@@]]"
-METAVAR_RE = re.compile(r"\[\[([A-Z0-9_]+)(?::[^]]+)?\]\]")
+METAVAR_PATTERN = r"\[\[([A-Z0-9_]+)(?::[^]]+)?\]\]"
+LABEL_METAVAR_PATTERN1 = r"label %" + METAVAR_PATTERN
+LABEL_METAVAR_PATTERN2 = r"^" + METAVAR_PATTERN + r":"
+METAVAR_RE = re.compile(
+    fr"(?:{LABEL_METAVAR_PATTERN1})|(?:{LABEL_METAVAR_PATTERN2})|(?:{METAVAR_PATTERN})"
+)
 NUMERIC_SUFFIX_RE = re.compile(r"[0-9]*$")
 
 
@@ -2014,7 +2019,8 @@ def escape_braces(match_obj):
                     CheckValueInfo(
                         key=None,
                         text=None,
-                        name=m.group(1),
+                        # There only ONE capturing group for the name
+                        name=m.group(m.lastindex),
                         prefix="",
                         suffix="",
                     )

>From 65c12b7a15f0b7a1026f42d29bd72203944e153f Mon Sep 17 00:00:00 2001
From: Camsyn <camsyn at foxmail.com>
Date: Mon, 29 Dec 2025 17:06:53 +0800
Subject: [PATCH 3/5] After-commit test

---
 .../update_test_checks/Inputs/keep-label-name.ll.expected | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/keep-label-name.ll.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/keep-label-name.ll.expected
index 4976cd6682ca8..c065d8a09461d 100644
--- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/keep-label-name.ll.expected
+++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/keep-label-name.ll.expected
@@ -10,18 +10,18 @@ define void @foo(i32 %v) {
 ; CHECK-NEXT:    switch i32 [[V]], label %[[DEFAULT:.*]] [
 ; CHECK-NEXT:      i32 3, label %[[EXIT:.*]]
 ; CHECK-NEXT:      i32 2, label %[[CASE2]]
-; CHECK-NEXT:      i32 1, label %[[UNREACH:.*]]
+; CHECK-NEXT:      i32 1, label %[[CASE1:.*]]
 ; CHECK-NEXT:    ]
-; CHECK:       [[UNREACH]]:
+; CHECK:       [[CASE1]]:
 ; CHECK-NEXT:    br label %[[DEFAULT]]
 ; CHECK:       [[CASE2]]:
 ; CHECK-NEXT:    br label %[[DEFAULT]]
 ; CHECK:       [[DEFAULT]]:
-; CHECK-NEXT:    [[PHI:%.*]] = phi i32 [ 1, %[[UNREACH]] ], [ 2, %[[CASE2]] ], [ [[V]], %[[IF_ELSE]] ]
+; CHECK-NEXT:    [[PHI:%.*]] = phi i32 [ 1, %[[CASE1]] ], [ 2, %[[CASE2]] ], [ [[V]], %[[IF_ELSE]] ]
 ; CHECK-NEXT:    br label %[[SWITCH:.*]]
 ; CHECK:       [[SWITCH]]:
 ; CHECK-NEXT:    br label %[[EXIT]]
-; CHECK:       [[UNREACH1:.*:]]
+; CHECK:       [[UNREACH:.*:]]
 ; CHECK-NEXT:    br label %[[EXIT]]
 ; CHECK:       [[EXIT]]:
 ; CHECK-NEXT:    ret void

>From 56a15696322c771caa0a875c88404fc97b291f64 Mon Sep 17 00:00:00 2001
From: Camsyn <camsyn at foxmail.com>
Date: Mon, 29 Dec 2025 17:26:42 +0800
Subject: [PATCH 4/5] Update comment

---
 llvm/utils/UpdateTestChecks/common.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/utils/UpdateTestChecks/common.py b/llvm/utils/UpdateTestChecks/common.py
index 303e6840f578b..5ed4f8a44f1b3 100644
--- a/llvm/utils/UpdateTestChecks/common.py
+++ b/llvm/utils/UpdateTestChecks/common.py
@@ -2019,7 +2019,7 @@ def escape_braces(match_obj):
                     CheckValueInfo(
                         key=None,
                         text=None,
-                        # There only ONE capturing group for the name
+                        # The sole capturing group is only designated for the name.
                         name=m.group(m.lastindex),
                         prefix="",
                         suffix="",

>From 59e3f8458a0c4d06f3c3a72f45381dace13d6555 Mon Sep 17 00:00:00 2001
From: Camsyn <camsyn at foxmail.com>
Date: Mon, 29 Dec 2025 17:28:09 +0800
Subject: [PATCH 5/5] Make formatter happy

---
 llvm/utils/UpdateTestChecks/common.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/utils/UpdateTestChecks/common.py b/llvm/utils/UpdateTestChecks/common.py
index 5ed4f8a44f1b3..cd15994326f98 100644
--- a/llvm/utils/UpdateTestChecks/common.py
+++ b/llvm/utils/UpdateTestChecks/common.py
@@ -1581,7 +1581,7 @@ def find_diff_matching(lhs: List[str], rhs: List[str]) -> List[tuple]:
 LABEL_METAVAR_PATTERN1 = r"label %" + METAVAR_PATTERN
 LABEL_METAVAR_PATTERN2 = r"^" + METAVAR_PATTERN + r":"
 METAVAR_RE = re.compile(
-    fr"(?:{LABEL_METAVAR_PATTERN1})|(?:{LABEL_METAVAR_PATTERN2})|(?:{METAVAR_PATTERN})"
+    rf"(?:{LABEL_METAVAR_PATTERN1})|(?:{LABEL_METAVAR_PATTERN2})|(?:{METAVAR_PATTERN})"
 )
 NUMERIC_SUFFIX_RE = re.compile(r"[0-9]*$")
 



More information about the llvm-commits mailing list