Skip to content

Commit f3df411

Browse files
Roll back a now unnecessary change in mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
1 parent 65397b6 commit f3df411

File tree

1 file changed

+23
-31
lines changed

1 file changed

+23
-31
lines changed

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

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -685,36 +685,7 @@ convertOmpSingle(omp::SingleOp &singleOp, llvm::IRBuilderBase &builder,
685685
ompLoc, bodyCB, finiCB, singleOp.getNowait(), llvmCPVars, llvmCPFuncs));
686686
return bodyGenStatus;
687687
}
688-
template <typename T>
689-
static void buildDependData(T taskOrTargetop,
690-
SmallVector<llvm::OpenMPIRBuilder::DependData> &dds,
691-
LLVM::ModuleTranslation &moduleTranslation) {
692-
// std::optional<ArrayAttr> depends,
693-
// OperandRange &dependVars,
694-
if (taskOrTargetop.getDependVars().empty())
695-
return;
696-
std::optional<ArrayAttr> depends = taskOrTargetop.getDepends();
697-
const OperandRange &dependVars = taskOrTargetop.getDependVars();
698-
for (auto dep : llvm::zip(dependVars, depends->getValue())) {
699-
llvm::omp::RTLDependenceKindTy type;
700-
switch (
701-
cast<mlir::omp::ClauseTaskDependAttr>(std::get<1>(dep)).getValue()) {
702-
case mlir::omp::ClauseTaskDepend::taskdependin:
703-
type = llvm::omp::RTLDependenceKindTy::DepIn;
704-
break;
705-
// The OpenMP runtime requires that the codegen for 'depend' clause for
706-
// 'out' dependency kind must be the same as codegen for 'depend' clause
707-
// with 'inout' dependency.
708-
case mlir::omp::ClauseTaskDepend::taskdependout:
709-
case mlir::omp::ClauseTaskDepend::taskdependinout:
710-
type = llvm::omp::RTLDependenceKindTy::DepInOut;
711-
break;
712-
};
713-
llvm::Value *depVal = moduleTranslation.lookupValue(std::get<0>(dep));
714-
llvm::OpenMPIRBuilder::DependData dd(type, depVal->getType(), depVal);
715-
dds.emplace_back(dd);
716-
}
717-
}
688+
718689
// Convert an OpenMP Teams construct to LLVM IR using OpenMPIRBuilder
719690
static LogicalResult
720691
convertOmpTeams(omp::TeamsOp op, llvm::IRBuilderBase &builder,
@@ -777,7 +748,28 @@ convertOmpTaskOp(omp::TaskOp taskOp, llvm::IRBuilderBase &builder,
777748
};
778749

779750
SmallVector<llvm::OpenMPIRBuilder::DependData> dds;
780-
buildDependData(taskOp, dds, moduleTranslation);
751+
if (!taskOp.getDependVars().empty() && taskOp.getDepends()) {
752+
for (auto dep :
753+
llvm::zip(taskOp.getDependVars(), taskOp.getDepends()->getValue())) {
754+
llvm::omp::RTLDependenceKindTy type;
755+
switch (
756+
cast<mlir::omp::ClauseTaskDependAttr>(std::get<1>(dep)).getValue()) {
757+
case mlir::omp::ClauseTaskDepend::taskdependin:
758+
type = llvm::omp::RTLDependenceKindTy::DepIn;
759+
break;
760+
// The OpenMP runtime requires that the codegen for 'depend' clause for
761+
// 'out' dependency kind must be the same as codegen for 'depend' clause
762+
// with 'inout' dependency.
763+
case mlir::omp::ClauseTaskDepend::taskdependout:
764+
case mlir::omp::ClauseTaskDepend::taskdependinout:
765+
type = llvm::omp::RTLDependenceKindTy::DepInOut;
766+
break;
767+
};
768+
llvm::Value *depVal = moduleTranslation.lookupValue(std::get<0>(dep));
769+
llvm::OpenMPIRBuilder::DependData dd(type, depVal->getType(), depVal);
770+
dds.emplace_back(dd);
771+
}
772+
}
781773

782774
llvm::OpenMPIRBuilder::InsertPointTy allocaIP =
783775
findAllocaInsertPoint(builder, moduleTranslation);

0 commit comments

Comments
 (0)