[clang] [llvm] [mlir] [OMPIRBuilder] - Handle dependencies in `createTarget` (PR #93977)
Kareem Ergawy via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 5 02:13:22 PDT 2024
================
@@ -1698,6 +1701,64 @@ void OpenMPIRBuilder::createTaskyield(const LocationDescription &Loc) {
emitTaskyieldImpl(Loc);
}
+// Processes the dependencies in Dependencies and does the following
+// - Allocates space on the stack of an array of DependInfo objects
+// - Populates each DependInfo object with relevant information of
+// the corresponding dependence.
+// - All code is inserted in the entry block of the current function.
+static Value *
+emitDepArray(OpenMPIRBuilder &OMPBuilder,
+ SmallVector<OpenMPIRBuilder::DependData> &Dependencies) {
+ // Early return if we have no dependencies to process
+ if (!Dependencies.size())
+ return nullptr;
+
+ IRBuilderBase &Builder = OMPBuilder.Builder;
+ Type *DependInfo = OMPBuilder.DependInfo;
+ Module &M = OMPBuilder.M;
+
+ Value *DepArray = nullptr;
+ if (Dependencies.size()) {
----------------
ergawy wrote:
You already checked that `Dependencies` is not empty above.
```suggestion
```
https://github.com/llvm/llvm-project/pull/93977
More information about the cfe-commits
mailing list