Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!
26755 Discussions

Internal compiler error : Allocatable with Parameterized Derived Types

Wei_J_3
Beginner
103 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
103 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

 

Kevin_D_Intel
Employee
103 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)

Reply