================
@@ -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()) {
+    OpenMPIRBuilder::InsertPointTy OldIP = Builder.saveIP();
+    Builder.SetInsertPoint(
+        &OldIP.getBlock()->getParent()->getEntryBlock().back());
+
+    Type *DepArrayTy = ArrayType::get(DependInfo, Dependencies.size());
+    DepArray = Builder.CreateAlloca(DepArrayTy, nullptr, ".dep.arr.addr");
+
+    unsigned P = 0;
+    for (const OpenMPIRBuilder::DependData &Dep : Dependencies) {
----------------
ergawy wrote:

Using `llvm::enumerate` will save us having to declare and increment the idx 
var.
```suggestion
    for (const auto&[DepIdx, Dep] : enumerate(Dependencies)) {
```

https://github.com/llvm/llvm-project/pull/93977
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to