aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-openmp.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-12-04 09:47:13 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2019-12-04 09:47:13 +0100
commita8a5f4cc04c802d74176f6935509b8a4303de399 (patch)
treee1fbf1849c99714c9827523641f902da451ba489 /gcc/fortran/trans-openmp.c
parentc96828f1ec5bb54524697bd0f3fb22088fda5342 (diff)
downloadgcc-a8a5f4cc04c802d74176f6935509b8a4303de399.zip
gcc-a8a5f4cc04c802d74176f6935509b8a4303de399.tar.gz
gcc-a8a5f4cc04c802d74176f6935509b8a4303de399.tar.bz2
re PR fortran/92756 (ICE in lower_omp, at omp-low.c:12988)
PR fortran/92756 * trans-openmp.c (gfc_trans_omp_teams): Wrap OMP_TEAMS body into a BIND_EXPR with a forced BLOCK. * gfortran.dg/gomp/teams1.f90: New test. * testsuite/libgomp.fortran/teams1.f90: New test. * testsuite/libgomp.fortran/teams2.f90: New test. From-SVN: r278956
Diffstat (limited to 'gcc/fortran/trans-openmp.c')
-rw-r--r--gcc/fortran/trans-openmp.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/fortran/trans-openmp.c b/gcc/fortran/trans-openmp.c
index d9dfcab..3a4f962 100644
--- a/gcc/fortran/trans-openmp.c
+++ b/gcc/fortran/trans-openmp.c
@@ -4858,10 +4858,14 @@ gfc_trans_omp_teams (gfc_code *code, gfc_omp_clauses *clausesa,
gfc_split_omp_clauses (code, clausesa);
}
if (flag_openmp)
- omp_clauses
- = chainon (omp_clauses,
- gfc_trans_omp_clauses (&block, &clausesa[GFC_OMP_SPLIT_TEAMS],
- code->loc));
+ {
+ omp_clauses
+ = chainon (omp_clauses,
+ gfc_trans_omp_clauses (&block,
+ &clausesa[GFC_OMP_SPLIT_TEAMS],
+ code->loc));
+ pushlevel ();
+ }
switch (code->op)
{
case EXEC_OMP_TARGET_TEAMS:
@@ -4881,6 +4885,7 @@ gfc_trans_omp_teams (gfc_code *code, gfc_omp_clauses *clausesa,
}
if (flag_openmp)
{
+ stmt = build3_v (BIND_EXPR, NULL, stmt, poplevel (1, 0));
stmt = build2_loc (input_location, OMP_TEAMS, void_type_node, stmt,
omp_clauses);
if (combined)