]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/47054 (Compilation error when cray pointers are declared in both host...
authorSteven G. Kargl <kargl@gcc.gnu.org>
Sat, 5 Oct 2019 15:42:25 +0000 (15:42 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Sat, 5 Oct 2019 15:42:25 +0000 (15:42 +0000)
2019-10-05  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/47054
* decl.c (variable_decl): Do not search parent namespace for symbol.

2019-10-05  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/47054
* gfortran.dg/pr47054_1.f90: New test
* gfortran.dg/pr47054_2.f90: Ditto.

From-SVN: r276628

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

index e77a9e10526aa7863d01efac4f42f97992949b86..4c9a1122285cf251d3ac6c68eeb8d1283d5ca76b 100644 (file)
@@ -1,3 +1,8 @@
+2019-10-05  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/47054
+       * decl.c (variable_decl): Do not search parent namespace for symbol.
+
 2019-10-04  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/91942
index b497b760bbad9621b53653f46bcb02dc79395bd0..9beb4eef455293601ca022ab31be7974f8ae8313 100644 (file)
@@ -2649,7 +2649,7 @@ variable_decl (int elem)
       then we want to set the type & bail out.  */
   if (flag_cray_pointer && !gfc_comp_struct (gfc_current_state ()))
     {
-      gfc_find_symbol (name, gfc_current_ns, 1, &sym);
+      gfc_find_symbol (name, gfc_current_ns, 0, &sym);
       if (sym != NULL && sym->attr.cray_pointee)
        {
          m = MATCH_YES;
index cd81e5305ac72643c1e65cad8d15cd830bdac5db..1d049689fc9a819a556324470f93384c0adcc87b 100644 (file)
@@ -1,4 +1,10 @@
-2019-10-04  Steven G. Kargl  <kargl@gcc.gnu.org>
+2019-10-05  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/47054
+       * gfortran.dg/pr47054_1.f90: New test
+       * gfortran.dg/pr47054_2.f90: Ditto.
+
+2019-10-05  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/91942
        * gfortran.dg/pr91587.f90: Update dg-error regex.
diff --git a/gcc/testsuite/gfortran.dg/pr47054_1.f90 b/gcc/testsuite/gfortran.dg/pr47054_1.f90
new file mode 100644 (file)
index 0000000..3665edb
--- /dev/null
@@ -0,0 +1,15 @@
+! { dg-do compile }
+! { dg-options "-fcray-pointer" }
+! PR fortran/47054
+subroutine host_sub
+   implicit none
+   real xg
+   pointer (paxg, xg)
+   call internal_sub
+   contains 
+      subroutine internal_sub
+         implicit none
+         real xg
+         pointer (paxg, xg)
+      end subroutine internal_sub
+end subroutine host_sub
diff --git a/gcc/testsuite/gfortran.dg/pr47054_2.f90 b/gcc/testsuite/gfortran.dg/pr47054_2.f90
new file mode 100644 (file)
index 0000000..3b7c4aa
--- /dev/null
@@ -0,0 +1,41 @@
+! { dg-do compile }
+! { dg-options "-fcray-pointer" }
+! PR fortran/47054
+! Code contributed by Deji Akingunola <deji_aking at yahoo dot ca>
+subroutine host_sub(F_su,F_nk)
+   implicit none
+   
+   integer :: F_nk
+   real,dimension(F_nk) :: F_su
+      integer G_ni, G_nj
+      real*8 G_xg_8, G_yg_8
+      pointer (paxg_8, G_xg_8(G_ni))
+      pointer (payg_8, G_yg_8(G_nj))
+      common / G_p / paxg_8,payg_8
+      common / G / G_ni, G_nj
+   
+   call internal_sub(F_su,F_nk)
+   return
+contains 
+   
+   subroutine internal_sub(F_su,F_nk)
+      implicit none
+      integer G_ni, G_nj
+      real*8 G_xg_8, G_yg_8
+      pointer (paxg_8, G_xg_8(G_ni))
+      pointer (payg_8, G_yg_8(G_nj))
+      common / G_p / paxg_8,payg_8
+      common / G / G_ni, G_nj
+     
+      integer :: F_nk
+      real,dimension(F_nk) :: F_su 
+      integer k,k2
+      
+      k2 = 0
+      do k = 1, F_nk, 2
+         k2 = k2+1
+               F_su(k) = F_su(k) + 1.0
+      enddo
+      return
+   end subroutine internal_sub
+end subroutine host_sub