diff options
author | Jakub Jelinek <jakub@redhat.com> | 2008-01-25 10:12:57 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2008-01-25 10:12:57 +0100 |
commit | 80e67011e309ed891ee8a5e736311b61be446895 (patch) | |
tree | 40d42db12dc1add7a40ae92b21f2e250b45ff8a6 /gcc | |
parent | 765d600ac5d94a978c00cd791c95ea75d1673e66 (diff) | |
download | gcc-80e67011e309ed891ee8a5e736311b61be446895.zip gcc-80e67011e309ed891ee8a5e736311b61be446895.tar.gz gcc-80e67011e309ed891ee8a5e736311b61be446895.tar.bz2 |
re PR middle-end/33333 (ICE with #pragma omp parallel for in try/catch statement)
PR middle-end/33333
* gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
* g++.dg/gomp/pr33333.C: New test.
From-SVN: r131820
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/gimplify.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/pr33333.C | 19 |
4 files changed, 31 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 392999f..5b208cb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-01-25 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/33333 + * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY. + 2008-01-25 Golovanevsky Olga <olga@il.ibm.com> * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs): diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 1075d65..fe70847 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -5330,6 +5330,10 @@ gimplify_omp_for (tree *expr_p, tree *pre_p) else var = decl; + /* If OMP_FOR is re-gimplified, ensure all variables in pre-body + are noticed. */ + gimplify_stmt (&OMP_FOR_PRE_BODY (for_stmt)); + ret |= gimplify_expr (&GENERIC_TREE_OPERAND (t, 1), &OMP_FOR_PRE_BODY (for_stmt), NULL, is_gimple_val, fb_rvalue); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a722cb3..392f7a5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2008-01-25 Jakub Jelinek <jakub@redhat.com> + PR middle-end/33333 + * g++.dg/gomp/pr33333.C: New test. + PR preprocessor/34692 * gcc.dg/cpp/pr34692.c: New test. * gcc.dg/gomp/pr34692.c: New test. diff --git a/gcc/testsuite/g++.dg/gomp/pr33333.C b/gcc/testsuite/g++.dg/gomp/pr33333.C new file mode 100644 index 0000000..ea5079b --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr33333.C @@ -0,0 +1,19 @@ +// PR middle-end/33333 +// { dg-do compile } + +struct A +{ + int n; + void foo (); +}; + +void +A::foo () +{ + try + { + #pragma omp parallel for + for (int i = 0; i < n; ++i) + ; + } catch (...) {} +} |