That's a patch of the category: Make the testers happy (here: Dominque).

gfortran (in GCC 4.9) no longer frees allocatable at the end of the main program as they get implicitly the SAVE attribute (cf. Fortran 2008) - and that's now detectable due to finalizers.

Result: gfortran.dg/class_array_7.f03 now leaks memory, which clutters the valgrind output of the test suite. As the test itself is agnostic to a tailing deallocate, I added one.

Committed as Rev. 201137.

Tobias
Index: gcc/testsuite/ChangeLog
===================================================================
--- gcc/testsuite/ChangeLog	(Revision 201136)
+++ gcc/testsuite/ChangeLog	(Arbeitskopie)
@@ -1,3 +1,8 @@
+2013-07-22  Tobias Burnus  <bur...@net-b.de>
+
+	PR fortran/57762
+	* gfortran.dg/class_array_7.f03: Fix memory leak.
+
 2013-07-22  Paolo Carlini  <paolo.carl...@oracle.com>
 
 	PR c++/52816
Index: gcc/testsuite/gfortran.dg/class_array_7.f03
===================================================================
--- gcc/testsuite/gfortran.dg/class_array_7.f03	(Revision 201136)
+++ gcc/testsuite/gfortran.dg/class_array_7.f03	(Arbeitskopie)
@@ -54,4 +54,5 @@ program main
   if (trim (print_type ("a", a)) .ne. "a is extended_type") call abort
   call reallocate (a)
   if (trim (print_type ("a", a)) .ne. "a is base_type") call abort
+  deallocate (a)
 end program main
module VEC_REAL_MODULE
contains
   pure function VEC_REAL_norm(self) result(res)
     real, dimension(:), intent(in) :: self
     res = self(1)
   end function
   function MAT_REAL_row_norms(self) result(res)
      real, dimension(:,:) :: self
      real, dimension(size(self,1)) :: res
      do i = 1,size(self,1)
         res(i) = VEC_REAL_norm(self(i,:))
      end do
   end function
   pure subroutine MAT_REAL_zero_small_values(self,eps)
   real(8), dimension(:,:) :: self
      intent(inout) :: self
      real(8), intent(in) :: eps
      where (abs(self)<eps)
      end where
   end subroutine
end module

Reply via email to