Катастрофическая ошибка с ifort при выделении параметрического объявленного типа в объявленном типе - PullRequest
0 голосов
/ 24 января 2019

Пожалуйста, рассмотрите следующий код

  module t_test
     implicit none

     type ttt(tsize)
        integer, len :: tsize
        real x(tsize)
     end type ttt



  type :: t_rndom_diameter(t_rsize,t_csize)
      integer, len :: t_rsize,t_csize
      real :: x(t_rsize,t_csize)
     type(ttt(tsize=:)), allocatable :: test_type
  end type t_rndom_diameter




  end module t_test


  program p_test
  USE t_test
  implicit none

  type(t_rndom_diameter(t_rsize=3,t_csize=3)) :: gdad

  allocate(gdad% ttt(tsize=10) ::  gdad % test_type)


  end program

это дает мне катастрофическую ошибку без упоминания, что это за ошибка:

catastrophic error: **Internal compiler error: segmentation violation signal raised** Please
report this error along with the circumstances in which it occurred in a Software Problem
Report.  Note: File and line given may not be explicit cause of this error.

Однако я знаю, что вызывает эту ошибку, а именно: allocate(gdad% ttt(tsize=10) :: gdad% test_type)

Что это значит?

Я тоже пробовал без gdad, т.е. allocate(gdad% ttt(tsize=10) :: test_type)

1 Ответ

0 голосов
/ 17 февраля 2019

Как обычно, «внутренняя ошибка компилятора» связана с ошибкой в ​​компиляторе. Об этом следует сообщить поставщику компилятора.

Однако в этом случае это будет проблемой с низким приоритетом: код, который вы пытаетесь скомпилировать, недействителен. Как уже отмечалось, проблемная линия -

allocate(gdad% ttt(tsize=10) ::  gdad % test_type)

Это недопустимо, потому что эта форма оператора allocate требует спецификатора типа в левой части. gdad%ttt(10) не такая вещь. Правильное утверждение будет

allocate(ttt(tsize=10) ::  gdad % test_type)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...