]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/43337 (ICE: in lookup_decl_in_outer_ctx, at omp-low.c:2103)
authorJakub Jelinek <jakub@redhat.com>
Mon, 19 Apr 2010 21:50:16 +0000 (23:50 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 19 Apr 2010 21:50:16 +0000 (23:50 +0200)
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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/gomp/pr43337.f90 [new file with mode: 0644]
gcc/tree-nested.c

index dafcc6c6d3c8a76a77f36c3c1043493e48a57096..e16fa0c2009007f0237c4640afc7bc0c93eccae7 100644 (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
index c553fe03291ee382b1880a5fe1b80ebf6dc61ae6..d29867544e432c5acddf6a90169bb5de7799e46f 100644 (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
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr43337.f90 b/gcc/testsuite/gfortran.dg/gomp/pr43337.f90
new file mode 100644 (file)
index 0000000..f07ccb4
--- /dev/null
@@ -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
index fb95088b64805e9f3ca4edf5a781ab3b31004448..a3aa6c4c384ac35d3fe9b1006dcb7cae49c7bbfa 100644 (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;