[PATCH] D70258: [OpenMP][IR-Builder] Introduce the finalization stack
Alexey Bataev via Phabricator via cfe-commits
cfe-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 cfe-commits
mailing list