[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