LINUX.ORG.RU

gfortran зависает при попытке компиляции простейшей программы из восьми строчек

 ,


0

1

При попытке собрать старую программу gfortran ушел в вечный цикл. После редукции текста удалось получить 8 строчек вешающих компилятор.

CHARACTER*1 FUNCTION test(H)
     CHARACTER*1 test2,TR,aTP
      
     ENTRY test2(L)
     CALL ttest3(aTP)
     test = TR
     RETURN

     END

Самое подлое, что компилятор не выдаёт ошибки, а зависает. При этом зависает именно на сочетании ENTRY, объявления переменных одной строкой и вызова функции ttest3. Хотя она никак логически не связана с другими частями программы.

Проверено на 6 и 7 версиях gfortrana. Ну и на MINGW. Ничего не изменилось при изменении -std={any_std}

Хотел отписаться в багтрекер GCC, но там регистрация закрыта.



Последнее исправление: gvozdila (всего исправлений: 1)

Хотел отписаться в багтрекер GCC, но там регистрация закрыта.

If creating an account fails, contact gcc-bugzilla-account-request@gcc.gnu.org to request a GCC Bugzilla account. You should receive a response within 24 hours.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

Ага, через пару дней будет аккаунт. Еще через пару доберусь до компьютера и смогу все туда положить.

Но непонятно уже сейчас! Какого черта он виснет? Что компилятор внутри себя напридумывал про эти 8 строчек? И, главное, если вносить малейшие изменения, то копилятор начинает по-другому реагировать. Я уже всю голову себе сломал.

gvozdila
() автор топика

Проверил на своём старье: gfortan-6.4.0 повесился, ifort-10.0 скомпилировал. Сам по-моему никогда не использовал ENTRY, не подскажу ничего. Зато всегда использовал IMPLICIT NONE, многих проблем и ошибок помогает избежать.

WerNA ★★★★★
()
Последнее исправление: WerNA (всего исправлений: 1)
Ответ на: комментарий от WerNA

Да в том и дело! Интеловский собирает, причём многие его версии. Да и у gfortran-а нет претензий на этапе проверки синтаксиса. Какой-то бред О_о

gvozdila
() автор топика
Ответ на: комментарий от gvozdila

Так это баг компилятора, тут особо нечего понимать. Может в какой-то момент в одном из графов появился цикл и его обработка никогда не завершается, а может где-то в другом месте. Это надо под отладчиком смотреть.

xaizek ★★★★★
()
Ответ на: комментарий от WerNA

IMPLICIT NONE тут не должен влиять. Все определено, кроме аргументов. Они в оригинале были массивами, (dimension L(*) и тд). Но это не особо влияет на поведение.

gvozdila
() автор топика

gcc просто нежно намекает, что не стоит использовать entry

aedeph_ ★★
()
Ответ на: комментарий от sf

Спасибо! А то мне до сих пор не создали аккаунт. Совсем их, видать, спамеры заели.

gvozdila
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.