Skip to content

Commit 459d2d5

Browse files
committed
Fix skatrak's comments
1 parent bb0e213 commit 459d2d5

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
@@ -1347,9 +1347,8 @@ static llvm::Expected<llvm::Value *> initPrivateVar(
13471347
llvm::Value *llvmPrivateVar, llvm::BasicBlock *privInitBlock,
13481348
llvm::DenseMap<Value, Value> *mappedPrivateVars = nullptr) {
13491349
Region &initRegion = privDecl.getInitRegion();
1350-
if (initRegion.empty()) {
1350+
if (initRegion.empty())
13511351
return llvmPrivateVar;
1352-
}
13531352

13541353
// map initialization region block arguments
13551354
llvm::Value *nonPrivateVar = findAssociatedValue(
@@ -1399,8 +1398,8 @@ initPrivateVars(llvm::IRBuilderBase &builder,
13991398
builder, moduleTranslation, privDecl, mlirPrivVar, blockArg,
14001399
llvmPrivateVar, privInitBlock, mappedPrivateVars);
14011400

1402-
if (auto err = privVarOrErr.takeError())
1403-
return err;
1401+
if (!privVarOrErr)
1402+
return privVarOrErr.takeError();
14041403

14051404
llvmPrivateVar = privVarOrErr.get();
14061405
moduleTranslation.mapValue(blockArg, llvmPrivateVar);
@@ -2005,13 +2004,15 @@ convertOmpTaskOp(omp::TaskOp taskOp, llvm::IRBuilderBase &builder,
20052004
builder.restoreIP(codegenIP);
20062005

20072006
llvm::BasicBlock *privInitBlock = nullptr;
2008-
for (auto [blockArg, privDecl, mlirPrivVar] :
2009-
llvm::zip_equal(privateBlockArgs, privateDecls, mlirPrivateVars)) {
2007+
llvmPrivateVars.resize(privateBlockArgs.size());
2008+
for (auto [i, zip] : llvm::enumerate(llvm::zip_equal(
2009+
privateBlockArgs, privateDecls, mlirPrivateVars))) {
2010+
auto [blockArg, privDecl, mlirPrivVar] = zip;
2011+
// This is handled before the task executes
20102012
if (privDecl.readsFromMold())
2011-
// This is handled before the task executes
20122013
continue;
20132014

2014-
auto codegenInsertionPt = builder.saveIP();
2015+
llvm::IRBuilderBase::InsertPointGuard guard(builder);
20152016
llvm::Type *llvmAllocType =
20162017
moduleTranslation.convertType(privDecl.getType());
20172018
builder.SetInsertPoint(allocaIP.getBlock()->getTerminator());
@@ -2024,18 +2025,25 @@ convertOmpTaskOp(omp::TaskOp taskOp, llvm::IRBuilderBase &builder,
20242025
if (auto err = privateVarOrError.takeError())
20252026
return err;
20262027
moduleTranslation.mapValue(blockArg, privateVarOrError.get());
2027-
builder.restoreIP(codegenInsertionPt);
2028+
llvmPrivateVars[i] = privateVarOrError.get();
2029+
}
2030+
2031+
taskStructMgr.createGEPsToPrivateVars();
2032+
for (auto [i, llvmPrivVar] :
2033+
llvm::enumerate(taskStructMgr.getLLVMPrivateVarGEPs())) {
2034+
if (!llvmPrivVar) {
2035+
assert(llvmPrivateVars[i] && "This is added in the loop above");
2036+
continue;
2037+
}
2038+
llvmPrivateVars[i] = llvmPrivVar;
20282039
}
20292040

20302041
// Find and map the addresses of each variable within the task context
20312042
// structure
2032-
taskStructMgr.createGEPsToPrivateVars();
2033-
llvm::copy(taskStructMgr.getLLVMPrivateVarGEPs(),
2034-
std::back_inserter(llvmPrivateVars));
2035-
for (auto [blockArg, llvmPrivateVar] :
2036-
llvm::zip_equal(privateBlockArgs, llvmPrivateVars)) {
2037-
if (!llvmPrivateVar)
2038-
// This was handled above
2043+
for (auto [blockArg, llvmPrivateVar, privateDecl] :
2044+
llvm::zip_equal(privateBlockArgs, llvmPrivateVars, privateDecls)) {
2045+
// This was handled above.
2046+
if (!privateDecl.readsFromMold())
20392047
continue;
20402048
// Fix broken pass-by-value case for Fortran character boxes
20412049
if (!mlir::isa<LLVM::LLVMPointerType>(blockArg.getType())) {

0 commit comments

Comments
 (0)