4a82df9a38
* tree-nested.c (convert_nonlocal_omp_clauses, convert_local_omp_clauses): Handle OMP_CLAUSE_IN_REDUCTION, OMP_CLAUSE_TASK_REDUCTION and OMP_CLAUSE__SIMT_ clauses. (convert_nonlocal_reference_stmt, convert_local_reference_stmt): Convert clauses for GIMPLE_OMP_TASKGROUP. * testsuite/libgomp.c/task-reduction-3.c: New test. From-SVN: r266723
61 lines
1002 B
C
61 lines
1002 B
C
extern void abort (void);
|
|
|
|
int
|
|
foo (void)
|
|
{
|
|
int i = -1, j = -1, k;
|
|
void nested (void) { i++; j++; }
|
|
nested ();
|
|
#pragma omp taskgroup task_reduction (+: i)
|
|
{
|
|
#pragma omp task in_reduction (+: i)
|
|
i++;
|
|
#pragma omp task in_reduction (+: i)
|
|
i += 6;
|
|
}
|
|
#pragma omp taskloop reduction (+: j)
|
|
for (k = 0; k < 2; k++)
|
|
{
|
|
j += 5;
|
|
#pragma omp task in_reduction (+: j)
|
|
j += 31;
|
|
}
|
|
return i + j;
|
|
}
|
|
|
|
int
|
|
bar (void)
|
|
{
|
|
int i = 0, j = 0;
|
|
void nested (void)
|
|
{
|
|
int k;
|
|
#pragma omp taskgroup task_reduction (+: i)
|
|
{
|
|
#pragma omp task in_reduction (+: i)
|
|
i++;
|
|
#pragma omp task in_reduction (+: i)
|
|
i += 7;
|
|
}
|
|
#pragma omp taskloop reduction (+: j)
|
|
for (k = 0; k < 2; k++)
|
|
{
|
|
j += 21;
|
|
#pragma omp task in_reduction (+: j)
|
|
j += 8;
|
|
}
|
|
}
|
|
nested ();
|
|
return i + j;
|
|
}
|
|
|
|
int
|
|
main ()
|
|
{
|
|
if (foo () != (1 + 6 + (5 + 31) * 2))
|
|
abort ();
|
|
if (bar () != (1 + 7 + (21 + 8) * 2))
|
|
abort ();
|
|
return 0;
|
|
}
|