mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-30 17:21:10 +00:00
[mlir][SparseTensor] Fix invalid IR in ForallRewriter
pattern (#74547)
The `ForallRewriter` pattern used to generate invalid IR: ``` mlir/test/Dialect/SparseTensor/GPU/gpu_combi.mlir:0:0: error: 'scf.for' op expects region #0 to have 0 or 1 blocks mlir/test/Dialect/SparseTensor/GPU/gpu_combi.mlir:0:0: note: see current operation: "scf.for"(%8, %2, %9) ({ ^bb0(%arg5: index): // ... "scf.yield"() : () -> () ^bb1(%10: index): // no predecessors "scf.yield"() : () -> () }) : (index, index, index) -> () ``` This commit fixes tests such as `mlir/test/Dialect/SparseTensor/GPU/gpu_combi.mlir` when verifying the IR after each pattern application (#74270).
This commit is contained in:
parent
851f85fffb
commit
861600f175
@ -309,6 +309,10 @@ static void genGPUCode(PatternRewriter &rewriter, gpu::GPUFuncOp gpuFunc,
|
||||
// }
|
||||
Value upper = irMap.lookup(forallOp.getUpperBound()[0]);
|
||||
scf::ForOp forOp = rewriter.create<scf::ForOp>(loc, row, upper, inc);
|
||||
// The scf.for builder creates an empty block. scf.for does not allow multiple
|
||||
// blocks in its region, so delete the block before `cloneRegionBefore` adds
|
||||
// an additional block.
|
||||
rewriter.eraseBlock(forOp.getBody());
|
||||
rewriter.cloneRegionBefore(forallOp.getRegion(), forOp.getRegion(),
|
||||
forOp.getRegion().begin(), irMap);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user