From c140ddf3923d59603aa2ceb834085ab159b77972 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 22 Mar 2012 20:25:36 +0100 Subject: re PR middle-end/52547 (ICE with openmp with nested function which requires a trampoline) PR middle-end/52547 * tree-nested.c (convert_tramp_reference_stmt): Call declare_vars on any new_local_var_chain vars declared during recursing on GIMPLE_OMP_PARALLEL or GIMPLE_OMP_TASK body. * testsuite/libgomp.c/pr52547.c: New test. From-SVN: r185707 --- libgomp/ChangeLog | 5 +++++ libgomp/testsuite/libgomp.c/pr52547.c | 36 +++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 libgomp/testsuite/libgomp.c/pr52547.c (limited to 'libgomp') diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index e227ebf..5bed2c6 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2012-03-22 Jakub Jelinek + + PR middle-end/52547 + * testsuite/libgomp.c/pr52547.c: New test. + 2012-03-16 Bernhard Reutner-Fischer * testsuite/lib/libgomp.exp: load fortran-modules.exp diff --git a/libgomp/testsuite/libgomp.c/pr52547.c b/libgomp/testsuite/libgomp.c/pr52547.c new file mode 100644 index 0000000..f746e2e --- /dev/null +++ b/libgomp/testsuite/libgomp.c/pr52547.c @@ -0,0 +1,36 @@ +/* PR middle-end/52547 */ +/* { dg-do run } */ + +extern void abort (void); + +__attribute__((noinline, noclone)) int +baz (int *x, int (*fn) (int *)) +{ + return fn (x); +} + +__attribute__((noinline, noclone)) int +foo (int x, int *y) +{ + int i, e = 0; +#pragma omp parallel for reduction(|:e) + for (i = 0; i < x; ++i) + { + __label__ lab; + int bar (int *z) { return z - y; } + if (baz (&y[i], bar) != i) + e |= 1; + } + return e; +} + +int +main () +{ + int a[100], i; + for (i = 0; i < 100; i++) + a[i] = i; + if (foo (100, a)) + abort (); + return 0; +} -- cgit v1.1