56ad0e3820
* gimplify.c (gimplify_omp_for): For #pragma omp for simd iterator not mentioned in clauses use private clause if the iterator is declared in #pragma omp for simd, and when adding lastprivate instead, add it to the outer #pragma omp for too. Diagnose if the variable is private in outer context. For simd collapse > 1 loops, replace all iterators with temporaries. * omp-low.c (lower_rec_input_clauses): Handle LINEAR clause the same even in collapse > 1 loops. gcc/c/ * c-parser.c (c_parser_omp_for_loop): For #pragma omp parallel for simd move lastprivate clause from parallel to for rather than simd. gcc/cp/ * parser.c (cp_parser_omp_for_loop): For #pragma omp parallel for simd move lastprivate clause from parallel to for rather than simd. libgomp/ * testsuite/libgomp.c/for-2.c: Define SC to static for #pragma omp for simd testing. * testsuite/libgomp.c/for-2.h (SC): Define if not defined. (N(f5), N(f6), N(f7), N(f8), N(f10), N(f12), N(f14)): Use SC macro. * testsuite/libgomp.c/simd-14.c: New test. * testsuite/libgomp.c/simd-15.c: New test. * testsuite/libgomp.c/simd-16.c: New test. * testsuite/libgomp.c/simd-17.c: New test. * testsuite/libgomp.c++/for-10.C: Define SC to static for #pragma omp for simd testing. * testsuite/libgomp.c++/simd10.C: New test. * testsuite/libgomp.c++/simd11.C: New test. * testsuite/libgomp.c++/simd12.C: New test. * testsuite/libgomp.c++/simd13.C: New test. From-SVN: r211930
48 lines
849 B
C
48 lines
849 B
C
extern "C" void abort ();
|
|
|
|
#define M(x, y, z) O(x, y, z)
|
|
#define O(x, y, z) x ## _ ## y ## _ ## z
|
|
|
|
#define F simd
|
|
#define G simd
|
|
#define S
|
|
#define N(x) M(x, G, normal)
|
|
#include "../libgomp.c/for-2.h"
|
|
#undef S
|
|
#undef N
|
|
#undef F
|
|
#undef G
|
|
|
|
#define F parallel for simd
|
|
#define G pf_simd
|
|
#include "../libgomp.c/for-1.h"
|
|
#undef F
|
|
#undef G
|
|
|
|
#undef SC
|
|
#define SC static
|
|
#define F for simd
|
|
#define G f_simd
|
|
#include "../libgomp.c/for-1.h"
|
|
#undef F
|
|
#undef G
|
|
#undef SC
|
|
|
|
int
|
|
main ()
|
|
{
|
|
if (test_simd_normal ()
|
|
|| test_pf_simd_static ()
|
|
|| test_pf_simd_static32 ()
|
|
|| test_pf_simd_auto ()
|
|
|| test_pf_simd_guided32 ()
|
|
|| test_pf_simd_runtime ()
|
|
|| test_f_simd_static ()
|
|
|| test_f_simd_static32 ()
|
|
|| test_f_simd_auto ()
|
|
|| test_f_simd_guided32 ()
|
|
|| test_f_simd_runtime ())
|
|
abort ();
|
|
return 0;
|
|
}
|