Skip to content

Commit 193623e

Browse files
committed
Fix skatrak's comments
1 parent 5f40731 commit 193623e

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def PrivateClauseOp : OpenMP_Op<"private", [IsolatedFromAbove, RecipeInterface]>
149149
/// Returns true if the init region might read from the mold argument
150150
bool initReadsFromMold() {
151151
BlockArgument moldArg = getInitMoldArg();
152-
return moldArg ? !moldArg.use_empty() : false;
152+
return moldArg && !moldArg.use_empty();
153153
}
154154

155155
/// Returns true if any region of this privatizer might read from the mold

mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1360,9 +1360,8 @@ static llvm::Expected<llvm::Value *> initPrivateVar(
13601360
llvm::Value *llvmPrivateVar, llvm::BasicBlock *privInitBlock,
13611361
llvm::DenseMap<Value, Value> *mappedPrivateVars = nullptr) {
13621362
Region &initRegion = privDecl.getInitRegion();
1363-
if (initRegion.empty()) {
1363+
if (initRegion.empty())
13641364
return llvmPrivateVar;
1365-
}
13661365

13671366
// map initialization region block arguments
13681367
llvm::Value *nonPrivateVar = findAssociatedValue(
@@ -1412,8 +1411,8 @@ initPrivateVars(llvm::IRBuilderBase &builder,
14121411
builder, moduleTranslation, privDecl, mlirPrivVar, blockArg,
14131412
llvmPrivateVar, privInitBlock, mappedPrivateVars);
14141413

1415-
if (auto err = privVarOrErr.takeError())
1416-
return err;
1414+
if (!privVarOrErr)
1415+
return privVarOrErr.takeError();
14171416

14181417
llvmPrivateVar = privVarOrErr.get();
14191418
moduleTranslation.mapValue(blockArg, llvmPrivateVar);
@@ -2017,13 +2016,15 @@ convertOmpTaskOp(omp::TaskOp taskOp, llvm::IRBuilderBase &builder,
20172016
builder.restoreIP(codegenIP);
20182017

20192018
llvm::BasicBlock *privInitBlock = nullptr;
2020-
for (auto [blockArg, privDecl, mlirPrivVar] :
2021-
llvm::zip_equal(privateBlockArgs, privateDecls, mlirPrivateVars)) {
2019+
llvmPrivateVars.resize(privateBlockArgs.size());
2020+
for (auto [i, zip] : llvm::enumerate(llvm::zip_equal(
2021+
privateBlockArgs, privateDecls, mlirPrivateVars))) {
2022+
auto [blockArg, privDecl, mlirPrivVar] = zip;
2023+
// This is handled before the task executes
20222024
if (privDecl.readsFromMold())
2023-
// This is handled before the task executes
20242025
continue;
20252026

2026-
auto codegenInsertionPt = builder.saveIP();
2027+
llvm::IRBuilderBase::InsertPointGuard guard(builder);
20272028
llvm::Type *llvmAllocType =
20282029
moduleTranslation.convertType(privDecl.getType());
20292030
builder.SetInsertPoint(allocaIP.getBlock()->getTerminator());
@@ -2036,18 +2037,25 @@ convertOmpTaskOp(omp::TaskOp taskOp, llvm::IRBuilderBase &builder,
20362037
if (auto err = privateVarOrError.takeError())
20372038
return err;
20382039
moduleTranslation.mapValue(blockArg, privateVarOrError.get());
2039-
builder.restoreIP(codegenInsertionPt);
2040+
llvmPrivateVars[i] = privateVarOrError.get();
2041+
}
2042+
2043+
taskStructMgr.createGEPsToPrivateVars();
2044+
for (auto [i, llvmPrivVar] :
2045+
llvm::enumerate(taskStructMgr.getLLVMPrivateVarGEPs())) {
2046+
if (!llvmPrivVar) {
2047+
assert(llvmPrivateVars[i] && "This is added in the loop above");
2048+
continue;
2049+
}
2050+
llvmPrivateVars[i] = llvmPrivVar;
20402051
}
20412052

20422053
// Find and map the addresses of each variable within the task context
20432054
// structure
2044-
taskStructMgr.createGEPsToPrivateVars();
2045-
llvm::copy(taskStructMgr.getLLVMPrivateVarGEPs(),
2046-
std::back_inserter(llvmPrivateVars));
2047-
for (auto [blockArg, llvmPrivateVar] :
2048-
llvm::zip_equal(privateBlockArgs, llvmPrivateVars)) {
2049-
if (!llvmPrivateVar)
2050-
// This was handled above
2055+
for (auto [blockArg, llvmPrivateVar, privateDecl] :
2056+
llvm::zip_equal(privateBlockArgs, llvmPrivateVars, privateDecls)) {
2057+
// This was handled above.
2058+
if (!privateDecl.readsFromMold())
20512059
continue;
20522060
// Fix broken pass-by-value case for Fortran character boxes
20532061
if (!mlir::isa<LLVM::LLVMPointerType>(blockArg.getType())) {

0 commit comments

Comments
 (0)