Это ошибка в GFortran 10? - PullRequest
1 голос
/ 01 мая 2020

Возможно, я обнаружил ошибку в GFortran 10.

Это минимальный пример:

program main

  complex(8) :: x(4)

  x = 1.d0

  call print_first_element( x(4:1:-1)*x(1:4) )

  contains

  subroutine print_first_element (array)

    complex(8), intent(in) :: array(:)

    print*, array(1)

  end

end

Скомпилировано с gfortran -O3 main.f90 и выполнено, оно дает

(0.0000000000000000,0.0000000000000000)

в то время как я ожидал бы результат

(1.0000000000000000,0.0000000000000000)

Странно, он работает как и ожидалось с любым из следующего:

  1. Изменение флага оптимизации с -O3 на любой -O2, -O1 или -O0.

  2. Использование real(8) или integer вместо complex(8).

  3. Инициализация как complex(8) :: x(4) = [1.d0,1.d0,1.d0,1.d0].

Операционная система и версия G CC:

  1. Fedora 32.

  2. Вывод gfortran --version равен GNU Fortran (GCC) 10.0.1 20200328.

Вы согласны, что это ошибка?

...