[clang] [llvm] [OpenMP] Fix non-contiguous array omp target update (PR #156889)

Ivan R. Ivanov via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 8 05:27:06 PDT 2025


ivanradanov wrote:

For reference, this is a test that exhibits the issue:
```
#include <stdio.h>

#define N 6
#define SLICE1 1:2:2
#define SLICE2 2:3
int main() {
  int darr[N][N];
  for (int i = 0; i < N; i++)
    for (int j = 0; j < N; j++)
      darr[i][j] = 100 + 10 * i + j;

#pragma omp target enter data map(alloc: darr[0:N][0:N])
#pragma omp target update to(darr[SLICE1][SLICE2])

  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      printf("\t%d", darr[i][j]);
    }
    printf("\n");
  }
  printf("\n");

  for (int i = 0; i < N; i++)
    for (int j = 0; j < N; j++)
      darr[i][j] = 0;

#pragma omp target update from(darr[SLICE1][SLICE2])
#pragma omp target exit data map(delete: darr[0:N][0:N])

  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      printf("\t%d", darr[i][j]);
    }
    printf("\n");
  }
  printf("\n");

  return 0;
}
```

Prior to patch:
```
        100     101     102     103     104     105
        110     111     112     113     114     115
        120     121     122     123     124     125
        130     131     132     133     134     135
        140     141     142     143     144     145
        150     151     152     153     154     155

        0       0       0       0       0       0
        0       0       0       0       0       0
        0       0       122     0       0       0
        0       0       0       0       0       0
        0       0       142     0       0       0
        0       0       0       0       0       0
```

After this patch:
```
        100     101     102     103     104     105
        110     111     112     113     114     115
        120     121     122     123     124     125                             
        130     131     132     133     134     135                                                                                                                                                                                                  
        140     141     142     143     144     145
        150     151     152     153     154     155                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
        0       0       0       0       0       0
        0       0       112     113     114     0                                 
        0       0       0       0       0       0
        0       0       132     133     134     0
        0       0       0       0       0       0
        0       0       0       0       0       0
```

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


More information about the llvm-commits mailing list