================
@@ -7053,13 +7053,30 @@ OpenMPIRBuilder::InsertPointTy
OpenMPIRBuilder::emitTargetTask(
<< "\n");
return Builder.saveIP();
}
+
static void emitTargetCall(
OpenMPIRBuilder &OMPBuilder, IRBuilderBase &Builder,
OpenMPIRBuilder::InsertPointTy AllocaIP, Function *OutlinedFn,
Constant *OutlinedFnID, int32_t NumTeams, int32_t NumThreads,
SmallVectorImpl<Value *> &Args,
OpenMPIRBuilder::GenMapInfoCallbackTy GenMapInfoCB,
SmallVector<llvm::OpenMPIRBuilder::DependData> Dependencies = {}) {
+ // Generate a function call to the host fallback implementation of the target
+ // region. This is called by the host when no offload entry was generated for
+ // the target region and when the offloading call fails at runtime.
+ auto &&EmitTargetCallFallbackCB =
----------------
bhandarkar-pranav wrote:
Just a note here, that `if (!OutlinedFnID)`, then we cannot simply inline a
call to `OutlinedFn`. We need to the following check
```
if (!OutlinedFnID) {
if(RequiresOuterTargetTask)
Builder.restoreIP(emitTargetTask(...));
else
Builder.restoreIP(EmitTargetCallFallBackCB(Builder.saveIP()));
}
```
But dont change this PR because I'll fold that into my upcoming changes and
more importantly, `emitTargetTask` ->`emitKernelLaunch` assert on
`OutlinedFnID`
[here](https://github.com/llvm/llvm-project/blob/main/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp#L1088)
https://github.com/llvm/llvm-project/pull/100156
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits