------- Comment #7 from pault at gcc dot gnu dot org  2008-06-18 07:15 -------
(In reply to comment #6)

> However, this is not different from 4.3. Using NAG f95, I get:
>   Warning: line 26: REAL value for INTEGER PARAMETER
>   Error:Explicit interface required for CHECK_INTEGER4_RANK1 from ARRAY_TEST -
> argument EXPECTED (no. 1) is an assumed-shape array
duuuh!

Lahey...

Compiling program unit CHECK_INTEGER4_RANK1 at line 1:
Compiling program unit array_test at line 19:
  2615-S: "SOURCE.F90", line 29: The procedure 'CHECK_INTEGER4_RANK1' shall
have an explicit interface, because it contains the assumed shape array
'EXPECTED'. The previous definition is in 'line 14'.
  2615-S: "SOURCE.F90", line 29: The procedure 'CHECK_INTEGER4_RANK1' shall
have an explicit interface, because it contains the assumed shape array
'COMPUTED'. The previous definition is in 'line 14'.
Encountered 2 errors, 0 warnings, 0 informations in file SOURCE.F90.
Compiling file SOURCE.F90.

Another case where same file checking would come in handy.

Compiling with -m32 on my system reproduces the bus error.  Adding the
interface, thusly:

!module CHECK_SEM

! Submitted by Walt Brainerd, The Fortran Company
! GNU Fortran 95 (GCC 4.1.0 20050322 (experimental))
! Windows XP

! Produces "a.exe has encountered a problem" window.

! Same problem if comments are removed so that
!    the function is in a module.

!  contains

function CHECK_INTEGER4_RANK1 (EXPECTED, COMPUTED)
  integer(4), dimension(:), intent(in) ::  EXPECTED, COMPUTED
  logical  :: CHECK_INTEGER4_RANK1
  CHECK_INTEGER4_RANK1 = all(COMPUTED == EXPECTED)
end function CHECK_INTEGER4_RANK1

!end module CHECK_SEM

program array_test
!use CHECK_SEM
  logical :: CHECK_INTEGER4_RANK1

  integer,dimension(-1:1,-1:1)      :: mis1=1 
  logical,dimension(-1:1,-1:1)      :: ml2=.true.
  interface
    function CHECK_INTEGER4_RANK1 (EXPECTED, COMPUTED)
      integer(4), dimension(:), intent(in) ::  EXPECTED, COMPUTED
      logical  :: CHECK_INTEGER4_RANK1
    end function CHECK_INTEGER4_RANK1
  end interface

  print *, CHECK_INTEGER4_RANK1 (sum(mis1,dim=1,mask=ml2), (/8,5,12/))

end program array_test

Makes it work fine for -m32 and -m64.

Dominique, if that does not do it for you, remodify the summary line and
keywords as appropriate.

Cheers

Paul

PS Jerry, sorry for fingering you falsely! :) 


-- 

pault at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pault at gcc dot gnu dot org
           Keywords|                            |diagnostic, ice-on-invalid-
                   |                            |code
            Summary|[4.4 Regression] regression |Missing interface not
                   |due to revision 136821      |detected in call to same
                   |                            |file function


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

Reply via email to