False negative in subroutine allocation

False negative in subroutine allocation

Why Inspector does not indicate an error when not deallocate a matrix in a subroutine?

   PROGRAM main_tst
      INTEGER, PARAMETER          :: n1 = 5000
      INTEGER, PARAMETER          :: n2 = 1000
      REAL   , ALLOCATABLE        :: mat(:,:)

      ALLOCATE(mat(n1, n2))
      mat = 5.
      CALL sbrt_tst(n1, n2, mat)
      WRITE(*,*) mat(1:5,1)
   END PROGRAM main_tst

   SUBROUTINE sbrt_tst(n1, n2, mat__in)
      INTEGER, INTENT(IN   ) :: n1
      INTEGER, INTENT(IN   ) :: n2
      REAL   , INTENT(INOUT) :: mat__in(n1, n2)

      REAL, ALLOCATABLE           :: mat_aux(:,:)

      ALLOCATE(mat_aux(n1, n2))
      mat_aux = n1*n2
      mat__in = mat__in + mat_aux
   END SUBROUTINE sbrt_tst

I compiled and ran this way:

$ ifort -o ./main_tst ./main_tst.f90 -shared-intel -shared-libgcc -O0 -g
$ inspxe-cl -collect mi3 -r r000mi3 ./main_tst

The output was:

5000005.       5000005.       5000005.       5000005.       5000005.

0 new problem(s) found



4 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.


Seems like an issue. I'm going to file a bug report

Thank you for reporting..


Do you have any news about this issue?

Btw, my company has a paid license. Is there any other way to get more information about this bug report via the Online Service Center?

Thank you!


Yes. If you can file a support request for the Inspector product. Here is a link to an article that will assist you.


Let them know you and about your forum post and also let them know that I had filed a bug report.



Leave a Comment

Please sign in to add a comment. Not a member? Join today