<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/99856>99856</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Offload][OpenMPOpt] Indirect call optimization leads to seg fault on device
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
            doru1004,
            jdoerfert,
            jhuber6,
            saiislam
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          doru1004
      </td>
    </tr>
</table>

<pre>
    The following example fails:

```
#include <stdio.h>
#define N 10

int foobar(void) {
  int a = 0;
  for (int ii = 0; ii < N+2; ii++) {
    #pragma omp parallel for reduction(+:a)
    for (int i = 0; i < N; i++) {
      a += i;
    }
  }
  return a;
}

int main (void)
{
  long int aa=0;
  int res = 0;

  int ng =12;
  int cmom = 14;
  int nxyz = 5;
#pragma omp target teams distribute num_teams(nxyz) thread_limit(4) map(tofrom:aa)
  for (int gid = 0; gid < nxyz; gid++) {
    #pragma omp parallel for  collapse(2)
 for (unsigned int g = 0; g < ng; g++) {
      for (unsigned int l = 0; l < cmom-1; l++) {
        int a = foobar();
        #pragma omp atomic
 aa += a;
      }
    }
  }
  long exp = (long)ng*(cmom-1)*nxyz*(N*(N-1)/2)*(N+2);
  printf ("The result is = %ld exp:%ld!\n", aa,exp);
  if (aa != exp) {
    printf("Failed %ld\n",aa);
    return 1;
  }
  return 0;
}

```

The problem seems to be with the kmpc_paralle_51 function. If this function is excluded from the AAIndirectCall optimization then the program passes.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVUGPqzgM_jXpxZoKTJnCgUOn3UrvsPP2sPdRIAbyNiEoCTPz3q9fJTAt7dseVqpobMef7S92wp2T3UBUsfyFIQpjpzRJdgyR4ZEh_hCGbEvWXzX9VJN9vsiOS-kU10GRnzZ88r2x1RfQpjbiZ_V3T9AapcyHHDqgT65HRdByqRzLDiw5seTr-5wsv1nETA6NmgQBy47OC2m2Pcv-uFgFtXIgeIU0WcPIwUNrTM0tw-LdSMGwBLZ_ma0Awc6BZSdIWHbRtsYCwyIYpbxY5_URXhm-4CwzfIm_G0wAhtloeac5GD3CyC1XilSEtSSmxkszMCyCa3bgDMur6zr0KvISOCwfxIRQRwA8gVyVAsD2py9htbTkJzsAv2y92K7EaS4HuPL2te-CrczQzQxylp3WBAalJXdH7No6dMGY4p1To42OXunuzjJ8_vwVLfkV74Zmz21HHjxx7UBI562sJ08wTPotKhkWASQw53tLXLwpqaVnWOyCTvORYeFNa40Ox7I-l9WpdFJcz2UWjjG5Rf7_LQGNUYqPjhgWeA26xJyGOJgiktCtQs-Bu7h-2BP_BaKuICqCBNKf0ig_BFqPymWgQrLZ3bbbQrk3WjbLDn7pUH7ntmrMRw0bm40-x5gBwyLIDMvwOTAslhqwZHiYTzloX5e_xXLGecNsecHb_EcrB99CrAvDTWXJTcqDdEvMXImQQbipwpphyvLjMF-AYQbwGKw3mDLixcLTADJvuCV3jjuHPXOpSMyxruBzL64pW8Y3XSl_H-7k0XDfX67xGyoerakVaXBE2oE3UBN8SN-D7wn-0WPztnTuW55COw3xJtvCtxZ8L91FEyijz3hdCwjzFP0Ph2-DkJYaf-RKgRm91PIXjw6-p_gJGXSWaxi5c-S2G1FlosxKvqEq3WP6vEuLLNv0VVvuU0obsS_27b7JiyQTmCbpPkuSXZoTbmSFCe6SPWJS5kmWbXnaPIs0KbNcFHVNyHYJaS7VVql3vTW220jnJqrKssifN4rXpNzyGg70AdG4vG22Cj5P9dQ5tkuUdN5dUbz0Kj6j39tWGS5YfgrCSMOff30fPctP8MUDNL8RoYiLyLyjDloe-s8MIOhdNrSZrKp678f4WOKZ4bmTvp_qbWM0w3NIYfl7Gq35QY1neI6JO4bnubD3Cv8NAAD__3wGNcI">