私は、Oracle Solaris Studio 12.4 スイート (私が知る限り最新のもの) の fortran コンパイラを使用して OO fortran コードをコンパイルしようとしています。しかし、コンパイラはクラッシュします。これが私の問題の簡略版です。
それぞれ 1 つの型バインド プロシージャを持つ 2 つの単純な型を定義します。プロシージャの 1 つに、仮引数として別の型の変数があります。
MODULE MY_MODULE
type type0
real :: value = 0
contains
procedure :: print_value
end type type0
type type1
real :: value = 0
contains
procedure :: print_diff
end type type1
CONTAINS
subroutine print_value(self)
class(type0), intent(in) :: self
print*, self%value
end subroutine print_value
subroutine print_diff(self,var0)
class(type1), intent(in) :: self
type(type0), intent(in) :: var0
print*,self%value - var0%value
end subroutine print_diff
END MODULE MY_MODULE
PROGRAM MY_PROG
use my_module, only: type0,type1
type(type0) :: var0
type(type1) :: var1
var0%value = 3
var1%value = 10
call var1%print_diff(var0)
END PROGRAM MY_PROG
このプログラムは、gfortran で正常にコンパイルおよび実行されます。
[> gfortran myprog.f03 -o myprog.x
[> ./myprog.x
7.0
ただし、Solaris f95 でのコンパイルはクラッシュします。
[> f95 myprog.f03 -o myprog.x
f90: Internal Error, code=fw-interface-ctyp1-796, last src=myprog.f03:4
ソース コードをさらに単純化すると、f95 は正常にコンパイルされます。たとえば、次の場合は正常に機能します。
type0
型にバインドされた手続きを持たないtype1
型にバインドされた手続きを持たない- 手続き
print_diff
は、以下以外の引数を持たないサブルーチンに置き換えられますself
私が間違っていることはありますか?Solaris コンパイラのインストールに問題はありますか? このコードを他の Solaris コンパイラで正常にコンパイルできる人はいますか? エラーコードの意味を知っている人はいますか(私はそれを見つけることができませんでした)?