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

Internal compiler error : Allocatable with Parameterized Derived Types

Wei_J_3
Beginner
253 Views

------ Build started: Project: ICEBug20170521, Configuration: Debug|Win32 ------

Compiling with Intel(R) Visual Fortran Compiler 17.0.1.143 [IA-32]...
ICE.f90
E:\20160922\Program\20170520DiagNew\20170520DiagNew\ICE.f90(1): catastrophic error: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occurred in a Software Problem Report.  Note: File and line given may not be explicit cause of this error.
compilation aborted for E:\20160922\Program\20170520DiagNew\20170520DiagNew\ICE.f90 (code 1)


Module ModuleDiagnosticsMomentum
    Implicit none
    
                 Type :: Grid1D(Nx,Ns)
                        Integer(4),Len :: Nx=NxMax,Ns=1_4
                        Real(8) ::  Value(1:Nx,1:Ns)
                        Integer(4) :: NameIndex=10000
                        Integer(4) :: NsIndex=1
                        Real(8) :: Dx=1.d0
              End Type Grid1D
        
    Type DiagnosticsControlFlow
           Integer(4) :: DiagnosticsModel=1
           Real(8)  :: Nx=1,Ny=1,Ns=1
           Real(8)  :: Dx,Dt
           Integer(4) :: StepStart=1,StepEnd=1,NDiagStep=0
           Integer(4) :: NDiagTotal=1,NDiagInterval=1
     End Type DiagnosticsControlFlow
        
    Type DiagnosticsMomentum
            Type(DiagnosticsControlFlow) :: DCF
            Type(Grid1D(Nx=:,Ns=:)),Allocatable :: G1D
    Contains
             Procedure :: Init=>DiagParticleFieldPeriodInitialization
    EndType DiagnosticsMomentum
    
    !Type(DiagnosticsMomentum),Allocatable :: DiagnosticsMomentumLocal
    
    Contains
    
    Subroutine  DiagParticleFieldPeriodInitialization(DM,DCF)
         Implicit none
         Class(DiagnosticsMomentum) :: DM
         Type(DiagnosticsControlFlow),intent(in) :: DCF
         DM%DCF=DCF
         Allocate(Grid1D(Nx=DCF%Nx,Ns=DCF%Ns)::DM%G1D)
    End Subroutine  DiagParticleFieldPeriodInitialization
    
ENd Module ModuleDiagnosticsMomentum

 

0 Kudos
2 Replies
Wei_J_3
Beginner
253 Views

Other case of ICE

------ Build started: Project: ICEBug20170521, Configuration: Debug|Win32 ------

Compiling with Intel(R) Visual Fortran Compiler 17.0.1.143 [IA-32]...
ICE2.f90
E:\20160922\Program\ICEBug20170521\ICEBug20170521\ICE2.f90(1): catastrophic error: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occurred in a Software Problem Report.  Note: File and line given may not be explicit cause of this error.
compilation aborted for E:\20160922\Program\ICEBug20170521\ICEBug20170521\ICE2.f90 (code 1)

Build log written to  "file://E:\20160922\Program\ICEBug20170521\ICEBug20170521\Debug\BuildLog.htm"
ICEBug20170521 - 1 error(s), 0 warning(s)

 

Module ModuleDiagnosticsMomentum
    Implicit none
        Type ParticleMomentumOne(Nx)
                        Integer(4),Len :: Nx=NxMax
                        Integer(4) :: Timer=0
                        Real(8) ::  RhoOne(1:Nx),ChiOne(1:Nx)
                        Real(8) ::  JxOne(1:Nx),JyOne(1:Nx),JzOne(1:Nx)
                        Real(8) ::  TOne(1:Nx)
        EndType ParticleMomentumOne
        
      Type DiagnosticsControlFlow
           Integer(4) :: DiagnosticsModel=1
           Real(8)  :: Nx=1,Ny=1,Ns=1
           Real(8)  :: Dx,Dt
           Integer(4) :: StepStart=1,StepEnd=1,NDiagStep=0
           Integer(4) :: NDiagTotal=1,NDiagInterval=1
     End Type DiagnosticsControlFlow

        Type(ParticleMomentumOne(Nx=:)),Allocatable :: PMOOne,PMOSum

        
    Contains
         
        Subroutine  DiagParticleFieldPeriodInitialization(DCF)
          Implicit none
          Type(DiagnosticsControlFlow),intent(in) :: DCF
          Allocate(ParticleMomentumOne(Nx=DCF%Nx) :: PMOOne)
        End Subroutine  DiagParticleFieldPeriodInitialization   
End Module ModuleDiagnosticsMomentum

But It compiles with a small mocification:

Module ModuleDiagnosticsMomentum
    Implicit none
        Type ParticleMomentumOne(Nx)
                        Integer(4),Len :: Nx=NxMax
                        Integer(4) :: Timer=0
                        Real(8) ::  RhoOne(1:Nx),ChiOne(1:Nx)
                        Real(8) ::  JxOne(1:Nx),JyOne(1:Nx),JzOne(1:Nx)
                        Real(8) ::  TOne(1:Nx)
        EndType ParticleMomentumOne
        
      Type DiagnosticsControlFlow
           Integer(4) :: DiagnosticsModel=1
           Real(8)  :: Nx=1,Ny=1,Ns=1
           Real(8)  :: Dx,Dt
           Integer(4) :: StepStart=1,StepEnd=1,NDiagStep=0
           Integer(4) :: NDiagTotal=1,NDiagInterval=1
     End Type DiagnosticsControlFlow

        Type(ParticleMomentumOne(Nx=:)),Allocatable :: PMOOne,PMOSum

        
    Contains
         
        Subroutine  DiagParticleFieldPeriodInitialization(DCF)
          Implicit none
          Type(DiagnosticsControlFlow),intent(in) :: DCF
          Integer(4) :: Nx
          Nx=DCF%Nx
          Allocate(ParticleMomentumOne(Nx=Nx) :: PMOOne)
        End Subroutine  DiagParticleFieldPeriodInitialization   
End Module ModuleDiagnosticsMomentum

 

0 Kudos
Kevin_D_Intel
Employee
253 Views

Thank you for reporting this internal error and for the concise reproducer. I confirmed the error and reported this to our Developers. I am seeing successful compilation with newer internal 18.0 compilers so it is possible this relates to a previously reported issue that has been fixed.

(Internal tracking id: CMPLRS-43169)

0 Kudos
Reply