gcc/libgomp/testsuite/libgomp.c/pr46032.c
Tom de Vries e0ca27c531 Handle BUILT_IN_GOMP_PARALLEL in ipa-pta
2015-11-30  Tom de Vries  <tom@codesourcery.com>

	PR tree-optimization/46032
	* tree-ssa-structalias.c (find_func_aliases_for_call_arg): New function,
	factored out of ...
	(find_func_aliases_for_call): ... here.
	(find_func_aliases_for_builtin_call, find_func_clobbers): Handle
	BUILT_IN_GOMP_PARALLEL.
	(ipa_pta_execute): Same.  Handle node->parallelized_function as a local
	function.

	* gcc.dg/pr46032.c: New test.

	* testsuite/libgomp.c/pr46032.c: New test.

From-SVN: r231076
2015-11-30 16:34:26 +00:00

45 lines
851 B
C

/* { dg-do run } */
/* { dg-options "-O2 -ftree-vectorize -std=c99 -fipa-pta" } */
extern void abort (void);
#define nEvents 1000
static void __attribute__((noinline, noclone, optimize("-fno-tree-vectorize")))
init (unsigned *results, unsigned *pData)
{
unsigned int i;
for (i = 0; i < nEvents; ++i)
pData[i] = i % 3;
}
static void __attribute__((noinline, noclone, optimize("-fno-tree-vectorize")))
check (unsigned *results)
{
unsigned sum = 0;
for (int idx = 0; idx < (int)nEvents; idx++)
sum += results[idx];
if (sum != 1998)
abort ();
}
int
main (void)
{
unsigned results[nEvents];
unsigned pData[nEvents];
unsigned coeff = 2;
init (&results[0], &pData[0]);
#pragma omp parallel for
for (int idx = 0; idx < (int)nEvents; idx++)
results[idx] = coeff * pData[idx];
check (&results[0]);
return 0;
}