[multiple changes]
authorJanus Weil <janus@gcc.gnu.org>
Tue, 29 Nov 2016 14:15:29 +0000 (15:15 +0100)
committerJanus Weil <janus@gcc.gnu.org>
Tue, 29 Nov 2016 14:15:29 +0000 (15:15 +0100)
2016-11-29  Tobias Burnus  <burnus@net-b.de>

PR fortran/58175
* resolve.c (gfc_resolve_finalizers): Properly detect scalar finalizers.

2016-11-29  Janus Weil  <janus@gcc.gnu.org>

PR fortran/58175
* gfortran.dg/finalize_30.f90: New test case.

From-SVN: r242960

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

index b6e82d75ed5c5cf64184303dfcc1438294413629..d0dd3063f9a8cbeb5340a56b55838914287175c9 100644 (file)
@@ -1,3 +1,8 @@
+2016-11-29  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/58175
+       * resolve.c (gfc_resolve_finalizers): Properly detect scalar finalizers.
+
 2016-11-27  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/78474
index 9e628f18a11a2a545e94d9b7f47cdc93daa00a76..152678fbe0b1c71d905c1b48d5bd929e413ff51e 100644 (file)
@@ -12395,6 +12395,9 @@ gfc_resolve_finalizers (gfc_symbol* derived, bool *finalizable)
       /* Skip this finalizer if we already resolved it.  */
       if (list->proc_tree)
        {
+         if (list->proc_tree->n.sym->formal->sym->as == NULL
+             || list->proc_tree->n.sym->formal->sym->as->rank == 0)
+           seen_scalar = true;
          prev_link = &(list->next);
          continue;
        }
@@ -12489,7 +12492,7 @@ gfc_resolve_finalizers (gfc_symbol* derived, bool *finalizable)
        }
 
        /* Is this the/a scalar finalizer procedure?  */
-       if (!arg->as || arg->as->rank == 0)
+       if (my_rank == 0)
          seen_scalar = true;
 
        /* Find the symtree for this procedure.  */
index 62f362a65b4c906a8558d76fa46b4d803405d118..6d7052451a33b14aab481d663b0c360175b6b06c 100644 (file)
@@ -1,3 +1,8 @@
+2016-11-29  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/58175
+       * gfortran.dg/finalize_30.f90: New test case.
+
 2016-11-29  Martin Liska  <mliska@suse.cz>
 
        PR gcov-profile/78582
diff --git a/gcc/testsuite/gfortran.dg/finalize_30.f90 b/gcc/testsuite/gfortran.dg/finalize_30.f90
new file mode 100644 (file)
index 0000000..281bfaa
--- /dev/null
@@ -0,0 +1,21 @@
+! { dg-do compile }
+! { dg-options "-Wsurprising" }
+!
+! PR 58175: [OOP] Incorrect warning message on scalar finalizer
+!
+! Contributed by Andrew Benson <abensonca@gmail.com>
+
+module ct
+  type :: a
+   contains
+     final :: aD
+  end type
+contains
+  subroutine aD(self)
+    type(a), intent(inout) :: self
+  end subroutine
+end module
+
+program test
+  use ct
+end