Spec-Zone.ru › GNU Fortran 13

2.2 Опции управления диалектом Fortran

Следующие опции управляют деталями диалекта Fortran, принимаемого компилятором:

-ffree-form
-ffixed-form

Укажите макет, используемый исходным файлом. Макет свободного формата был введен в Fortran 90. Фиксированный формат традиционно использовался в более старых программах Fortran. Если ни один из вариантов не указан, формат исходного кода определяется расширением файла.

-fall-intrinsics

Эта опция заставляет принимать все встроенные процедуры (включая расширения, специфичные для GNU). Это может быть полезно при использовании -std= для обеспечения соответствия стандарту, но при этом получить доступ ко всему диапазону встроенных функций, доступных с помощью gfortran. В результате, -Wintrinsics-std будет проигнорирован, и ни одна пользовательская процедура с тем же именем, что и любая встроенная функция, не будет вызвана, за исключением случаев, когда она явно объявлена EXTERNAL.

-fallow-argument-mismatch

Некоторые коды содержат вызовы внешних процедур с несоответствиями между вызовами и определением процедуры или с несоответствиями между различными вызовами. Такой код не соответствует стандарту и обычно будет отмечен ошибкой. Данная опция понижает ошибку до предупреждения, которое можно отключить только отключением всех предупреждений с помощью -w. Однократное появление ошибки на аргумент отмечается этим предупреждением. -fallow-argument-mismatch подразумевается при -std=legacy.

Использование этой опции настоятельно не рекомендуется. Можно предоставить код, соответствующий стандарту, который допускает различные типы аргументов, используя явный интерфейс и TYPE(*).

-fallow-invalid-boz

Литерал BOZ может встречаться в ограниченном количестве контекстов в соответствии со стандартом Fortran. Эта опция понижает ошибку до предупреждения и позволяет литералу BOZ появляться там, где стандарт Fortran запрещает его использование.

-fd-lines-as-code
-fd-lines-as-comments

Включить специальную обработку строк, начинающихся с d или D в источниках с фиксированным форматом. Если опция -fd-lines-as-code задана, они обрабатываются так, как будто первая колонка содержит пробел. Если задана опция -fd-lines-as-comments, они обрабатываются как строки комментариев.

-fdec

Режим совместимости с DEC. Включает расширения и другие функции, которые имитируют поведение более старых компиляторов (таких как DEC). Эти функции нестандартны и следует избегать их использования. Подробности об реализации этих расширений в GNU Fortran см. в полной документации.

Другие флаги, включенные этим переключателем: -fdollar-ok -fcray-pointer -fdec-char-conversions -fdec-structure -fdec-intrinsic-ints -fdec-static -fdec-math -fdec-include -fdec-blank-format-item -fdec-format-defaults

Если -fd-lines-as-code/-fd-lines-as-comments не заданы, то -fdec также устанавливает -fd-lines-as-comments.

-fdec-char-conversions

Включить использование символьных литералов в операциях присваивания и DATA операторах для переменных, не являющихся символами.

-fdec-structure

Включить DEC STRUCTURE и RECORD, а также UNION, MAP, и точку (’.’) в качестве разделителя членов (в дополнение к ’%’). Это предоставляется только для совместимости; следует использовать производные типы Fortran 90, где это возможно.

-fdec-intrinsic-ints

Включить варианты вида B/I/J/K для существующих целочисленных функций (например, BIAND, IIAND, JIAND и т.д.). Полный список встроенных функций см. в полной документации.

-fdec-math

Включить встроенные функции математики legacy, такие как COTAN и тригонометрические функции с градусами (например, TAND, ATAND и т.д.) для совместимости со старым кодом.

-fdec-static

Включить атрибуты STATIC и AUTOMATIC в стиле DEC для явного указания хранения переменных и других объектов.

-fdec-include

Включить разбор INCLUDE как оператора в дополнение к его разбору как строки INCLUDE. При разборе как оператора INCLUDE, INCLUDE не должен быть на одной строке и может использовать продолжение строк.

-fdec-format-defaults

Включить использование спецификаторов формата F, G и I без спецификаторов ширины, вместо этого будут использоваться значения ширины по умолчанию.

-fdec-blank-format-item

Включить пустой элемент формата в конце спецификации формата, т.е. ничего после последней запятой.

-fdollar-ok

Разрешить ‘$’ как допустимый символ, не являющийся первым, в имени символа. Символы, начинающиеся с ‘$’, отклоняются, поскольку неясно, какие правила применять к неявной типизации, поскольку разные поставщики реализуют разные правила. Использование ‘$’ в операторах IMPLICIT также отклоняется.

-fbackslash

Изменить интерпретацию обратных слешей в строковых литералах с одиночного символа обратного слеша на символы escape в стиле C. Следующие комбинации расширяются \a, \b, \f, \n, \r, \t, \v, \\, и \0 соответственно до ASCII символов сигнал, возврат, подача формы, новая строка, возврат каретки, горизонтальная табуляция, вертикальная табуляция, обратный слэш и NUL соответственно. Кроме того, \xnn, \unnnn и \Unnnnnnnn (где каждый n является шестнадцатеричной цифрой) преобразуются в соответствующие Unicode-символы. Все остальные комбинации символа, предшествующего \ не расширяются.

-fmodule-private

Установить по умолчанию доступность модульных сущностей к PRIVATE. Связанные по использованию сущности не будут доступны, если они не объявлены явно как PUBLIC.

-ffixed-line-length-n

Установить столбец, после которого символы игнорируются в типичных строках с фиксированным форматом в исходном файле, и, если -fno-pad-source, пробелы предполагаются (как будто дополнены до этой длины) после окончания коротких строк с фиксированным форматом.

Популярные значения для n включают 72 (стандарт и по умолчанию), 80 (изображение карточки) и 132 (соответствующее «расширенным» опциям в некоторых популярных компиляторах). n также может быть ‘none’, что означает, что вся строка имеет значение, и что продолженные символьные константы никогда не имеют неявных пробелов, добавленных к ним, чтобы заполнить строку. -ffixed-line-length-0 означает то же самое, что и -ffixed-line-length-none.

-fno-pad-source

По умолчанию в строках с фиксированным форматом предполагаются пробелы (как будто дополненные до этой длины) после окончания коротких строк с фиксированным форматом. Это не делается ни при использовании -ffixed-line-length-0, -ffixed-line-length-none или опции -fno-pad-source. С любой из этих опций продолженные символьные константы никогда не имеют неявных пробелов, добавленных к ним, чтобы заполнить строку.

-ffree-line-length-n

Установите столбец, после которого символы игнорируются в типичных строках с свободным форматом в исходном файле. Значение по умолчанию — 132. n может быть ‘none’, что означает, что вся строка имеет значение. -ffree-line-length-0 означает то же самое, что и -ffree-line-length-none.

-fmax-identifier-length=n

Укажите максимальную длину идентификатора. Типичные значения — 31 (Fortran 95) и 63 (Fortran 2003 и более поздние версии).

-fimplicit-none

Укажите, что неявная типизация не допускается, если не переопределена явными IMPLICIT операторами. Это эквивалентно добавлению implicit none в начало каждой процедуры.

-fcray-pointer

Включить расширение Cray pointer, которое предоставляет функциональность указателей в стиле C.

-fopenacc

Включить расширения OpenACC. Это включает директивы OpenACC !$acc в свободном формате и c$acc, *$acc и !$acc директивы в фиксированном формате, !$ условные компиляции в свободном формате и c$, *$ и !$ условные компиляции в фиксированном формате, и при линковке обеспечивает привязку библиотеки времени выполнения OpenACC.

-fopenmp

Включить расширения OpenMP. Это включает директивы OpenMP !$omp в свободном формате и c$omp, *$omp и !$omp директивы в фиксированном формате, !$ условные компиляции в свободном формате и c$, *$ и !$ условные компиляции в фиксированном формате, и при линковке обеспечивает привязку библиотеки времени выполнения OpenMP. Опция -fopenmp подразумевает -frecursive.

-fno-range-check

Отключить проверку диапазона на результаты упрощения константных выражений во время компиляции. Например, GNU Fortran выдаст ошибку во время компиляции при упрощении a = 1. / 0. С этой опцией ошибка не будет выдана, и a получит значение +Infinity. Если выражение вычисляет значение вне соответствующего диапазона [-HUGE():HUGE()], то выражение будет заменено на -Inf или +Inf соответственно. Аналогично, DATA i/Z'FFFFFFFF'/ приведет к целочисленному переполнению на большинстве систем, но с -fno-range-check значение будет «перематываться», и i будет инициализировано значением -1 вместо этого.

-fdefault-integer-8

Установить типы целых и логических по умолчанию на 8-байтовый тип. Эта опция также влияет на тип целых констант, таких как 42. В отличие от -finteger-4-integer-8, она не повышает переменные с явным объявлением типа.

-fdefault-real-8

Установите тип вещественного числа по умолчанию на тип шириной 8 байт. Этот параметр также влияет на вид вещественных констант, не являющихся типа double, таких как 1.0. Этот параметр увеличивает ширину по умолчанию DOUBLE PRECISION и вещественных констант типа double, таких как 1.d0, до 16 байт, если это возможно. Если -fdefault-double-8 указан вместе с fdefault-real-8, DOUBLE PRECISION и вещественные константы типа double не будут увеличены. В отличие от -freal-4-real-8, fdefault-real-8 не увеличивает переменные с явными объявлениями типа.

-fdefault-real-10

Установите тип вещественного числа по умолчанию на тип шириной 10 байт. Этот параметр также влияет на вид вещественных констант, не являющихся типа double, таких как 1.0. Этот параметр увеличивает ширину по умолчанию DOUBLE PRECISION и вещественных констант типа double, таких как 1.d0, до 16 байт, если это возможно. Если -fdefault-double-8 указан вместе с fdefault-real-10, DOUBLE PRECISION и вещественные константы типа double не будут увеличены. В отличие от -freal-4-real-10, fdefault-real-10 не увеличивает переменные с явными объявлениями типа.

-fdefault-real-16

Установите тип вещественного числа по умолчанию на тип шириной 16 байт. Этот параметр также влияет на вид вещественных констант, не являющихся типа double, таких как 1.0. Этот параметр увеличивает ширину по умолчанию DOUBLE PRECISION и вещественных констант типа double, таких как 1.d0, до 16 байт, если это возможно. Если -fdefault-double-8 указан вместе с fdefault-real-16, DOUBLE PRECISION и вещественные константы типа double не будут увеличены. В отличие от -freal-4-real-16, fdefault-real-16 не увеличивает переменные с явными объявлениями типа.

-fdefault-double-8

Установите тип DOUBLE PRECISION и вещественные константы типа double, такие как 1.d0, на тип шириной 8 байт. Ничего не делает, если это уже значение по умолчанию. Этот параметр предотвращает -fdefault-real-8, -fdefault-real-10 и -fdefault-real-16 от увеличения DOUBLE PRECISION и вещественных констант типа double, таких как 1.d0, до 16 байт.

-finteger-4-integer-8

Увеличивает все INTEGER(KIND=4) сущности до INTEGER(KIND=8) сущностей. Если KIND=8 недоступен, будет выдано сообщение об ошибке. Этот параметр следует использовать с осторожностью, и он может быть неподходящим для ваших кодов. Возможные проблемы включают вызовы внешних процедур, выравнивание в EQUIVALENCE и/или COMMON, общие интерфейсы, преобразование констант символьных литералов BOZ и Ввод/Вывод. Рекомендуется проверить промежуточное представление переведённого кода Fortran, полученного с помощью -fdump-tree-original.

-freal-4-real-8
-freal-4-real-10
-freal-4-real-16
-freal-8-real-4
-freal-8-real-10
-freal-8-real-16

Увеличивает все REAL(KIND=M) сущности до REAL(KIND=N) сущностей. Если REAL(KIND=N) недоступен, будет выдано сообщение об ошибке. Параметры -freal-4- также влияют на тип вещественного числа по умолчанию, а параметры -freal-8- также на тип вещественного числа двойной точности. Все остальные типы вещественных чисел не затрагиваются этим параметром. Увеличение также применяется к вещественным константам-литералам по умолчанию и двойной точности, и к определённому числу типа 4 или 8, соответственно. Однако -fdefault-real-8, -fdefault-real-10, -fdefault-real-10, и -fdefault-double-8 имеют приоритет для типов вещественных чисел по умолчанию и двойной точности, как для вещественных констант-литералов, так и для объявлений без номера типа. Обратите внимание, что для REAL(KIND=KIND(1.0)) литерал может быть увеличен, а затем результат может быть увеличен повторно. Эти параметры следует использовать с осторожностью, и они могут быть неподходящими для ваших кодов. Возможные проблемы включают вызовы внешних процедур, выравнивание в EQUIVALENCE и/или COMMON, общие интерфейсы, преобразование констант символьных литералов BOZ, Ввод/Вывод, и вызовы встроенных процедур при передаче значения в kind= аргумент-заглушку. Рекомендуется проверить промежуточное представление переведённого кода Fortran, полученного с помощью -fdump-fortran-original или -fdump-tree-original.

-std=std

Укажите стандарт, которому программа должна соответствовать, который может быть одним из ‘f95’, ‘f2003’, ‘f2008’, ‘f2018’, ‘gnu’ или ‘legacy’. Значение по умолчанию для std — ‘gnu’, которое определяет супермножество последнего стандарта Fortran, включающего все расширения, поддерживаемые GNU Fortran, хотя будут выдаваться предупреждения об устаревших расширениях, не рекомендуемых для использования в новом коде. Значение ‘legacy’ эквивалентно, но без предупреждений об устаревших расширениях, и может быть полезно для старых нестандартных программ. Значения ‘f95’, ‘f2003’, ‘f2008’ и ‘f2018’ указывают на строгое соответствие стандартам Fortran 95, Fortran 2003, Fortran 2008 и Fortran 2018 соответственно; ошибки выдаются для всех расширений, выходящих за рамки соответствующего стандарта языка, и предупреждения выдаются для функций Fortran 77, которые разрешены, но устарели в более поздних стандартах. Устаревший параметр ‘-std=f2008ts’ действует как псевдоним для ‘-std=f2018’. Он присутствует только для обратной совместимости с более ранними версиями gfortran и больше не должен использоваться.

-ftest-forall-temp

Улучшить покрытие тестов, заставив большинство назначений forall использовать временные переменные.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gfortran/Fortran-Dialect-Options.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API