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: r158527
This commit is contained in:
Jakub Jelinek 2010-04-19 23:50:16 +02:00 committed by Jakub Jelinek
parent 74e27d0d56
commit fd2e4e99d8
4 changed files with 42 additions and 2 deletions

View File

@ -3,6 +3,10 @@
* dwarf2out.c (lower_bound_default): For DW_LANG_Python return
0 for -gdwarf-4.
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 Vladimir Makarov <vmakarov@redhat.com>
* ira-color.c (allocno_reload_assign): Avoid accumulating

View File

@ -1,3 +1,8 @@
2010-04-19 Jakub Jelinek <jakub@redhat.com>
PR middle-end/43337
* gfortran.dg/gomp/pr43337.f90: New test.
2010-04-19 Richard Guenther <rguenther@suse.de>
PR tree-optimization/43796

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,5 @@
/* Nested function decomposition for GIMPLE.
Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
This file is part of GCC.
@ -1088,7 +1088,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;