On Tue, Mar 10, 2015 at 19:52:52 +0300, Ilya Verbin wrote:
> Hi Jakub,
>
> I have one more question :)
> This testcase seems to be correct... or not?
>
> #pragma omp declare target
> extern int G;
> #pragma omp end declare target
>
> int G;
>
> int main ()
> {
> #pragma omp target update to(G)
>
> return 0;
> }
>
> If yes, then we have a problem that the decl of G in varpool_node::get_create
> doesn't have "omp declare target" attribute.
Ping?
I am investigating run-fails on some benchmark, and have found a second
questionable place, where a function argument overrides a global array.
Just to be sure, is this a bug in the test?
#pragma omp declare target
int a1[50], a2[50];
#pragma omp end declare target
void foo (int a1[])
{
#pragma omp target
{
a1[10]++;
a2[10]++;
}
}
int main ()
{
a1[10] = a2[10] = 10;
#pragma omp target update to(a1, a2)
foo (a1);
#pragma omp target update from(a1, a2)
if (a1[10] != a2[10])
abort ();
return 0;
}
Thanks,
-- Ilya