re PR middle-end/43337 (ICE: in lookup_decl_in_outer_ctx, at omp-low.c:2103)

PR middle-end/43337
	* tree-nested.c (convert_nonlocal_omp_clauses): OMP_CLAUSE_PRIVATE
	with non-local decl doesn't need chain.

	* gfortran.dg/gomp/pr43337.f90: New test.

From-SVN: r158545
This commit is contained in:
Jakub Jelinek 2010-04-20 10:37:12 +02:00 committed by Jakub Jelinek
parent b6e7800942
commit 15fe33eb5d
4 changed files with 45 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2010-04-20 Jakub Jelinek <jakub@redhat.com>
PR middle-end/43337
* tree-nested.c (convert_nonlocal_omp_clauses): OMP_CLAUSE_PRIVATE
with non-local decl doesn't need chain.
2010-04-19 Jie Zhang <jie@codesourcery.com>
PR target/43662

View File

@ -1,3 +1,8 @@
2010-04-20 Jakub Jelinek <jakub@redhat.com>
PR middle-end/43337
* gfortran.dg/gomp/pr43337.f90: New test.
2010-04-19 Jie Zhang <jie@codesourcery.com>
PR target/43662

View File

@ -0,0 +1,30 @@
! PR middle-end/43337
! { dg-do compile }
! { dg-options "-fopenmp -O2 -g" }
subroutine pr43337
integer :: a, b(10)
call foo (b)
call bar (b)
contains
subroutine foo (b)
integer :: b(10)
!$omp parallel if (.false.)
!$omp task if (.false.) shared(b)
do a = 1, 10
b(a) = 1
end do
!$omp end task
!$omp end parallel
end subroutine foo
subroutine bar (b)
integer :: b(10)
!$omp parallel if (.false.)
!$omp parallel if (.false.)
do a = 1, 10
b(a) = 1
end do
!$omp end parallel
!$omp end parallel
end subroutine bar
end subroutine pr43337

View File

@ -1,5 +1,6 @@
/* Nested function decomposition for GIMPLE.
Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010
Free Software Foundation, Inc.
This file is part of GCC.
@ -1040,7 +1041,8 @@ convert_nonlocal_omp_clauses (tree *pclauses, struct walk_stmt_info *wi)
{
bitmap_set_bit (new_suppress, DECL_UID (decl));
OMP_CLAUSE_DECL (clause) = get_nonlocal_debug_decl (info, decl);
need_chain = true;
if (OMP_CLAUSE_CODE (clause) != OMP_CLAUSE_PRIVATE)
need_chain = true;
}
break;