[Mlir-commits] [mlir] [MLIR][LLVMIR] Fix inline byval alloca hoisting out of allocation scope (PR #185399)
Christian Ulmann
llvmlistbot at llvm.org
Mon Mar 9 05:40:26 PDT 2026
================
@@ -570,6 +570,33 @@ llvm.func @test_byval_global() {
// -----
+// Check that inlining does not hoist byval allocas out of automatic allocation
+// scopes, such as parallel forall regions. Each parallel iteration must have
+// its own private copy of the byval argument.
+
+llvm.func @byval_in_parallel(%ptr : !llvm.ptr { llvm.byval = f32 }) {
+ llvm.return
+}
+
+// CHECK-LABEL: llvm.func @test_byval_in_parallel_region
+// CHECK-SAME: %[[PTR:[a-zA-Z0-9_]+]]: !llvm.ptr
+llvm.func @test_byval_in_parallel_region(%ptr : !llvm.ptr) {
+ %c0 = arith.constant 0 : index
+ %c4 = arith.constant 4 : index
+ %c1 = arith.constant 1 : index
+ // Verify the alloca is not hoisted out of the parallel region.
+ // CHECK-NOT: llvm.alloca
+ // CHECK: scf.forall
+ scf.forall (%i) = (%c0) to (%c4) step (%c1) {
----------------
Dinistro wrote:
Nit: I suggest to use `test.alloca_scope_region` to decouple this from the SCF dialect.
https://github.com/llvm/llvm-project/pull/185399
More information about the Mlir-commits
mailing list