[llvm] 2934662 - [SimplifyCFG] Precommit tests for PR161807 (NFC)
Antonio Frighetto via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 27 00:53:03 PDT 2025
Author: Antonio Frighetto
Date: 2025-10-27T08:51:20+01:00
New Revision: 29346628e90be9e196c7ff2e20c103432c526f7c
URL: https://github.com/llvm/llvm-project/commit/29346628e90be9e196c7ff2e20c103432c526f7c
DIFF: https://github.com/llvm/llvm-project/commit/29346628e90be9e196c7ff2e20c103432c526f7c.diff
LOG: [SimplifyCFG] Precommit tests for PR161807 (NFC)
Added:
Modified:
llvm/test/Transforms/SimplifyCFG/X86/switch-of-powers-of-two.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/SimplifyCFG/X86/switch-of-powers-of-two.ll b/llvm/test/Transforms/SimplifyCFG/X86/switch-of-powers-of-two.ll
index 49eb1991ccba2..216ea81400e22 100644
--- a/llvm/test/Transforms/SimplifyCFG/X86/switch-of-powers-of-two.ll
+++ b/llvm/test/Transforms/SimplifyCFG/X86/switch-of-powers-of-two.ll
@@ -34,3 +34,103 @@ return:
%phi = phi i32 [ 3, %bb1 ], [ 2, %bb2 ], [ 1, %bb3 ], [ 0, %bb4 ], [ 42, %bb5 ]
ret i32 %phi
}
+
+define i32 @switch_of_powers_two_default_reachable(i32 %arg) {
+; CHECK-LABEL: define i32 @switch_of_powers_two_default_reachable(
+; CHECK-SAME: i32 [[ARG:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: switch i32 [[ARG]], label %[[RETURN:.*]] [
+; CHECK-NEXT: i32 1, label %[[BB1:.*]]
+; CHECK-NEXT: i32 8, label %[[BB2:.*]]
+; CHECK-NEXT: i32 16, label %[[BB3:.*]]
+; CHECK-NEXT: i32 32, label %[[BB4:.*]]
+; CHECK-NEXT: i32 64, label %[[BB5:.*]]
+; CHECK-NEXT: ]
+; CHECK: [[BB1]]:
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[BB2]]:
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[BB3]]:
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[BB4]]:
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[BB5]]:
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[RETURN]]:
+; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ 3, %[[BB1]] ], [ 2, %[[BB2]] ], [ 1, %[[BB3]] ], [ 0, %[[BB4]] ], [ 42, %[[BB5]] ], [ 5, %[[ENTRY]] ]
+; CHECK-NEXT: ret i32 [[PHI]]
+;
+entry:
+ switch i32 %arg, label %default_case [
+ i32 1, label %bb1
+ i32 8, label %bb2
+ i32 16, label %bb3
+ i32 32, label %bb4
+ i32 64, label %bb5
+ ]
+
+default_case: br label %return
+bb1: br label %return
+bb2: br label %return
+bb3: br label %return
+bb4: br label %return
+bb5: br label %return
+
+return:
+ %phi = phi i32 [ 3, %bb1 ], [ 2, %bb2 ], [ 1, %bb3 ], [ 0, %bb4 ], [ 42, %bb5 ], [ 5, %default_case ]
+ ret i32 %phi
+}
+
+define i32 @switch_of_powers_two_default_reachable_multipreds(i32 %arg, i1 %cond) {
+; CHECK-LABEL: define i32 @switch_of_powers_two_default_reachable_multipreds(
+; CHECK-SAME: i32 [[ARG:%.*]], i1 [[COND:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: br i1 [[COND]], label %[[SWITCH:.*]], label %[[RETURN:.*]]
+; CHECK: [[SWITCH]]:
+; CHECK-NEXT: switch i32 [[ARG]], label %[[RETURN]] [
+; CHECK-NEXT: i32 1, label %[[BB1:.*]]
+; CHECK-NEXT: i32 8, label %[[BB2:.*]]
+; CHECK-NEXT: i32 16, label %[[BB3:.*]]
+; CHECK-NEXT: i32 32, label %[[BB4:.*]]
+; CHECK-NEXT: i32 64, label %[[BB5:.*]]
+; CHECK-NEXT: ]
+; CHECK: [[BB1]]:
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[BB2]]:
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[BB3]]:
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[BB4]]:
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[BB5]]:
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[RETURN]]:
+; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ 3, %[[BB1]] ], [ 2, %[[BB2]] ], [ 1, %[[BB3]] ], [ 0, %[[BB4]] ], [ 42, %[[BB5]] ], [ 0, %[[ENTRY]] ], [ [[ARG]], %[[SWITCH]] ]
+; CHECK-NEXT: ret i32 [[PHI]]
+;
+entry:
+ br i1 %cond, label %switch, label %default_case
+
+switch:
+ switch i32 %arg, label %default_case [
+ i32 1, label %bb1
+ i32 8, label %bb2
+ i32 16, label %bb3
+ i32 32, label %bb4
+ i32 64, label %bb5
+ ]
+
+default_case:
+ %pn = phi i32 [ 0, %entry ], [ %arg, %switch ]
+ br label %return
+
+bb1: br label %return
+bb2: br label %return
+bb3: br label %return
+bb4: br label %return
+bb5: br label %return
+
+return:
+ %phi = phi i32 [ 3, %bb1 ], [ 2, %bb2 ], [ 1, %bb3 ], [ 0, %bb4 ], [ 42, %bb5 ], [ %pn, %default_case ]
+ ret i32 %phi
+}
More information about the llvm-commits
mailing list