[llvm] [IndirectBrExpand] Use UTC for basic.ll (PR #227467)
Aiden Grossman via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 29 13:57:50 PDT 2026
https://github.com/boomanaiden154 created https://github.com/llvm/llvm-project/pull/227467
To make it easier to modify in the future.
>From 99b0ac4b0fbb07c1a1e514c1611a353928f25998 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Tue, 29 Sep 2026 20:57:36 +0000
Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20initia?=
=?UTF-8?q?l=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.7
---
.../test/Transforms/IndirectBrExpand/basic.ll | 63 ++++++++++++-------
1 file changed, 42 insertions(+), 21 deletions(-)
diff --git a/llvm/test/Transforms/IndirectBrExpand/basic.ll b/llvm/test/Transforms/IndirectBrExpand/basic.ll
index c2c73100543f1..0950a97f57d23 100644
--- a/llvm/test/Transforms/IndirectBrExpand/basic.ll
+++ b/llvm/test/Transforms/IndirectBrExpand/basic.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals all --version 6
; RUN: opt < %s -indirectbr-expand -S | FileCheck %s
; RUN: opt < %s -passes=indirectbr-expand -S | FileCheck %s
;
@@ -6,26 +7,53 @@
target triple = "x86_64-unknown-linux-gnu"
@test1.targets = constant [4 x ptr] [ptr blockaddress(@test1, %bb0),
- ptr blockaddress(@test1, %bb1),
- ptr blockaddress(@test1, %bb2),
- ptr blockaddress(@test1, %bb3)]
-; CHECK-LABEL: @test1.targets = constant [4 x ptr]
-; CHECK: [ptr inttoptr (i64 1 to ptr),
-; CHECK: ptr inttoptr (i64 2 to ptr),
-; CHECK: ptr inttoptr (i64 3 to ptr),
-; CHECK: ptr blockaddress(@test1, %bb3)]
+ ptr blockaddress(@test1, %bb1),
+ ptr blockaddress(@test1, %bb2),
+ ptr blockaddress(@test1, %bb3)]
+;.
+; CHECK: @test1.targets = constant [4 x ptr] [ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 2 to ptr), ptr inttoptr (i64 3 to ptr), ptr blockaddress(@test1, %bb3)]
+;.
define void @test1(ptr readonly %p, ptr %sink) #0 {
; CHECK-LABEL: define void @test1(
+; CHECK-SAME: ptr readonly [[P:%.*]], ptr [[SINK:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: [[I0:%.*]] = load i64, ptr [[P]], align 8
+; CHECK-NEXT: [[TARGET_I0:%.*]] = getelementptr [4 x ptr], ptr @test1.targets, i64 0, i64 [[I0]]
+; CHECK-NEXT: [[TARGET0:%.*]] = load ptr, ptr [[TARGET_I0]], align 8
+; CHECK-NEXT: [[TARGET0_SWITCH_CAST:%.*]] = ptrtoint ptr [[TARGET0]] to i64
+; CHECK-NEXT: br label %[[SWITCH_BB:.*]]
+; CHECK: [[BB0:.*]]:
+; CHECK-NEXT: store volatile i64 0, ptr [[SINK]], align 8
+; CHECK-NEXT: br label %[[LATCH:.*]]
+; CHECK: [[BB1:.*]]:
+; CHECK-NEXT: store volatile i64 1, ptr [[SINK]], align 8
+; CHECK-NEXT: br label %[[LATCH]]
+; CHECK: [[BB2:.*]]:
+; CHECK-NEXT: store volatile i64 2, ptr [[SINK]], align 8
+; CHECK-NEXT: br label %[[LATCH]]
+; CHECK: [[BB3:.*:]]
+; CHECK-NEXT: store volatile i64 3, ptr [[SINK]], align 8
+; CHECK-NEXT: br label %[[LATCH]]
+; CHECK: [[LATCH]]:
+; CHECK-NEXT: [[I_NEXT:%.*]] = load i64, ptr [[P]], align 8
+; CHECK-NEXT: [[TARGET_I_NEXT:%.*]] = getelementptr [4 x ptr], ptr @test1.targets, i64 0, i64 [[I_NEXT]]
+; CHECK-NEXT: [[TARGET_NEXT:%.*]] = load ptr, ptr [[TARGET_I_NEXT]], align 8
+; CHECK-NEXT: [[TARGET_NEXT_SWITCH_CAST:%.*]] = ptrtoint ptr [[TARGET_NEXT]] to i64
+; CHECK-NEXT: br label %[[SWITCH_BB]]
+; CHECK: [[SWITCH_BB]]:
+; CHECK-NEXT: [[SWITCH_VALUE_PHI:%.*]] = phi i64 [ [[TARGET0_SWITCH_CAST]], %[[ENTRY]] ], [ [[TARGET_NEXT_SWITCH_CAST]], %[[LATCH]] ]
+; CHECK-NEXT: switch i64 [[SWITCH_VALUE_PHI]], label %[[BB0]] [
+; CHECK-NEXT: i64 2, label %[[BB1]]
+; CHECK-NEXT: i64 3, label %[[BB2]]
+; CHECK-NEXT: ]
+;
entry:
%i0 = load i64, ptr %p
%target.i0 = getelementptr [4 x ptr], ptr @test1.targets, i64 0, i64 %i0
%target0 = load ptr, ptr %target.i0
; Only a subset of blocks are viable successors here.
indirectbr ptr %target0, [label %bb0, label %bb1]
-; CHECK-NOT: indirectbr
-; CHECK: %[[ENTRY_V:.*]] = ptrtoint ptr %{{.*}} to i64
-; CHECK-NEXT: br label %[[SWITCH_BB:.*]]
bb0:
store volatile i64 0, ptr %sink
@@ -49,16 +77,9 @@ latch:
%target.next = load ptr, ptr %target.i.next
; A different subset of blocks are viable successors here.
indirectbr ptr %target.next, [label %bb1, label %bb2]
-; CHECK-NOT: indirectbr
-; CHECK: %[[LATCH_V:.*]] = ptrtoint ptr %{{.*}} to i64
-; CHECK-NEXT: br label %[[SWITCH_BB]]
-;
-; CHECK: [[SWITCH_BB]]:
-; CHECK-NEXT: %[[V:.*]] = phi i64 [ %[[ENTRY_V]], %entry ], [ %[[LATCH_V]], %latch ]
-; CHECK-NEXT: switch i64 %[[V]], label %bb0 [
-; CHECK-NEXT: i64 2, label %bb1
-; CHECK-NEXT: i64 3, label %bb2
-; CHECK-NEXT: ]
}
attributes #0 = { "target-features"="+retpoline" }
+;.
+; CHECK: attributes #[[ATTR0]] = { "target-features"="+retpoline" }
+;.
More information about the llvm-commits
mailing list