[llvm] [UTC] Indent switch cases (PR #165212)
Kunqiu Chen via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 28 00:49:49 PDT 2025
https://github.com/Camsyn updated https://github.com/llvm/llvm-project/pull/165212
>From cf6d0f6b9dda4b6a82da462811524b1a5f568c39 Mon Sep 17 00:00:00 2001
From: Camsyn <camsyn at foxmail.com>
Date: Mon, 27 Oct 2025 20:21:17 +0800
Subject: [PATCH 1/5] Add new test before commit
---
.../update_test_checks/Inputs/switch_case.ll | 55 +++++++++
.../Inputs/switch_case.ll.expected | 106 ++++++++++++++++++
.../update_test_checks/switch_case.test | 3 +
3 files changed, 164 insertions(+)
create mode 100644 llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll
create mode 100644 llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll.expected
create mode 100644 llvm/test/tools/UpdateTestChecks/update_test_checks/switch_case.test
diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll
new file mode 100644
index 0000000000000..b1ed1a118b78f
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll
@@ -0,0 +1,55 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; RUN: opt < %s -S | FileCheck %s
+
+; Test whether the UTC format the switch-cases correctly, which requires TWO extra spaces.
+
+define i8 @testi8(i8 %x) {
+ switch i8 %x, label %default [
+ i8 0, label %case1
+ i8 1, label %case2
+ i8 2, label %case3
+ i8 3, label %case3
+ ]
+default:
+ ret i8 0
+case1:
+ ret i8 1
+case2:
+ ret i8 2
+case3:
+ ret i8 3
+}
+
+define i32 @testi32(i32 %x) {
+ switch i32 %x, label %default [
+ i32 0, label %case1
+ i32 1, label %case2
+ i32 2, label %case3
+ i32 3, label %case3
+ ]
+default:
+ ret i32 0
+case1:
+ ret i32 1
+case2:
+ ret i32 2
+case3:
+ ret i32 3
+}
+
+define i128 @testi128(i128 %x) {
+ switch i128 %x, label %default [
+ i128 0, label %case1
+ i128 1, label %case2
+ i128 2, label %case3
+ i128 3, label %case3
+ ]
+default:
+ ret i128 0
+case1:
+ ret i128 1
+case2:
+ ret i128 2
+case3:
+ ret i128 3
+}
diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll.expected
new file mode 100644
index 0000000000000..154afb81a5f5c
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll.expected
@@ -0,0 +1,106 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; RUN: opt < %s -S | FileCheck %s
+
+; Test whether the UTC format the switch-cases correctly, which requires TWO extra spaces.
+
+define i8 @testi8(i8 %x) {
+; CHECK-LABEL: define i8 @testi8(
+; CHECK-SAME: i8 [[X:%.*]]) {
+; CHECK-NEXT: switch i8 [[X]], label %[[DEFAULT:.*]] [
+; CHECK-NEXT: i8 0, label %[[CASE1:.*]]
+; CHECK-NEXT: i8 1, label %[[CASE2:.*]]
+; CHECK-NEXT: i8 2, label %[[CASE3:.*]]
+; CHECK-NEXT: i8 3, label %[[CASE3]]
+; CHECK-NEXT: ]
+; CHECK: [[DEFAULT]]:
+; CHECK-NEXT: ret i8 0
+; CHECK: [[CASE1]]:
+; CHECK-NEXT: ret i8 1
+; CHECK: [[CASE2]]:
+; CHECK-NEXT: ret i8 2
+; CHECK: [[CASE3]]:
+; CHECK-NEXT: ret i8 3
+;
+ switch i8 %x, label %default [
+ i8 0, label %case1
+ i8 1, label %case2
+ i8 2, label %case3
+ i8 3, label %case3
+ ]
+default:
+ ret i8 0
+case1:
+ ret i8 1
+case2:
+ ret i8 2
+case3:
+ ret i8 3
+}
+
+define i32 @testi32(i32 %x) {
+; CHECK-LABEL: define i32 @testi32(
+; CHECK-SAME: i32 [[X:%.*]]) {
+; CHECK-NEXT: switch i32 [[X]], label %[[DEFAULT:.*]] [
+; CHECK-NEXT: i32 0, label %[[CASE1:.*]]
+; CHECK-NEXT: i32 1, label %[[CASE2:.*]]
+; CHECK-NEXT: i32 2, label %[[CASE3:.*]]
+; CHECK-NEXT: i32 3, label %[[CASE3]]
+; CHECK-NEXT: ]
+; CHECK: [[DEFAULT]]:
+; CHECK-NEXT: ret i32 0
+; CHECK: [[CASE1]]:
+; CHECK-NEXT: ret i32 1
+; CHECK: [[CASE2]]:
+; CHECK-NEXT: ret i32 2
+; CHECK: [[CASE3]]:
+; CHECK-NEXT: ret i32 3
+;
+ switch i32 %x, label %default [
+ i32 0, label %case1
+ i32 1, label %case2
+ i32 2, label %case3
+ i32 3, label %case3
+ ]
+default:
+ ret i32 0
+case1:
+ ret i32 1
+case2:
+ ret i32 2
+case3:
+ ret i32 3
+}
+
+define i128 @testi128(i128 %x) {
+; CHECK-LABEL: define i128 @testi128(
+; CHECK-SAME: i128 [[X:%.*]]) {
+; CHECK-NEXT: switch i128 [[X]], label %[[DEFAULT:.*]] [
+; CHECK-NEXT: i128 0, label %[[CASE1:.*]]
+; CHECK-NEXT: i128 1, label %[[CASE2:.*]]
+; CHECK-NEXT: i128 2, label %[[CASE3:.*]]
+; CHECK-NEXT: i128 3, label %[[CASE3]]
+; CHECK-NEXT: ]
+; CHECK: [[DEFAULT]]:
+; CHECK-NEXT: ret i128 0
+; CHECK: [[CASE1]]:
+; CHECK-NEXT: ret i128 1
+; CHECK: [[CASE2]]:
+; CHECK-NEXT: ret i128 2
+; CHECK: [[CASE3]]:
+; CHECK-NEXT: ret i128 3
+;
+ switch i128 %x, label %default [
+ i128 0, label %case1
+ i128 1, label %case2
+ i128 2, label %case3
+ i128 3, label %case3
+ ]
+default:
+ ret i128 0
+case1:
+ ret i128 1
+case2:
+ ret i128 2
+case3:
+ ret i128 3
+}
diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/switch_case.test b/llvm/test/tools/UpdateTestChecks/update_test_checks/switch_case.test
new file mode 100644
index 0000000000000..18b590cb9a39d
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/switch_case.test
@@ -0,0 +1,3 @@
+## switch_case test checking that update_test_checks.py works correctly
+# RUN: cp -f %S/Inputs/switch_case.ll %t.ll && %update_test_checks %t.ll
+# RUN: diff -u %t.ll %S/Inputs/switch_case.ll.expected
>From 3cd491a282f22428ee0dd9a8ce34ba158841f165 Mon Sep 17 00:00:00 2001
From: Camsyn <camsyn at foxmail.com>
Date: Mon, 27 Oct 2025 16:18:09 +0800
Subject: [PATCH 2/5] [UTC][NFC] Indent switch cases
---
llvm/utils/UpdateTestChecks/common.py | 1 +
llvm/utils/update_test_checks.py | 9 +++++++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/llvm/utils/UpdateTestChecks/common.py b/llvm/utils/UpdateTestChecks/common.py
index a5e3c39bfdecd..1ba716112f527 100644
--- a/llvm/utils/UpdateTestChecks/common.py
+++ b/llvm/utils/UpdateTestChecks/common.py
@@ -606,6 +606,7 @@ def invoke_tool(exe, cmd_args, ir, preprocess_cmd=None, verbose=False):
DEBUG_ONLY_ARG_RE = re.compile(r"-debug-only[= ]([^ ]+)")
IS_DEBUG_RECORD_RE = re.compile(r"^(\s+)#dbg_")
+IS_SWITCH_CASE_RE = re.compile(r"^\s+i\d{1,2} \d+, label %\w+")
SCRUB_LEADING_WHITESPACE_RE = re.compile(r"^(\s+)")
SCRUB_WHITESPACE_RE = re.compile(r"(?!^(| \w))[ \t]+", flags=re.M)
diff --git a/llvm/utils/update_test_checks.py b/llvm/utils/update_test_checks.py
index 3b562fbc54f78..37d046e53aa82 100755
--- a/llvm/utils/update_test_checks.py
+++ b/llvm/utils/update_test_checks.py
@@ -260,9 +260,14 @@ def update_test(ti: common.TestInfo):
skip_same_checks=dropped_previous_line,
):
# This input line of the function body will go as-is into the output.
- # Except make leading whitespace uniform: 2 spaces. 4 for debug records.
+ # Except make leading whitespace uniform: 2 spaces. 4 for debug records/switch cases.
indent = (
- " " if not common.IS_DEBUG_RECORD_RE.match(input_line) else " "
+ " " * 4
+ if (
+ common.IS_DEBUG_RECORD_RE.match(input_line)
+ or common.IS_SWITCH_CASE_RE.match(input_line)
+ )
+ else " " * 2
)
input_line = common.SCRUB_LEADING_WHITESPACE_RE.sub(indent, input_line)
output_lines.append(input_line)
>From 7edb9e28fd6e35332a06201730d0480c2b6129be Mon Sep 17 00:00:00 2001
From: Camsyn <camsyn at foxmail.com>
Date: Mon, 27 Oct 2025 20:18:59 +0800
Subject: [PATCH 3/5] Address the review 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 1ba716112f527..27053c9b3ba13 100644
--- a/llvm/utils/UpdateTestChecks/common.py
+++ b/llvm/utils/UpdateTestChecks/common.py
@@ -606,7 +606,7 @@ def invoke_tool(exe, cmd_args, ir, preprocess_cmd=None, verbose=False):
DEBUG_ONLY_ARG_RE = re.compile(r"-debug-only[= ]([^ ]+)")
IS_DEBUG_RECORD_RE = re.compile(r"^(\s+)#dbg_")
-IS_SWITCH_CASE_RE = re.compile(r"^\s+i\d{1,2} \d+, label %\w+")
+IS_SWITCH_CASE_RE = re.compile(r"^\s+i\d+ \d+, label %\w+")
SCRUB_LEADING_WHITESPACE_RE = re.compile(r"^(\s+)")
SCRUB_WHITESPACE_RE = re.compile(r"(?!^(| \w))[ \t]+", flags=re.M)
>From a9da88cd12495852f0f3a6883191b4c430234dc4 Mon Sep 17 00:00:00 2001
From: Camsyn <camsyn at foxmail.com>
Date: Mon, 27 Oct 2025 20:22:08 +0800
Subject: [PATCH 4/5] Update test after commit
---
.../Inputs/switch_case.ll.expected | 24 +++++++++----------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll.expected
index 154afb81a5f5c..43964df56d507 100644
--- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll.expected
+++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll.expected
@@ -22,10 +22,10 @@ define i8 @testi8(i8 %x) {
; CHECK-NEXT: ret i8 3
;
switch i8 %x, label %default [
- i8 0, label %case1
- i8 1, label %case2
- i8 2, label %case3
- i8 3, label %case3
+ i8 0, label %case1
+ i8 1, label %case2
+ i8 2, label %case3
+ i8 3, label %case3
]
default:
ret i8 0
@@ -56,10 +56,10 @@ define i32 @testi32(i32 %x) {
; CHECK-NEXT: ret i32 3
;
switch i32 %x, label %default [
- i32 0, label %case1
- i32 1, label %case2
- i32 2, label %case3
- i32 3, label %case3
+ i32 0, label %case1
+ i32 1, label %case2
+ i32 2, label %case3
+ i32 3, label %case3
]
default:
ret i32 0
@@ -90,10 +90,10 @@ define i128 @testi128(i128 %x) {
; CHECK-NEXT: ret i128 3
;
switch i128 %x, label %default [
- i128 0, label %case1
- i128 1, label %case2
- i128 2, label %case3
- i128 3, label %case3
+ i128 0, label %case1
+ i128 1, label %case2
+ i128 2, label %case3
+ i128 3, label %case3
]
default:
ret i128 0
>From d9b16c3cebed0d35f1ff5daccce02cfb8a39feab Mon Sep 17 00:00:00 2001
From: Camsyn <camsyn at foxmail.com>
Date: Mon, 27 Oct 2025 20:26:49 +0800
Subject: [PATCH 5/5] Gate the change with a new UTC version
---
.../update_test_checks/Inputs/switch_case.ll | 1 -
.../UpdateTestChecks/update_test_checks/switch_case.test | 2 +-
llvm/utils/UpdateTestChecks/common.py | 1 +
llvm/utils/update_test_checks.py | 5 ++++-
4 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll
index b1ed1a118b78f..a804225a380c8 100644
--- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll
+++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll
@@ -1,4 +1,3 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt < %s -S | FileCheck %s
; Test whether the UTC format the switch-cases correctly, which requires TWO extra spaces.
diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/switch_case.test b/llvm/test/tools/UpdateTestChecks/update_test_checks/switch_case.test
index 18b590cb9a39d..891dbe06bbf59 100644
--- a/llvm/test/tools/UpdateTestChecks/update_test_checks/switch_case.test
+++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/switch_case.test
@@ -1,3 +1,3 @@
## switch_case test checking that update_test_checks.py works correctly
-# RUN: cp -f %S/Inputs/switch_case.ll %t.ll && %update_test_checks %t.ll
+# RUN: cp -f %S/Inputs/switch_case.ll %t.ll && %update_test_checks %t.ll --version 7
# RUN: diff -u %t.ll %S/Inputs/switch_case.ll.expected
diff --git a/llvm/utils/UpdateTestChecks/common.py b/llvm/utils/UpdateTestChecks/common.py
index 27053c9b3ba13..8cd200c93a482 100644
--- a/llvm/utils/UpdateTestChecks/common.py
+++ b/llvm/utils/UpdateTestChecks/common.py
@@ -29,6 +29,7 @@
'none' and 'all'. 'smart' is the default.
5: Basic block labels are matched by FileCheck expressions
6: The semantics of TBAA checks has been incorporated in the check lines.
+7: Indent switch-cases correctly.
"""
DEFAULT_VERSION = 6
diff --git a/llvm/utils/update_test_checks.py b/llvm/utils/update_test_checks.py
index 37d046e53aa82..42227b20fca76 100755
--- a/llvm/utils/update_test_checks.py
+++ b/llvm/utils/update_test_checks.py
@@ -265,7 +265,10 @@ def update_test(ti: common.TestInfo):
" " * 4
if (
common.IS_DEBUG_RECORD_RE.match(input_line)
- or common.IS_SWITCH_CASE_RE.match(input_line)
+ or (
+ ti.args.version > 6
+ and common.IS_SWITCH_CASE_RE.match(input_line)
+ )
)
else " " * 2
)
More information about the llvm-commits
mailing list