<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61636>61636</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Libomptarget message: explicit extension not allowed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
RaviNarayanaswamy
</td>
</tr>
</table>
<pre>
When the following code is compiled and run generate the following message
Libomptarget message: explicit extension not allowed: host address specified is 0x00007fff66cc45a4 (12 bytes), but device allocation maps to host at 0x00007fff66cc4530 (120 bytes)
The ref count may not be correct when mappers are used the memory mapped in foo is not freed and when bar is called and uses the same stack memory runtime sees it as trying to extend an already mapped memory.
compiled using -fopenmp -fopenmp-targets=x86_64
Source 👍 #include <stdio.h>
#define TRUE 1
#define FALSE 0
typedef struct {
int i1, i2, i3;
} TY1;
#pragma omp declare mapper(TY1 t) map(to:t.i1) map(from: t.i3)
unsigned foo() {
TY1 t1[10];
int i;
for(int i = 0; i < 10; i++)
t1[i].i1 = 1;
#pragma omp target map(tofrom:t1)
for (i = 0; i < 10; i++)
t1[i].i3 = t1[i].i1;
for (int i = 0; i < 10; i++) {
if (t1[i].i3 != t1[i].i1) {
printf("failed. t1[%d].i3 (%d) != t1[%d].i1 (%d)\n", i, t1[i].i3, i, t1[i].i1);
return FALSE;
}
}
return TRUE;
}
unsigned bar() {
TY1 t2[5];
for(int i = 0; i < 5; i++)
t2[i].i1 = 2;
#pragma omp target map(tofrom:t2)
for (int i = 0; i < 5; i++)
t2[i].i3 = t2[i].i1;
for (int i = 0; i < 5; i++) {
if (t2[i].i3 != t2[i].i1) {
printf("failed. t2[%d].i3 (%d) != t2[%d].i1 (%d)\n", i, t2[i].i3, i, t2[i].i1);
return FALSE;
}
}
return TRUE;
}
int main() {
if (foo() != TRUE)
return 1;
if (bar() != TRUE)
return 2;
printf("passed\n");
return 0;
}
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVk1v6ygX_jUnm6NGGOI4XmTRNM3q6l3c21ejuxphc5wwY4MFuG3-_QjspO7Hnel0M1JE4MDznK8H29J7fTREW8h3kO8Xcggn67bf5aP-n3TyLI30T7I7LyqrztvfTmQwnAgb27b2SZsj1lYRao-17XrdkkJpFLrB4JEMORnozfmOvJdHArYHdvtNV7brg3RHCtcdcYv03Le61gHpOZDx2ho0NqCMJKTiiZP1AaVSjrxH31OtG00qBsKeGWOsaJpmva7rVS5XCHyTcazOgTzwEvgdVkNARY-6pkRayxB9dLL3GOxEHt5RCTZSsReulMbDidBRg7UdTMBOnlO0FWFtnaM64FOsWyf7npxH6QgHTyoVpqPOuvO4p1AbbKyNWUSCxtFUz4SvpEuFlu2lzIMnn1i87Ah9kPWfF0I3mKCjkcijDig9BneODQh2rGqkQNk6kurqfwQvx6zG8drXwUf0TWN7Ml1_ndyM3fMg9s-b9e_r1Qj7YQdXE8KBQXmAMoPNHoELbep2UIQg7nxQ2i5PIO7n7oALRY02hA_f_3-P2Vvr4fbbj3tkc0g496SoQR_cUAeEYjfaEbUJqLPYb83TKEBMm1Ds8eFn9rJ-HUPv5LGTaLseFdVtbNnYPuCbh58ZBuBltADfBAviNiyjn4upcbaLIg1LLa4imY-DSbdOxW4D30TkLOzkIIN8lzHI99cQp3xm68bGeJIVQeyRgdil6R1m4xz4Lv3KCwRHZg35fqmzhHpXhFfpXy7nlOuUWshmnI118V58LQaRUPOg3oTzwv-ZPOd1RNRNBL72xrN3Dt_CEHunTWhSa3gjo_6XIwR4rq5Mm7SK6Bnp9UQ2OwH5nQE-ijAO85A-MqbyilchOQqDM-MFeLUFxf6yuE4vhgkU79Jc-h9qsZLuF1rkkO_yuRQ_IcD8l73nb_THv6I__oH-vhrGJEH-RQnmn1Ag_0CB_N8rkP-jAvmnFcg_UiD_LxSo00tTm_fqG6s3e0iOWSayeTMnJ9n8WZmgM03_PZTPoPPS99J7UtfizUsyIdn7tBZqK1QpSrmgbbYuypyvioItTtsN8SIri2pTNeuqYHWuhFrXjFWsLJoso4XecsYFE5xzLkrBllQXoqSmlHzV1DIvYcWok7pdtu1jt7TuuNDeD7RdZ2uxXrSyotZfvuXcNh66qYajhxVrtQ_-BRZ0aGn7tQ-wxeDa7SmE3oO4BX4AfjjqcBqqZW074IfoZPq76Z39g-oA_JAC9cAPKda_AgAA___PDeH3">