From 6b9696405bb3994f11514e82ca9f3fbd29f48b05 Mon Sep 17 00:00:00 2001
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Sun, 29 Oct 2006 10:27:39 +0000
Subject: [PATCH] 	PR fortran/29629 	* trans-openmp.c
 (gfc_trans_omp_array_reduction): Set attr.flavor 	of init_val_sym and
 outer_sym to FL_VARIABLE.

	* testsuite/libgomp.fortran/pr29629.f90: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118134 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/fortran/ChangeLog                         |  6 ++++++
 gcc/fortran/trans-openmp.c                    |  2 ++
 libgomp/ChangeLog                             |  5 +++++
 libgomp/testsuite/libgomp.fortran/pr29629.f90 | 20 +++++++++++++++++++
 4 files changed, 33 insertions(+)
 create mode 100644 libgomp/testsuite/libgomp.fortran/pr29629.f90

diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 6c24c4751305..31c6c6f47136 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2006-10-29  Jakub Jelinek  <jakub@redhat.com>
+
+	PR fortran/29629
+	* trans-openmp.c (gfc_trans_omp_array_reduction): Set attr.flavor
+	of init_val_sym and outer_sym to FL_VARIABLE.
+
 2006-10-29  Kazu Hirata  <kazu@codesourcery.com>
 
 	* intrinsic.texi: Fix a typo.
diff --git a/gcc/fortran/trans-openmp.c b/gcc/fortran/trans-openmp.c
index 32020cc433a6..fa8be1d72ecf 100644
--- a/gcc/fortran/trans-openmp.c
+++ b/gcc/fortran/trans-openmp.c
@@ -300,6 +300,7 @@ gfc_trans_omp_array_reduction (tree c, gfc_symbol *sym, locus where)
   init_val_sym.ts = sym->ts;
   init_val_sym.attr.referenced = 1;
   init_val_sym.declared_at = where;
+  init_val_sym.attr.flavor = FL_VARIABLE;
   backend_decl = omp_reduction_init (c, gfc_sym_type (&init_val_sym));
   init_val_sym.backend_decl = backend_decl;
 
@@ -308,6 +309,7 @@ gfc_trans_omp_array_reduction (tree c, gfc_symbol *sym, locus where)
   outer_sym.as = gfc_copy_array_spec (sym->as);
   outer_sym.attr.dummy = 0;
   outer_sym.attr.result = 0;
+  outer_sym.attr.flavor = FL_VARIABLE;
   outer_sym.backend_decl = create_tmp_var_raw (TREE_TYPE (decl), NULL);
 
   /* Create fake symtrees for it.  */
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index d5788240f801..139b7fc5c1bb 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,8 @@
+2006-10-29  Jakub Jelinek  <jakub@redhat.com>
+
+	PR fortran/29629
+	* testsuite/libgomp.fortran/pr29629.f90: New test.
+
 2006-10-24  Eric Botcazou  <ebotcazou@libertysurf.fr>
 
 	PR libgomp/29494
diff --git a/libgomp/testsuite/libgomp.fortran/pr29629.f90 b/libgomp/testsuite/libgomp.fortran/pr29629.f90
new file mode 100644
index 000000000000..9ccddffb0392
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/pr29629.f90
@@ -0,0 +1,20 @@
+! PR fortran/29629
+! { dg-do run }
+
+program pr29629
+  integer :: n
+  n = 10000
+  if (any (func(n).ne.10000)) call abort
+  contains
+    function func(n)
+      integer, intent(in) :: n
+      integer, dimension(n) :: func
+      integer :: k
+      func = 0
+!$omp parallel do private(k), reduction(+:func), num_threads(4)
+      do k = 1, n
+        func = func + 1
+      end do
+!$omp end parallel do
+    end function
+end program
-- 
GitLab