<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">