[clang] [Clang][OpenMP] Handle check for pointer-based array sections (PR #157443)

Julian Brown via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 8 06:55:15 PDT 2025


jtb20 wrote:

I had a quick look because I was looking into this briefly too -- it still crashes for me, like so:
```
Thread 1 "test_target_upd" received signal SIGSEGV, Segmentation fault.
0x00007ffff7aec887 in targetDataUpdate (Loc=0x55555555b5c8, Device=..., ArgNum=2, ArgsBase=0x7fffffffd880, Args=0x7fffffffd870, ArgSizes=0x7fffffffd860, ArgTypes=0x5555555582d0, ArgNames=0x55555555b5b8, ArgMappers=0x0, AsyncInfo=..., AttachInfo=0x0, FromMapper=false) at /work1/julbrown/code/mainline+amd-staging/src/llvm-project-main/offload/libomptarget/omptarget.cpp:1297
1297              NonContig[DimSize - 1].Count * NonContig[DimSize - 1].Stride;
```
The strange thing about the surrounding loop (in `generateInfoForComponentList`) is that it *appears* like it was written to handle this case at some point, see e.g. the comment:
```
        // If ElementType is null, then it means the base is a pointer
        // (neither CAT nor VAT) and we'll attempt to get ElementType again
        // for next iteration.
```
But, that can't ever happen because of the if stmt further up:
```
      if (!OASE)
        continue;
```
So it might be worth doing some archaeology to figure out why/when this was broken.

JFYI!

https://github.com/llvm/llvm-project/pull/157443


More information about the cfe-commits mailing list