diff --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp --- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp +++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp @@ -399,13 +399,13 @@ llvm::Instruction *codeGenIPBBTI = codeGenIPBB->getTerminator(); builder.SetInsertPoint(codeGenIPBB); - - for (auto ®ion : opInst.getRegions()) { - for (auto &bb : region) { - auto *llvmBB = llvm::BasicBlock::Create( - llvmContext, "omp.par.region", codeGenIP.getBlock()->getParent()); - blockMapping[&bb] = llvmBB; - } + // ParallelOp has only `1` region associated with it. + auto ®ion = cast(opInst).getRegion(); + for (auto &bb : region) { + auto *llvmBB = llvm::BasicBlock::Create( + llvmContext, "omp.par.region", codeGenIP.getBlock()->getParent()); + blockMapping[&bb] = llvmBB; + } // Then, convert blocks one by one in topological order to ensure // defs are converted before uses. @@ -433,7 +433,6 @@ // Finally, after all blocks have been traversed and values mapped, // connect the PHI nodes to the results of preceding blocks. connectPHINodes(region, valueMapping, blockMapping); - } }; // TODO: Perform appropriate actions according to the data-sharing