Visious complier bug...

Visious complier bug...

imagem de flying_hermes

Hi,

I've attached a compressed file containing the source code which reproduce a compiler bug. I've done my best to try to isolate the lines of code which trigger the bug.

The bug seems to be linked to the use statement. For example, the following implementation of the DataTmp_Class procedure results in a compiler bug:

Module DataTmp_Class
  
  implicit none
  private
  
  public        DataTmp_Type
  Type                          ::      DataTmp_Type
  contains                                           
    procedure   ,private        ::      Set_Var1 
    procedure   ,private        ::      Set_Var2
    procedure   ,private        ::      Set_Var3 
  End Type
  contains
Subroutine Set_Var1( This, AllData )
  use AllData_Class              ,only:  AllData_Type
  implicit none
  class(DataTmp_Type)  ,intent(inout)  ::      This
  type(AllData_Type)    ,dimension(:)   ,intent(in)     ::      AllData
End Subroutine
Subroutine Set_Var2( This, AllData )
  use AllData_Class              ,only:  AllData_Type
  implicit none
  class(DataTmp_Type)  ,intent(inout)  ::      This
  type(AllData_Type)    ,dimension(:)   ,intent(in)     ::      AllData
End Subroutine
Subroutine Set_Var3( This, AllData )
  use AllData_Class              ,only:  AllData_Type
  implicit none
  class(DataTmp_Type)  ,intent(inout)  ::      This
  type(AllData_Type)    ,dimension(:)   ,intent(in)     ::      AllData
End Subroutine
End Module

whereas this one doesn't:

Module DataTmp_Class
  
  use AllData_Class              ,only:  AllData_Type
  
  implicit none
  private
  
  public        DataTmp_Type
  Type                          ::      DataTmp_Type
  contains                                           
    procedure   ,private        ::      Set_Var1 
    procedure   ,private        ::      Set_Var2
    procedure   ,private        ::      Set_Var3 
  End Type
  contains
Subroutine Set_Var1( This, AllData )
!   use AllData_Class              ,only:  AllData_Type
  implicit none
  class(DataTmp_Type)  ,intent(inout)  ::      This
  type(AllData_Type)    ,dimension(:)   ,intent(in)     ::      AllData
End Subroutine
Subroutine Set_Var2( This, AllData )
!   use AllData_Class              ,only:  AllData_Type
  implicit none
  class(DataTmp_Type)  ,intent(inout)  ::      This
  type(AllData_Type)    ,dimension(:)   ,intent(in)     ::      AllData
End Subroutine
Subroutine Set_Var3( This, AllData )
!   use AllData_Class              ,only:  AllData_Type
  implicit none
  class(DataTmp_Type)  ,intent(inout)  ::      This
  type(AllData_Type)    ,dimension(:)   ,intent(in)     ::      AllData
End Subroutine
End Module

The difference between the two implementation is that AllData_Type type is made accessible through host association to the entire module instead that to each individual procedures.

Note that the initial error message (also related to a compiler bug) was not the one I have now, after having reduced to code to a minimum example. I guess the two bugs are connected but I'm not sure. This initial bug was located in the MainObj_Class file (at least, that what the error message was saying) and it was vanishing if I was removing the AllData structure of type AllData_Type.

I hope I'm clear enougth.

AnexoTamanho
Download compiler-bug.tar.gz1.77 KB
3 posts / 0 new
Último post
Para obter mais informações sobre otimizações de compiladores, consulte Aviso sobre otimizações.
imagem de Steve Lionel (Intel)

Thanks - I can reproduce the error and will escalate it to the developers. Issue ID is DPD200240402.

Steve
imagem de Steve Lionel (Intel)

This was fixed in update 4 or 5.

Steve

Faça login para deixar um comentário.