http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53326

--- Comment #1 from Arnaud Desitter <arnaud02 at users dot sourceforge.net> 
2012-05-11 17:31:12 UTC ---
Consider:
>cat UIN15-int.f
!! check whether uninitialised variables are detected
!! for INTENT(OUT) arrays
      program uin
      integer x(10)
      x = 2
      call sub2(x,size(x))      ! x undefined on return
      write(*,*) x(1)
      end
      subroutine sub2(x,n)
      integer, intent(in) :: n
      integer, intent(out) ::  x(n)
      end
>gfortran470 -finit-integer=10 UIN15-int.f
abg-ecldev01:/tmp/arnaud>./a.out
           2

>cat UIN15-double.f
!! check whether uninitialised variables are detected
!! for INTENT(OUT) arrays
      program uin
      double precision x(10)
      x = 2
      call sub2(x,size(x))      ! x undefined on return
      write(*,*) x(1)
      end
      subroutine sub2(x,n)
      integer, intent(in) :: n
      double precision, intent(out) ::  x(n)
      end
>gfortran470 -finit-real=snan UIN15-double.f
>./a.out
   2.0000000000000000

As seen above, -finit-real and -finit-integer have no effect on INTENT(OUT)
variables. This would be a nice and useful improvement.
Note that the NAG compiler ("-nan") and the Sun compiler ("-xcheck=init_local
-stackvar") implement this feature.

(tests "UNI15" of http://ftp.aset.psu.edu/pub/ger/fortran/test/results.txt are
related)

Reply via email to