cchen added a comment.

In D90704#2372303 <https://reviews.llvm.org/D90704#2372303>, @ABataev wrote:

> It would be good if you could identify the object which leads to a crash, I 
> mean a target region, variable, etc.



   1    void
   2    add_one(float *b, int dm)
   3    {
   4    #pragma omp target data map(tofrom:b[:1]) use_device_ptr(b) if (dm)
   5      {
   6    #pragma omp target is_device_ptr(b)
   7      {
   8        b[0] += 1;
   9      }
  10      }
  11    }

The code crashes at line 6. Below is the information I dumped from 
`registerTargetRegionEntryInfo`. (DeviceID, FileID, ParentName, LineNum, Addr, 
ID)

  DeviceID: 16777220, FileID 38814071, ParentName add_one, LineNum: 6
  Addr:
  ; Function Attrs: noinline norecurse nounwind optnone ssp uwtable
  define internal void @__omp_offloading_1000004_2504177_add_one_l6(float* %b) 
#2 {
  entry:
    %b.addr = alloca float*, align 8
    store float* %b, float** %b.addr, align 8
    %0 = load float*, float** %b.addr, align 8
    %arrayidx = getelementptr inbounds float, float* %0, i64 0
    %1 = load float, float* %arrayidx, align 4
    %add = fadd float %1, 1.000000e+00
    store float %add, float* %arrayidx, align 4
    ret void
  }
  
  ID:
  @.__omp_offloading_1000004_2504177_add_one_l6.region_id = weak constant i8 0

I found that both the `BeginThenGen` lambda and `BeginElseGen` lambda calls 
`registerTargetRegionEntryInfo` and both do

  OffloadEntryInfoTargetRegion Entry(OffloadingEntriesNum, Addr, ID, Flags);
  OffloadEntriesTargetRegion[DeviceID][FileID][ParentName][LineNum] = Entry;
  OffloadingEntriesNum++;

Which will lead to out-of-bounds access in 
`createOffloadEntriesAndInfoMetadata` since OffloadingEntriessNum is increased 
even if the size of `OffloadEntriesTargetRegion` is not increased.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D90704

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

Reply via email to