[llvm] [AMDGPU] Look through bitcast when skipping musttail returns in UnifyDivergentExitNodes (PR #201021)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 2 04:15:45 PDT 2026
================
@@ -102,3 +103,29 @@ bb.0:
bb.1:
ret i32 %load
}
+
+define ptr @musttail_call_with_bitcast(ptr %p) {
+; CHECK-LABEL: define ptr @musttail_call_with_bitcast(
+; CHECK-SAME: ptr [[P:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[LOAD:%.*]] = load i1, ptr [[P]], align 1
+; CHECK-NEXT: br i1 [[LOAD]], label %[[BB_0:.*]], label %[[BB_1:.*]]
+; CHECK: [[BB_0]]:
+; CHECK-NEXT: [[RET:%.*]] = musttail call ptr @bar_ptr(ptr [[P]])
+; CHECK-NEXT: [[RETC:%.*]] = bitcast ptr [[RET]] to ptr
+; CHECK-NEXT: ret ptr [[RETC]]
+; CHECK: [[BB_1]]:
+; CHECK-NEXT: ret ptr null
+;
+entry:
+ %load = load i1, ptr %p, align 1
+ br i1 %load, label %bb.0, label %bb.1
+
+bb.0:
+ %ret = musttail call ptr @bar_ptr(ptr %p)
+ %retc = bitcast ptr %ret to ptr
----------------
arsenm wrote:
I'd prefer examples that aren't true no-ops, like bitcast from int to float
https://github.com/llvm/llvm-project/pull/201021
More information about the llvm-commits
mailing list