sfantao added a comment.
Hi Alexey,
================
Comment at: lib/CodeGen/CGOpenMPRuntime.cpp:3799-3806
@@ -3780,4 +3798,10 @@
OffloadEntriesInfoManager.registerTargetRegionEntryInfo(
DeviceID, FileID, ParentName, Line, OutlinedFn, OutlinedFnID);
}
+/// \brief Emit the num_teams clause of an enclosed teams directive at the
+/// target region scope. If there is no teams directive associated with the
+/// target directive, or if there is no num_teams clause associated with the
+/// enclosed teams directive, return nullptr.
+static llvm::Value *
+emitNumTeamsClauseForTargetDirective(CodeGenFunction &CGF,
----------------
ABataev wrote:
> I don't understand why global var is not captured in target region. If it is
> not implemented yet, it must be implemented. If it is not captured, it must
> be captured in Sema. We should not introduce some function/other objects to
> find a workaround for 'not implemented' features.
Sorry, I was not clear in my comment. It is not that globals are not captured
in target regions - they are, we already have Sema doing that.
My point is that exactly because we capture globals in target regions the magic
that `OMPCapturedExprDecl` introduces does not work for that specific case. So,
if we have something like:
```
int Gbl;
foo() {
#pragma omp target
#pragma omp teams num_teams(Gbl)
{}
}
```
when the DeclRefExpr for Gbl used in num_teams is emitted in the scope that
encloses '#pragma omp target', it will crash because Gbl is not a local and is
marked as refer to enclosing capture.
If I got it right, a solution based on `OMPCapturedExprDecl` basically makes
local declarations whose initializers are the expression we are interested in.
In the cases that `OMPCapturedExprDecl` is currently employed we don't have
globals being captured and that is why it works fine.
It is likely I am missing something here. Let me know if you need me to provide
more details.
Thanks!
http://reviews.llvm.org/D17019
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits