[PATCH] D70258: [OpenMP][IR-Builder] Introduce the finalization stack

Alexey Bataev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 15 07:33:47 PST 2019


ABataev added inline comments.


================
Comment at: clang/lib/CodeGen/CGOpenMPRuntime.cpp:1499-1509
+    OMPBuilder->pushFinalizationCB(std::move(FI));
+  }
+
   CGOpenMPOutlinedRegionInfo CGInfo(*CS, ThreadIDVar, CodeGen, InnermostKind,
                                     HasCancel, OutlinedHelperName);
   CodeGenFunction::CGCapturedStmtRAII CapInfoRAII(CGF, &CGInfo);
+  llvm::Function *Fn = CGF.GenerateOpenMPCapturedStmtFunction(*CS);
----------------
jdoerfert wrote:
> ABataev wrote:
> > Again, need RAII
> There is no appropriate scope to put it in.
You can check for `OMPBuilder` in the constructor/destructor.


================
Comment at: llvm/include/llvm/Frontend/OpenMPIRBuilder.h:69-71
+  void pushFinalizationCB(FinalizationInfo &&FI) {
+    FinalizationStack.emplace_back(std::move(FI));
+  }
----------------
jdoerfert wrote:
> ABataev wrote:
> > Maybe `push...` for const reference and `emplace...` for variadic template (just like in standard library)?
> That would defeat the purpose of using move semantic. I can make it a push but we will then have to copy and not move.
You can use it in `emplace` version while `push...` function will rely on copy semantics.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D70258/new/

https://reviews.llvm.org/D70258





More information about the llvm-commits mailing list