diff options
author | Jakub Jelinek <jakub@redhat.com> | 2008-09-03 15:03:56 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2008-09-03 15:03:56 +0200 |
commit | 05a26161b47e20ef03df11724609d82f372a37f7 (patch) | |
tree | 969a011521d5e52852f69db9aefe7bab4454aa42 | |
parent | a6340be14474c7cdd6637413be9e25f9e5e550d1 (diff) | |
download | gcc-05a26161b47e20ef03df11724609d82f372a37f7.zip gcc-05a26161b47e20ef03df11724609d82f372a37f7.tar.gz gcc-05a26161b47e20ef03df11724609d82f372a37f7.tar.bz2 |
re PR target/37436 (arm-cross-g++. internal compiler error: in extract_insn, at recog.c:1990)
PR c++/37436
* gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
substatements.
* tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
* g++.dg/gomp/pr37436.C: New test.
From-SVN: r139937
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/gimple.h | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/pr37436.C | 15 | ||||
-rw-r--r-- | gcc/tree-inline.c | 6 |
5 files changed, 34 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 894a32d..e0275e1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2008-09-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/37436 + * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has + substatements. + * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL. + 2008-09-03 Bernd Schmidt <bernd.schmidt@analog.com> From Michael Frysinger <michael.frysinger@analog.com> diff --git a/gcc/gimple.h b/gcc/gimple.h index ca8e644..f8af057 100644 --- a/gcc/gimple.h +++ b/gcc/gimple.h @@ -1052,6 +1052,7 @@ gimple_has_substatements (gimple g) case GIMPLE_OMP_TASK: case GIMPLE_OMP_SECTIONS: case GIMPLE_OMP_SINGLE: + case GIMPLE_OMP_CRITICAL: case GIMPLE_WITH_CLEANUP_EXPR: return true; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3cb12d1..225c999 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-09-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/37436 + * g++.dg/gomp/pr37436.C: New test. + 2008-09-03 Bernd Schmidt <bernd.schmidt@analog.com> From Mike Frysinger <michael.frysinger@analog.com> diff --git a/gcc/testsuite/g++.dg/gomp/pr37436.C b/gcc/testsuite/g++.dg/gomp/pr37436.C new file mode 100644 index 0000000..e2cfe44 --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr37436.C @@ -0,0 +1,15 @@ +// PR c++/37436 +// { dg-do compile } +// { dg-options "-fopenmp" } + +struct A +{ + A (); + int i; +}; + +A::A () +{ +#pragma omp critical + i++; +} diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 5919b2b..3b77c0e 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -1156,6 +1156,12 @@ remap_gimple_stmt (gimple stmt, copy_body_data *id) (s1, gimple_omp_single_clauses (stmt)); break; + case GIMPLE_OMP_CRITICAL: + s1 = remap_gimple_seq (gimple_omp_body (stmt), id); + copy + = gimple_build_omp_critical (s1, gimple_omp_critical_name (stmt)); + break; + default: gcc_unreachable (); } |