[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
================
@@ -603,10 +603,26 @@ static Value handleByValArgumentInit(OpBuilder &builder, Location loc,
// Allocate the new value on the stack.
Value allocaOp;
{
- // Since this is a static alloca, we can put it directly in the entry block,
- // so they can be absorbed into the prologue/epilogue at code generation.
+ // Walk up from the call site to find the innermost AutomaticAllocationScope
+ // (e.g. an llvm.func or scf.forall). Placing the alloca at the entry block
+ // of that scope keeps it inside parallel regions rather than hoisting it
+ // out, while still landing at the function entry block for the common
+ // non-parallel case.
OpBuilder::InsertionGuard insertionGuard(builder);
- Block *entryBlock = &(*argument.getParentRegion()->begin());
+ Block *entryBlock = nullptr;
+ Block *cursor = builder.getInsertionBlock();
+ while (cursor) {
----------------
Dinistro wrote:
Nit: `getParentWithTrait` might make this easier.
https://github.com/llvm/llvm-project/pull/185399
More information about the Mlir-commits
mailing list