re PR fortran/37039 (Cray pointer with pointee DIMENSION statement after POINTER...
authorAsher Langton <langton2@llnl.gov>
Thu, 2 Jun 2011 21:36:02 +0000 (21:36 +0000)
committerAsher Langton <langton@gcc.gnu.org>
Thu, 2 Jun 2011 21:36:02 +0000 (21:36 +0000)
    * decl.c (variable_decl): Merge current_as before copying to cp_as.

    * gfortran.dg/PR37039.f90: New test.

From-SVN: r174582

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

index e7b567e6337dabec8e6b1ae986827fa08f3a8e66..fec047ed63b2389227e93e81595404ba5791bae6 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 f9141567450bf497d1d18e0dddb0fb254b8b74b3..7098368e56efab9511f13de86055fb46926885a2 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 c6c4b068366cecdf4ac8d7a8c8448f8824ac8d59..2a45ec1c57ad929872ab52c98d61a460037d4432 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