前提・実現したいこと
fortran2008で、
- 「動的配列を成分に持つ構造体」の動的配列を成分に持つ構造体の操作
- submodule
を含むコードをgfortran (バージョン:4:7.4.0-1ubuntu2.3)でコンパイルしようとしたところ、以下のエラーが発生しました。
エラーが起こる理由とその対処法をご教授ください。
発生している問題・エラーメッセージ
test.f08:17:0: allocate(x%a(1)) internal compiler error: in fold_convert_loc, at fold-const.c:2397 Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
該当のソースコード
fortran2008
1module test 2 type, private :: vector 3 double precision, allocatable :: v(:) 4 end type 5 type, public :: array_vector 6 type(vector) , allocatable :: a(:) 7 end type 8 9 interface 10 module subroutine piyo 11 end subroutine piyo 12 end interface 13 14 contains 15 subroutine hoge(x) 16 type(array_vector), intent(inout) :: x 17 allocate(x%a(1)) 18 end subroutine hoge 19end module test 20 21submodule (test) test_sub 22 contains 23 module procedure piyo 24 end procedure piyo 25end submodule test_sub
試したこと
- 構造体を両方private、もしくは両方publicで定義する
- どちらかの構造体中にある配列を動的ではなく静的にする
- submoduleの使用をやめる
のいずれかを行うとコンパイルが通るようになりますが、理由は分かりません。
またallocate以外の配列操作を含む場合でも同様のコンパイルエラーが発生します。
あなたの回答
tips
プレビュー