[PATCH] D102107: [OpenMP] Codegen aggregate for outlined function captures

Dhruva Chakrabarti via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 7 10:15:03 PDT 2022


dhruvachak added a comment.

In D102107#3633705 <https://reviews.llvm.org/D102107#3633705>, @jdoerfert wrote:

> Also, make sure to remove all deviceRTL files and probably reset the autogenerated tests to upstream (and re-generate) before you merge (or reupload).
>
> In D102107#3633678 <https://reviews.llvm.org/D102107#3633678>, @dhruvachak wrote:
>
>> I rebased and resolved conflicts just now and got the compiler built. I did not update the tests, hence not updating this review. I see the following outstanding issues:
>>
>> (1) make check-libomptarget produces a bunch of failures with the following compile-time assertion. So my rebased patch is not interacting correctly with opaque pointers. It is the same assertion for all the failures.
>> llvm-project/llvm/include/llvm/IR/Type.h:384: llvm::Type* llvm::Type::getNonOpaquePointerElementType() const: Assertion `NumContainedTys && "Attempting to get element type of opaque pointer"' failed.
>
> See my comment below. I think that's the issue.
>
>> (2) From earlier investigation a couple of months back, this patch uses device alloc and will fail if device allocation is not implemented (e.g. in main branch of amdgpu). Most of these failures are seen at -O0, OpenMPOpt is able to optimize them away at higher opt levels. Are we ok with these failures at -O0?
>
> It used __kmpc_alloc_shared, which should in theory work with O0 (also for AMDGPU) but in practice might not, especially if it has to fallback to malloc. We are working on malloc support right now. This should not stop us. No reasonable code runs with O0 (on AMDGPU) right now.
>
>> (3) There were a few issues found regarding SPDMization, NoCaptureAttrs, alignment that should be applied to this patch. I have those changes on a local branch.
>
> Apply them, I can look over everything again.

Yes, I will apply the changes, refresh the tests, and re-upload.



================
Comment at: clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp:1540
+
+    llvm::Type *PtrElemTy = AggregateV->getType()->getPointerElementType();
+    auto &DL = CGM.getDataLayout();
----------------
jdoerfert wrote:
> This doesn't work anymore with opaque pointers, IIRC. We should remember the type and pass to this place.
Thanks. Changing this fixed the assertions. 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D102107



More information about the llvm-commits mailing list