Я написал подпрограмму на фортране, которая использует какой-то устаревший код фортран 77 для конечных элементов.Тем не менее, с конкретной сеткой, когда флаг оптимизации -O включен, важный итератор цикла do-каким-то образом модифицируется, даже если Fortran предположительно это запрещает.Я скомпилировал этот код, используя gfortran4.5 с включенной проверкой -fcheck = do run-time, и он проверяет то, что я заметил выше.Ошибка во время выполнения возникает, только когда оптимизация включена и указывает непосредственно на итератор do.
Использование gdb в оптимизированном коде кажется (хотя и кажется ошибочным - строки, подпрыгивающие взад и вперед), явно указывает на то, чтоdo-iterator каким-то образом обнуляется, и, по сути, это вызывает хороший бесконечный цикл.
Любые предложения о том, как выследить и исправить то, что вызывает эту ошибку, были бы очень благодарны, как я хотел бычтобы весь проект можно было последовательно компилировать с одинаковыми флагами.