mirror of git://gcc.gnu.org/git/gcc.git
omp-low.c (lower_oacc_reductions): Adjust variable lookup to use maybe_lookup_decl...
2016-08-17 Chung-Lin Tang <cltang@codesourcery.com> * omp-low.c (lower_oacc_reductions): Adjust variable lookup to use maybe_lookup_decl, to handle nested acc loop directives. testsuite/ * c-c++-common/goacc/reduction-6.c: New testcase. From-SVN: r239530
This commit is contained in:
parent
661d6efd62
commit
11c4c4ba47
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-08-17 Chung-Lin Tang <cltang@codesourcery.com>
|
||||||
|
|
||||||
|
* omp-low.c (lower_oacc_reductions): Adjust variable lookup to use
|
||||||
|
maybe_lookup_decl, to handle nested acc loop directives.
|
||||||
|
|
||||||
2016-08-17 Richard Biener <rguenther@suse.de>
|
2016-08-17 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/76490
|
PR tree-optimization/76490
|
||||||
|
|
|
||||||
|
|
@ -5660,10 +5660,19 @@ lower_oacc_reductions (location_t loc, tree clauses, tree level, bool inner,
|
||||||
outgoing = var;
|
outgoing = var;
|
||||||
incoming = omp_reduction_init_op (loc, rcode, type);
|
incoming = omp_reduction_init_op (loc, rcode, type);
|
||||||
}
|
}
|
||||||
else if (ctx->outer)
|
|
||||||
incoming = outgoing = lookup_decl (orig, ctx->outer);
|
|
||||||
else
|
else
|
||||||
incoming = outgoing = orig;
|
{
|
||||||
|
/* Try to look at enclosing contexts for reduction var,
|
||||||
|
use original if no mapping found. */
|
||||||
|
tree t = NULL_TREE;
|
||||||
|
omp_context *c = ctx->outer;
|
||||||
|
while (c && !t)
|
||||||
|
{
|
||||||
|
t = maybe_lookup_decl (orig, c);
|
||||||
|
c = c->outer;
|
||||||
|
}
|
||||||
|
incoming = outgoing = (t ? t : orig);
|
||||||
|
}
|
||||||
|
|
||||||
has_outer_reduction:;
|
has_outer_reduction:;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
|
2016-08-17 Chung-Lin Tang <cltang@codesourcery.com>
|
||||||
|
|
||||||
|
* c-c++-common/goacc/reduction-6.c: New testcase.
|
||||||
|
|
||||||
2016-08-17 Richard Biener <rguenther@suse.de>
|
2016-08-17 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/76490
|
PR tree-optimization/76490
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
/* Check if different occurences of the reduction clause on
|
||||||
|
OpenACC loop nests will compile. */
|
||||||
|
|
||||||
|
int foo (int N)
|
||||||
|
{
|
||||||
|
int a = 0, b = 0, c = 0, d = 0, e = 0;
|
||||||
|
|
||||||
|
#pragma acc parallel
|
||||||
|
{
|
||||||
|
#pragma acc loop
|
||||||
|
for (int i = 0; i < N; i++)
|
||||||
|
{
|
||||||
|
#pragma acc loop reduction(+:a)
|
||||||
|
for (int j = 0; j < N; j++)
|
||||||
|
a += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma acc parallel
|
||||||
|
{
|
||||||
|
#pragma acc loop reduction(+:b)
|
||||||
|
for (int i = 0; i < N; i++)
|
||||||
|
{
|
||||||
|
#pragma acc loop
|
||||||
|
for (int j = 0; j < N; j++)
|
||||||
|
b += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma acc parallel
|
||||||
|
{
|
||||||
|
#pragma acc loop reduction(+:c)
|
||||||
|
for (int i = 0; i < N; i++)
|
||||||
|
{
|
||||||
|
#pragma acc loop reduction(+:c)
|
||||||
|
for (int j = 0; j < N; j++)
|
||||||
|
c += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma acc parallel loop
|
||||||
|
for (int i = 0; i < N; i++)
|
||||||
|
{
|
||||||
|
#pragma acc loop reduction(+:d)
|
||||||
|
for (int j = 0; j < N; j++)
|
||||||
|
d += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma acc parallel loop reduction(+:e)
|
||||||
|
for (int i = 0; i < N; i++)
|
||||||
|
{
|
||||||
|
#pragma acc loop reduction(+:e)
|
||||||
|
for (int j = 0; j < N; j++)
|
||||||
|
e += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return a + b + c + d + e;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue