[llvm] [CodeGenPrepare] Handle address sinking obtained from invoke (PR #143566)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 10 18:16:06 PDT 2025


================
@@ -42,3 +42,38 @@ bb3:
 bb7:
   ret void
 }
+
+; Test a scenario when the address is the last instruction in the basic block.
+
+define void @adress_terminator() personality ptr null {
+; CHECK-LABEL: define void @adress_terminator() personality ptr null {
+; CHECK-NEXT:  [[ENTRY:.*:]]
+; CHECK-NEXT:    [[PTR:%.*]] = invoke ptr null(i64 0)
+; CHECK-NEXT:            to label %[[BODY_1:.*]] unwind label %[[EHCLEANUP:.*]]
+; CHECK:       [[EHCLEANUP]]:
+; CHECK-NEXT:    [[TMP0:%.*]] = cleanuppad within none []
+; CHECK-NEXT:    cleanupret from [[TMP0]] unwind to caller
+; CHECK:       [[BODY_1]]:
+; CHECK-NEXT:    [[TMP1:%.*]] = bitcast ptr [[PTR]] to ptr
+; CHECK-NEXT:    store <4 x i32> zeroinitializer, ptr [[TMP1]], align 4
+; CHECK-NEXT:    [[V0:%.*]] = load <4 x i32>, ptr [[PTR]], align 4
+; CHECK-NEXT:    store <4 x i32> zeroinitializer, ptr [[PTR]], align 4
+; CHECK-NEXT:    ret void
+;
+entry:
+  %ptr = invoke ptr null(i64 0) to label %body.1 unwind label %ehcleanup
----------------
arsenm wrote:

Use a real call target instead of an undefined call to null 

https://github.com/llvm/llvm-project/pull/143566


More information about the llvm-commits mailing list