Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

ICE: Error for submodule with functions using format "Module Procedure" -> "End Procedure"

FlyingHermes
New Contributor I
493 Views

Hi, the following code produces an ICE.

Module MyModule
  implicit none
  private
  Type ,public  ::  MyType
    integer     ::  N = 2
  contains
    procedure   ::  DoSomething
  End Type
  Interface
    Pure Module Function DoSomething( This, Inp ) result(Out)
      class(MyType)               ,intent(in) :: This
      integer ,dimension(This%N)  ,intent(in) :: Inp
      integer ,dimension(This%N)              :: Out
    End Function
  End Interface
End Module

Submodule(MyModule) MySubModule
  implicit none
  contains
! !   WORKS
!     Pure Module Function DoSomething( This, Inp ) result(Out)
!       class(MyType)               ,intent(in) :: This
!       integer ,dimension(This%N)  ,intent(in) :: Inp
!       integer ,dimension(This%N)              :: Out
!       Out = Inp * This%N
!     End Function
!   DO NOT WORKS
    Module Procedure DoSomething
      Out = Inp * This%N
    End Procedure
End Submodule

Program Main
  use MyModule ,only: MyType
  type(MyType)  :: Obj
  write(*,* ) Obj%DoSomething([1,2])
End Program

using ifort version 17.0.4.

The error comes from the "Module Procedure" ... "End Procedure" form for declaring submodule procedures.

If The procedure interface is repeated, then the error goes away.

I thought initially that this error was related to issue DPD200413234.

See https://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/707181.

 

0 Kudos
5 Replies
FortranFan
Honored Contributor II
493 Views

It's unfortunate but the problem is present in Intel Fortran compiler 18 Beta as well.

@FlyingHermes,

If you follow other threads, you may have noticed Intel now expects you to submit an incident for issues of interest to you at the Intel Online Service Center (OSC):

https://supporttickets.intel.com/?lang=en-US

The forum can help with discussions and so forth.  But note reporting an ICE on the forum may no longer lead to a tracking incident with the development.

If you're keen on someone from Intel to look at this ICE, your best bet will be to submit it at the OSC.

0 Kudos
FlyingHermes
New Contributor I
493 Views

Thanks FortranFan.

The ICE has been reported on Intel OSC.

I indeed wasn't sure if this forum was still the good place for reporting such issue.

 

0 Kudos
Johannes_Rieke
New Contributor III
493 Views

Thanks FlyingHermes for the report. I appreciate it very much to have 'issues' reported here in the forum too because at the moment, we customers have no other possibility to see, if issues are already filed or not. This knowledge helps me, not to spend more time than necessary to file an issue on OSC or to think on workarounds. Hopefully there's time enough for the Intel team to fix it for PSXE 18 release. Good luck, Johannes

0 Kudos
Steve_Lionel
Honored Contributor III
493 Views

Just keep in mind that it's often not possible to know if you have the exact same issue for an ICE and if you encounter an ICE your first step should be to report it to Intel. Simply posting in the forum and hoping it will be picked up, or worse, seeing another thread that you think is the same problem and waiting for the fix, is counterproductive.

0 Kudos
Devorah_H_Intel
Moderator
493 Views

FlyingHermes wrote:

 

The ICE has been reported on Intel OSC.

Thank you for reporting the bug on OSC. Unfortunately, there is not enough time to fix it for 18.0 initial release. However, the fix will be included in future releases.

 

0 Kudos
Reply