Сбой программы при копировании массива с помощью ifort

Эта программа вылетает сIllegal instruction: 4 на MacOSX Lion и ifort (IFORT) 12.1.0 20111011

program foo
      real, pointer :: a(:,:), b(:,:)
      allocate(a(5400, 5400))
      allocate(b(5400, 3600))
      a=1.0
      b(:, 1:3600) = a(:, 1:3600)

      print *, a
      print *, b

      deallocate(a)
      deallocate(b)

end program 

Эта же программа работает с Gfortran. Я не вижу никаких проблем. Есть идеи ? Развертывание копии и выполнение явного цикла над столбцами работает в обоих компиляторах.

Обратите внимание, что с указателем вместо указателя у меня нет проблем.

Поведение такое же, если оператор находится внутри модуля или нет. Я подтверждаю то же поведение на ifort (IFORT) 12.1.3 20120130.

Видимо, с Linux и ifort 12.1.5 проблем не возникает

Я попытался увеличить размер стека с помощью следующих ссылок

ifort -Wl,-stack_size,0x40000000,-stack_addr,0xf0000000 test.f90

но я все еще получаю ту же ошибку. Увеличение ulimit-s к той же самой проблеме.

Редактировать 2: я сделал еще несколько отладок, и, по-видимому, проблема возникает, когда операция соединения массива

      b(:, 1:3600) = a(:, 1:3600)

включает в себя значение, подозрительно близкое к 16 М данных.

Я сравниваю полученные коды операций, но если есть способ увидеть промежуточную кодовую форму, которая является более коммуникативной, я с радостью это оценил бы.

Ответы на вопрос(2)

Ваш ответ на вопрос