- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Dear Fortran Masters,
The code below is given an internal compiler error (C0000005). It seems valid Fortran 2003 to me. The idea of the code is to know the dimensions of the internal arrays of the "stream" data type when the function Solve is called by data types extending taUoO.
The error is obtained using the XE 2015 Composer Edition (latest update).
Thank you in advance, Javier
module mod_UoOAbstract implicit none public :: taUoO, stream private type, abstract :: taUoO integer :: isReady = .false. contains procedure(Solve), nopass, deferred :: Solve end type taUoO type :: stream(nc) integer, len :: nc real(8) :: T real(8) :: P real(8) :: nF(nc) real(8) :: zn(nc) real(8) :: beta real(8) :: h end type stream ! Define calling function prototypes. Concrete subroutines must ! be implemented for the extending types abstract interface ! Stream type is not visible inside the interface, hence it has to be imported subroutine Solve(nc, nFeeds, nProds, nExtns, nParms, feeds, prods, extns, parms) Import stream integer, intent(in) :: nc integer, intent(in) :: nFeeds integer, intent(in) :: nProds integer, intent(in) :: nExtns integer, intent(in) :: nParms type(stream(nc)), intent(inout) :: feeds(nFeeds) type(stream(nc)), intent(inout) :: prods(nProds) type(stream(nc)), intent(inout) :: extns(nExtns) real(8), intent(in) :: parms(nParms) end subroutine Solve end interface end module mod_UoOAbstract
コピーされたリンク
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Just in case (error message)
Compiling with Intel(R) Visual Fortran Compiler XE 15.0.4.221 [IA-32]... mod_UoOAbstract.f90 fortcom: Fatal: There has been an internal compiler error (C0000005). compilation aborted for ...\mod_UoOAbstract.f90 (code 1)
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Thanks - I can reproduce this and will let the developers know. Even if the code was not valid, an internal compiler error is never acceptable. Issue ID is DPD200372386.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Out of curiosity: why do you initialize an integer variable with a logical expression?
integer :: isReady = .false.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Thanks - I can reproduce this and will let the developers know. Even if the code was not valid, an internal compiler error is never acceptable. Issue ID is DPD200372386.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Dear mecej4, good observation. isReady should have been declared as logical not as integer. This is a typo from my side. Still the compiler did not complain!
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Mixing numeric and logical is an extension - not a very nice one, but it goes back decades. If you enabled standards checking it would complain. However, this is not relevant to the compiler error.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
The cited compiler error is still present in XE 15.0.5.280
Compiling with Intel(R) Visual Fortran Compiler XE 15.0.5.280 [IA-32]... mod_UoOAbstract.f90 fortcom: Fatal: There has been an internal compiler error (C0000005).
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Yes, there is no resolution to the internal error yet in the noted Issue ID filed by Steve.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
This bug has now been fixed - I expect the fix to be included in compiler version 17.0.1 (Update 1 to Parallel Studio XE 2017).
