OSDN Git Service

* decl.c (variable_decl): Merge current_as before copying to cp_as.
authorlangton <langton@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 2 Jun 2011 21:36:02 +0000 (21:36 +0000)
committerlangton <langton@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 2 Jun 2011 21:36:02 +0000 (21:36 +0000)
    * gfortran.dg/PR37039.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@174582 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/PR37039.f90 [new file with mode: 0644]

index e7b567e..fec047e 100644 (file)
@@ -1,3 +1,8 @@
+2011-06-02  Asher Langton  <langton2@llnl.gov>
+
+       PR fortran/37039
+       * decl.c (variable_decl): Merge current_as before copying to cp_as.
+
 2011-06-02  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/49265
index f914156..7098368 100644 (file)
@@ -1763,9 +1763,7 @@ variable_decl (int elem)
 
   /* Now we could see the optional array spec. or character length.  */
   m = gfc_match_array_spec (&as, true, true);
-  if (gfc_option.flag_cray_pointer && m == MATCH_YES)
-    cp_as = gfc_copy_array_spec (as);
-  else if (m == MATCH_ERROR)
+  if (m == MATCH_ERROR)
     goto cleanup;
 
   if (m == MATCH_NO)
@@ -1773,6 +1771,9 @@ variable_decl (int elem)
   else if (current_as)
     merge_array_spec (current_as, as, true);
 
+  if (gfc_option.flag_cray_pointer)
+    cp_as = gfc_copy_array_spec (as);
+
   /* At this point, we know for sure if the symbol is PARAMETER and can thus
      determine (and check) whether it can be implied-shape.  If it
      was parsed as assumed-size, change it because PARAMETERs can not
index c6c4b06..2a45ec1 100644 (file)
@@ -1,3 +1,8 @@
+2011-06-02  Asher Langton  <langton2@llnl.gov>
+
+       PR fortran/37039
+       * gfortran.dg/PR37039.f90: New test.
+
 2011-06-02  Nicola Pero  <nicola.pero@meta-innovation.com>
 
        PR objc/48539
diff --git a/gcc/testsuite/gfortran.dg/PR37039.f90 b/gcc/testsuite/gfortran.dg/PR37039.f90
new file mode 100644 (file)
index 0000000..6311f27
--- /dev/null
@@ -0,0 +1,15 @@
+! { dg-do compile }
+! { dg-options "-fcray-pointer" }
+!
+! Test for PR37039, from an issue on comp.lang.fortran
+! http://groups.google.com/group/comp.lang.fortran/msg/8cfa06f222721386
+
+      subroutine test(nnode) 
+      implicit none 
+      integer n,nnode 
+      pointer(ip_tab, tab) 
+      integer , dimension(1:nnode) :: tab 
+      do n=1,nnode 
+         tab(n) = 0 
+      enddo 
+      end subroutine test