doru1004 added inline comments.

================
Comment at: clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp:1085
   }
-  for (const auto *VD : I->getSecond().EscapedVariableLengthDecls) {
-    // Use actual memory size of the VLA object including the padding
----------------
doru1004 wrote:
> ABataev wrote:
> > jhuber6 wrote:
> > > doru1004 wrote:
> > > > ABataev wrote:
> > > > > Why this code is removed?
> > > > I could not understand why this code is here in the first place since 
> > > > it doesn't seem that it could ever work correctly (and it doesn't seem 
> > > > to be covered by any existing tests). Maybe I'm wrong but that was my 
> > > > understanding of it. So what seems to happen is that this code attempts 
> > > > to emit a kmpc_alloc_shared before the actual size calculation is 
> > > > emitted. So if the VLA size is something that the user defines such as 
> > > > `int N = 10;` then that code will not have been emitted at this point. 
> > > > When the expression computing the size of the VLA uses `N`, the code 
> > > > that is deleted here would just fail to find the VLA size in the 
> > > > attempt to emit the kmpc_alloc_shared. The emission of the VLA as 
> > > > kmpc_alloc_shared needs to happen after the expression of the size is 
> > > > emitted.
> > > I'm pretty sure I was the one that wrote this code, and at the time I 
> > > don't recall it really working. I remember there was something else that 
> > > expected this to be here, but for what utility I do not recall. VLAs were 
> > > never tested or used.
> > They are tested, check 
> > test/OpenMP/nvptx_target_teams_distribute_parallel_for_codegen.cpp for 
> > example, where it captures VLA implicitly. I assume this should not be 
> > AMDGCN specific.
> Oh I see so this code path would cover the case when the VLA is defined 
> outside the target region? I'm surprised I haven't seen any lit test fails 
> for AMD GPUs, maybe this kind of test only exists for NVPTX. I'll add a test 
> for AMD GPUs in that case.
Edit: the VLA is defined outside the target region => the VLA //size// is 
defined outside the target region


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D153883

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to