2

私は、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 コンパイラで正常にコンパイルできる人はいますか? エラーコードの意味を知っている人はいますか(私はそれを見つけることができませんでした)?

4

1 に答える 1

0

私の問題をオラクルに報告した後、私は彼らの答えを得ました:

ご報告いただきありがとうございます。問題をお詫び申し上げます。これは既知の問題です。現在の開発ではすでに修正されており、Studio 12.4 に移植されています。サポート契約を結んでいる場合は、そのための Studio 12.4 パッチを入手できます。それ以外の場合は、次のリリースに修正が含まれます。

于 2015-11-24T20:37:46.593 に答える