Spec-Zone.ru › Haskell 8

7.6. Справочник по флагам

Этот раздел содержит краткий справочник по командным флагам GHC. Для каждого флага мы также указываем его режим/динамический статус (см. Динамические и режимные параметры), а также противоположный флаг (если он доступен).

7.6.1. Параметры подробности

Подробнее см. Параметры подробности

Флаг Описание Тип Обратный

-fabstract-refinement-hole-fits

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

динамический

-fno-abstract-refinement-hole-fits

-fdefer-diagnostics

Откладывать и группировать диагностические сообщения по степени серьезности

динамический

-fdiagnostics-color=⟨always|auto|never⟩

Использовать цвета в сообщениях об ошибках

динамический

-fdiagnostics-show-caret

Показывать ли фрагменты исходного кода

динамический

-fno-diagnostics-show-caret

-ferror-spans

Выводить полный размах в сообщениях об ошибках

динамический

-fhide-source-paths

скрыть пути к модулям и объектам исходного кода

динамический

-fkeep-going

Продолжать компиляцию насколько возможно при ошибках

динамический

-fmax-refinement-hole-fits=⟨n⟩

по умолчанию: 6. Устанавливает максимальное количество подходящих дыр уточнения для типизированных дыр, которые будут отображаться в сообщениях об ошибках типов.

динамический

-fno-max-refinement-hole-fits

-fmax-relevant-binds=⟨n⟩

по умолчанию: 6. Устанавливает максимальное количество связей для отображения в сообщениях об ошибках типов.

динамический

-fno-max-relevant-binds

-fmax-valid-hole-fits=⟨n⟩

по умолчанию: 6. Устанавливает максимальное количество подходящих дыр для типизированных дыр для отображения в сообщениях об ошибках типов.

динамический

-fno-max-valid-hole-fits

-fno-show-valid-hole-fits

Отключает отображение списка подходящих дыр для типизированных дыр в сообщениях об ошибках типов.

динамический

-fno-sort-valid-hole-fits

Отключает сортировку списка подходящих дыр для типизированных дыр в сообщениях об ошибках типов.

динамический

-fsort-valid-hole-fits

-fprint-axiom-incomps

Отображать несовместимости уравнений в закрытых семействах типов

динамический

-fno-print-axiom-incomps

-fprint-equality-relations

Различать отношения равенства при печати

динамический

-fno-print-equality-relations

-fprint-expanded-synonyms

В сообщениях об ошибках типов также печатать типы, расширенные синонимами типов.

динамический

-fno-print-expanded-synonyms

-fprint-explicit-coercions

Выводить принуждения в типах

динамический

-fno-print-explicit-coercions

-fprint-explicit-foralls

Выводить явное forall квантификацию в типах. См. также ExplicitForAll

динамический

-fno-print-explicit-foralls

-fprint-explicit-kinds

Выводить явные квантификаторы типов и аргументы типов в типах. См. также KindSignatures

динамический

-fno-print-explicit-kinds

-fprint-explicit-runtime-reps

Выводить RuntimeRep переменные в типах, которые полиморфны для представления во время выполнения.

динамический

-fno-print-explicit-runtime-reps

-fprint-potential-instances

отображать все доступные экземпляры в сообщениях об ошибках типов

динамический

-fno-print-potential-instances

-fprint-typechecker-elaboration

Печать дополнительной информации из проверки типов.

динамический

-fno-print-typechecker-elaboration

-fprint-unicode-syntax

Использование синтаксиса Юникода при печати выражений, типов и видов. См. также UnicodeSyntax

динамический

-fno-print-unicode-syntax

-frefinement-level-hole-fits=⟨n⟩

по умолчанию: выключено. Устанавливает уровень уточнения подходящих дыр уточнения, где уровень n означает, что будут учитываться подходящие дыры до n дыр.

динамический

-fno-refinement-level-hole-fits

-freverse-errors

Вывод ошибок в обратном порядке

динамический

-fno-reverse-errors

-fshow-docs-of-hole-fits

Включает/выключает отображение документации подходящих дыр в выводе.

динамический

-fno-show-docs-of-hole-fits

-fshow-hole-constraints

Показывать ограничения при сообщении о типизированных дырах.

динамический

-fshow-hole-matches-of-hole-fits

Включает/выключает отображение типа дополнительных дыр в уточнениях дыр.

динамический

-fno-show-hole-matches-of-hole-fits

-fshow-provenance-of-hole-fits

Включает/выключает отображение происхождения подходящих дыр в выводе.

динамический

-fno-show-provenance-of-hole-fits

-fshow-type-app-of-hole-fits

Включает/выключает отображение применения типа подходящих дыр в выводе.

динамический

-fno-show-type-app-of-hole-fits

-fshow-type-app-vars-of-hole-fits

Включает/выключает отображение того, какой тип принимает каждая квантифицированная переменная в подходящей дыре.

динамический

-fno-show-type-app-vars-of-hole-fits

-fshow-type-of-hole-fits

Включает/выключает отображение типа подходящих дыр в выводе.

динамический

-fno-type-of-hole-fits

-funclutter-valid-hole-fits

Упростить список подходящих дыр, не отображая происхождение и применения типов предложений.

динамический

-Rghc-timing

Сводка временных статистик для GHC (то же, что и +RTS -tstderr).

динамический

-v

режим подробного отображения (эквивалентно -v3).

динамический

-v⟨n⟩

установить уровень подробности

динамический

7.6.2. Альтернативные режимы работы

Подробнее в Режимы работы

Флаг Описание Тип Обратный

--frontend ⟨module⟩

запустить GHC с данным плагином передней части; см. Плагины передней части для получения подробностей.

режим

--help, -?

Отобразить справку

режим

--info

отобразить информацию о компиляторе

режим

--interactive

Интерактивный режим — обычно используется путём простого запуска ghci; см. Использование GHCi для получения подробностей.

режим

--make

Сборка многомодульной Haskell-программы, автоматически определяя зависимости. Вероятно, намного проще и быстрее, чем использование make; см. Использование ghc --make для получения подробностей.

режим

--mk-dll

Режим создания DLL (только для Windows)

режим

--numeric-version

отобразить версию GHC (только числовую)

режим

--print-libdir

отобразить каталог библиотек GHC

режим

--show-iface ⟨file⟩

отобразить содержимое файла интерфейса.

режим

--show-options

отобразить поддерживаемые параметры командной строки

режим

--supported-extensions, --supported-languages

отобразить поддерживаемые расширения языка

режим

--version, -V

отобразить версию GHC

режим

-e ⟨expr⟩

Оценить expr; см. Режим оценки выражений для получения подробностей.

режим

-M

сгенерировать информацию о зависимостях, подходящую для использования в Makefile; см. Генерация зависимостей для получения подробностей.

режим

7.6.3. Какие фазы запускать

Подробнее в Режим пакетной компиляции

Флаг Описание Тип Обратный

-C

Остановка после генерации C (файл .hc)

режим

-c

Остановка после генерации объектного (файл .o) файла

режим

-E

Остановка после предварительной обработки (файл .hspp файла)

режим

-F

Включить использование предварительного процессора (установлено с -pgmF ⟨cmd⟩)

динамический

-S

Остановка после генерации ассемблерного файла (файл .s файла)

режим

-x ⟨suffix⟩

Переопределить поведение по умолчанию для исходных файлов

динамический

7.6.4. Перенаправление вывода

Подробнее в Перенаправление вывода компиляции

Флаг Описание Тип Обратный

--exclude-module=⟨file⟩

Считать ⟨file⟩ «стабильным»; т. е. исключить его из зависимости от него.

динамический

-ddump-mod-cycles

Вывести циклы модулей

динамический

-dep-makefile ⟨file⟩

Использовать ⟨file⟩ в качестве файла makefile

динамический

-dep-suffix ⟨suffix⟩

Создать зависимости, которые объявляют, что файлы с суффиксом .⟨suf⟩⟨osuf⟩ зависят от файлов интерфейса с суффиксом .⟨suf⟩hi

динамический

-dumpdir ⟨dir⟩

перенаправить файлы вывода

динамический

-hcsuf ⟨suffix⟩

установить суффикс, используемый для промежуточных файлов C

динамический

-hidir ⟨dir⟩

установить каталог для файлов интерфейса

динамический

-hiedir ⟨dir⟩

установить каталог для расширенных файлов интерфейса

динамический

-hiesuf ⟨suffix⟩

установить суффикс, используемый для расширенных файлов интерфейса

динамический

-hisuf ⟨suffix⟩

установить суффикс, используемый для файлов интерфейса

динамический

-include-cpp-deps

Включить зависимости предварительного процессора

динамический

-include-pkg-deps

Рассматривать модули, импортированные из пакетов, как нестабильные

динамический

-o ⟨file⟩

установить имя выходного файла

динамический

-odir ⟨dir⟩

установить каталог для объектных файлов

динамический

-ohi ⟨file⟩

установить имя файла, в который должен быть помещён интерфейс

динамический

-osuf ⟨suffix⟩

установить суффикс выходного файла

динамический

-outputdir ⟨dir⟩

установить выходной каталог

динамический

-stubdir ⟨dir⟩

перенаправить файлы заглушек FFI

динамический

7.6.5. Сохранение промежуточных файлов

Подробнее в Сохранение промежуточных файлов

Флаг Описание Тип Обратное

-keep-hc-file, -keep-hc-files

Сохранить промежуточные .hc файлы.

динамический

-keep-hi-files

Сохранить промежуточные .hi файлы (по умолчанию).

динамический

-no-keep-hi-files

-keep-hscpp-file, -keep-hscpp-files

Сохранить промежуточные .hscpp файлы.

динамический

-keep-llvm-file, -keep-llvm-files

Сохранить промежуточные LLVM .ll файлы. Подразумевает -fllvm.

динамический

-keep-o-files

Сохранить промежуточные .o файлы (по умолчанию).

динамический

-no-keep-o-files

-keep-s-file, -keep-s-files

Сохранить промежуточные .s файлы.

динамический

-keep-tmp-files

Сохранить все промежуточные временные файлы.

динамический

7.6.6. Временные файлы

Подробнее в Перенаправление временных файлов

Флаг Описание Тип Обратное

-tmpdir ⟨dir⟩

Установить каталог для временных файлов

динамический

7.6.7. Поиск импортов

Подробнее в Путь поиска

Флаг Описание Тип Обратное

-i

Очистить список каталогов импорта

динамический

-i⟨dir⟩[:⟨dir⟩]*

Добавить ⟨dir⟩, ⟨dir2⟩ и т. д. в путь импорта

динамический

7.6.8. Параметры файлов интерфейса

Подробнее в Другие параметры, связанные с файлами интерфейса

Флаг Описание Тип Обратное

--show-iface ⟨file⟩

См. Режимы работы.

режим

-ddump-hi

Вывести новый интерфейс в стандартный вывод

динамический

-ddump-hi-diffs

Показать различия по сравнению со старым интерфейсом

динамический

-ddump-minimal-imports

Вывести минимальный набор импортов

динамический

7.6.9. Проверка повторной компиляции

Подробнее в Проверяющий повторной компиляции

Флаг Описание Тип Обратное

-fforce-recomp

Отключить проверку повторной компиляции. Это подразумевается любым -ddump-X параметром при компиляции одного файла (то есть при использовании -c).

динамический

-fno-force-recomp

-fignore-hpc-changes

Не перекомпилировать модули только для соответствия изменениям флагов HPC. Это особенно полезно для предотвращения перекомпиляции при использовании GHCi, и по умолчанию включено для GHCi.

динамический

-fno-ignore-hpc-changes

-fignore-optim-changes

Не перекомпилировать модули только для соответствия изменениям флагов оптимизации. Это особенно полезно для предотвращения перекомпиляции при использовании GHCi, и по умолчанию включено для GHCi.

динамический

-fno-ignore-optim-changes

7.6.10. Параметры режима интерактивной работы

Подробнее в Файлы .ghci и .haskeline

Флаг Описание Тип Обратный

-fbreak-on-error

Прерывание при неуловленных исключениях и ошибках

динамический

-fno-break-on-error

-fbreak-on-exception

Прерывание при любом возникшем исключении

динамический

-fno-break-on-exception

-fghci-hist-size=⟨n⟩

Установите количество записей, которые GHCi сохраняет для :history. См. Отладчик GHCi.

динамический

-fghci-leak-check

(Только для отладки) проверка утечек памяти при загрузке новых модулей в GHCi.

динамический

-fno-ghci-leak-check

-flocal-ghci-history

Использовать текущую директорию для файла истории команд GHCi .ghci-history.

динамический

-fno-local-ghci-history

-fno-it

Больше не устанавливать специальную переменную it.

динамический

-fno-no-it

-fprint-bind-result

Включить вывод результатов связывания в GHCi

динамический

-fno-print-bind-result

-fprint-evld-with-show

Инструктировать :print использовать Show экземпляры, где это возможно.

динамический

-fshow-loaded-modules

Показывать имена модулей, загруженных GHCi после команды :load.

динамический

-ghci-script

Чтение дополнительных файлов .ghci

динамический

-ignore-dot-ghci

Отключить чтение файлов .ghci

динамический

-interactive-print ⟨name⟩

Выбор функции для вывода вычисленных выражений в GHCi

динамический

7.6.11. Пакеты

Более подробные сведения в Пакеты

Флаг Описание Тип Обратный

-clear-package-db

Очистить стек базы данных пакетов.

динамический

-distrust ⟨pkg⟩

Открыть пакет ⟨pkg⟩ и установить его как недоверенный. См. Безопасный Haskell.

динамический

-distrust-all-packages

По умолчанию не доверять всем пакетам. См. Безопасный Haskell.

динамический

-fpackage-trust

Включить требование для доверенных пакетов Безопасный Haskell для надежных модулей.

динамический

-global-package-db

Добавить глобальную базу данных пакетов в стек.

динамический

-hide-all-packages

Скрыть все пакеты по умолчанию

динамический

-hide-package ⟨pkg⟩

Скрыть пакет ⟨pkg⟩

динамический

-ignore-package ⟨pkg⟩

Пропустить пакет ⟨pkg⟩

динамический

-no-auto-link-packages

Не автоматически подключать пакеты base и rts.

динамический

-no-global-package-db

Удалить глобальную базу данных пакетов из стека.

динамический

-no-user-package-db

Удалить пользовательскую базу данных пакетов из стека.

динамический

-package ⟨pkg⟩

Открыть пакет ⟨pkg⟩

динамический

-package-db ⟨file⟩

Добавить ⟨file⟩ в стек базы данных пакетов.

динамический

-package-env ⟨file⟩|⟨name⟩

Использовать указанную среду пакетов.

динамический

-package-id ⟨unit-id⟩

Открыть пакет по id ⟨unit-id⟩

динамический

-this-unit-id ⟨unit-id⟩

Компилировать как часть единицы (т.е. пакета) ⟨unit-id⟩

динамический

-trust ⟨pkg⟩

Открыть пакет ⟨pkg⟩ и установить его как доверенный. См. Безопасный Haskell.

динамический

-user-package-db

Добавить пользовательскую базу данных пакетов в стек.

динамический

7.6.12. Параметры языка

Параметры языка можно включить либо с помощью параметра командной строки -Xblah, либо с помощью псевдокоманды {-# LANGUAGE blah #-} в самом файле. См. Параметры языка.

7.6.13. Предупреждения

Более подробные сведения в Предупреждения и проверка корректности

Флаг Описание Тип Обратный

-fdefer-out-of-scope-variables

Преобразует ошибки переменных, выходящих за область видимости, в предупреждения. Подразумевается -fdefer-type-errors. См. также -Wdeferred-out-of-scope-variables.

динамический

-fno-defer-out-of-scope-variables

-fdefer-type-errors

Преобразует ошибки типов в предупреждения, откладывая ошибку до времени выполнения. Подразумевает -fdefer-typed-holes и -fdefer-out-of-scope-variables. См. также -Wdeferred-type-errors

динамический

-fno-defer-type-errors

-fdefer-typed-holes

Преобразует ошибки типизированных дыр в предупреждения, откладывая ошибку до времени выполнения. Подразумевается -fdefer-type-errors. См. также -Wtyped-holes.

динамический

-fno-defer-typed-holes

-fenable-th-splice-warnings

Генерирует предупреждения для встроек Template Haskell.

динамический

-fno-enable-th-splices

-fhelpful-errors

Предлагает исправления для неправильно написанных имён.

динамический

-fno-helpful-errors

-fmax-pmcheck-models=⟨n⟩

мягкий лимит на количество параллельных моделей, которые должна проверять система проверки соответствия шаблонов для правила соответствия

динамический

-fshow-warning-groups

отображает, к какой группе относится выведенное предупреждение.

динамический

-fno-show-warning-groups

-fvia-C

использовать генератор кода C

динамический

-W

включить стандартные предупреждения

динамический

-w

-w

отключить все предупреждения

динамический

-Wall

включить почти все предупреждения (подробности в Предупреждения и проверка корректности)

динамический

-w

-Wall-missed-specialisations

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

динамический

-Wno-all-missed-specialisations

-Wcompat

включить предупреждения о будущей совместимости (подробности в Предупреждения и проверка корректности)

динамический

-Wno-compat

-Wcompat-unqualified-imports

Сообщать о неквалифицированных импортах основных библиотек, которые, как ожидается, вызовут проблемы совместимости в будущих версиях.

динамический

-Wno-compat-unqualified-imports

-Wcpp-undef

предупреждать при использовании директивы #if для неопределенных идентификаторов

динамический

-Wdeferred-out-of-scope-variables

Выводить предупреждения, когда ошибки переменных, выходящих за область видимости, откладываются до времени выполнения. См. -fdefer-out-of-scope-variables.

динамический

-Wno-deferred-out-of-scope-variables

-Wdeferred-type-errors

Выводить предупреждения, когда включены отложенные ошибки типов. Этот параметр включен по умолчанию. См. -fdefer-type-errors.

динамический

-Wno-deferred-type-errors

-Wdeprecated-flags

выводить предупреждения об использовании устаревших командных флагов

динамический

-Wno-deprecated-flags

-Wdeprecations

выводить предупреждения об использовании функций и типов, имеющих предупреждения или устаревшие псевдонимы. Псевдоним для -Wwarnings-deprecations

динамический

-Wno-deprecations

-Wderiving-defaults

предупреждать о по умолчанию derive, когда используются как DeriveAnyClass, так и GeneralizedNewtypeDeriving

динамический

-Wno-deriving-defaults

-Wdodgy-exports

выводить предупреждение об сомнительных экспортах

динамический

-Wno-dodgy-exports

-Wdodgy-foreign-imports

выводить предупреждение об сомнительных внешних импортах

динамический

-Wno-dodgy-foreign-import

-Wdodgy-imports

выводить предупреждение об сомнительных импортах

динамический

-Wno-dodgy-imports

-Wduplicate-constraints

выводить предупреждение, когда ограничение дублируется в сигнатуре типа

динамический

-Wno-duplicate-constraints

-Wduplicate-exports

выводить предупреждение, когда сущность экспортируется несколько раз

динамический

-Wno-duplicate-exports

-Wempty-enumerations

выводить предупреждение о пустых перечислениях

динамический

-Wno-empty-enumerations

-Werror

сделать предупреждения фатальными

динамический

-Wwarn

-Weverything

включить все предупреждения, поддерживаемые GHC

динамический

-Whi-shadowing

(устарело) предупреждать, когда файл .hi в текущем каталоге затеняет библиотеку

динамический

-Wno-hi-shadowing

-Widentities

предупреждать об использовании численных преобразований Prelude, которые, вероятно, являются тождественными (и, следовательно, могут быть опущены)

динамический

-Wno-identities

-Wimplicit-kind-vars

предупреждать, когда переменные типа неявно квантифицируются.

динамический

-Wno-implicit-kind-vars

-Wimplicit-prelude

предупреждать, когда Prelude неявно импортируется

динамический

-Wno-implicit-prelude

-Winaccessible-code

предупреждать об недоступном коде

динамический

-Wno-inaccessible-code

-Wincomplete-patterns

предупреждать, когда сопоставление шаблонов может завершиться неудачей

динамический

-Wno-incomplete-patterns

-Wincomplete-record-updates

предупреждать, когда обновление записи может завершиться неудачей

динамический

-Wno-incomplete-record-updates

-Wincomplete-uni-patterns

предупреждать, когда сопоставление шаблонов в лямбда-выражении или связанном шаблоне может завершиться неудачей

динамический

-Wno-incomplete-uni-patterns

-Winline-rule-shadowing

Предупреждать, если правило переписывания RULE может не сработать, потому что функция может быть встроена, прежде чем правило получит возможность сработать. См. Как правила взаимодействуют с директивами INLINE/NOINLINE.

динамический

-Wno-inline-rule-shadowing

-Wmissed-extra-shared-lib

Предупреждать, когда GHCi не может загрузить общую библиотеку.

динамический

-Wno-missed-extra-shared-lib

-Wmissed-specialisations

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

динамический

-Wno-missed-specialisations

-Wmissing-deriving-strategies

предупреждать, когда в предложении deriving отсутствует стратегия deriving

динамический

-Wno-missing-deriving-strategies

-Wmissing-export-lists

предупреждать, когда в объявлении модуля не указаны все экспорты

динамический

-fnowarn-missing-export-lists

-Wmissing-exported-signatures

предупреждать о функциях верхнего уровня без сигнатур, только если они экспортированы. имеет приоритет над -Wmissing-signatures

динамический

-Wno-missing-exported-signatures

-Wmissing-exported-sigs

(устарело) предупреждать о функциях верхнего уровня без сигнатур, только если они экспортированы. имеет приоритет над -Wmissing-signatures

динамический

-Wno-missing-exported-sigs

-Wmissing-fields

предупреждать, когда поля записи не инициализированы

динамический

-Wno-missing-fields

-Wmissing-home-modules

предупреждать, когда импортирован домашний модуль, но не указан в командной строке. Полезно для cabal, чтобы убедиться, что GHC не подберет модули, не указанные ни в exposed-modules, ни в other-modules.

динамический

-Wno-missing-home-modules

-Wmissing-import-lists

предупреждать, когда в объявлении импорта не указаны все имена, введенные в область видимости

динамический

-fnowarn-missing-import-lists

-Wmissing-local-signatures

предупреждать о полиморфных локальных связях без сигнатур

динамический

-Wno-missing-local-signatures

-Wmissing-local-sigs

(устарело) предупреждать о полиморфных локальных связях без сигнатур

динамический

-Wno-missing-local-sigs

-Wmissing-methods

предупреждать, когда методы класса не определены

динамический

-Wno-missing-methods

-Wmissing-monadfail-instances

Предупреждать, когда используется шаблон, допускающий ошибку, в блоке do, у которого нет экземпляра MonadFail.

динамический

-Wno-missing-monadfail-instances

-Wmissing-pattern-synonym-signatures

предупреждать, когда псевдонимы шаблонов не имеют сигнатур типов

динамический

-Wno-missing-pattern-synonym-signatures

-Wmissing-signatures

предупреждать о функциях верхнего уровня без сигнатур

динамический

-Wno-missing-signatures

-Wmonomorphism-restriction

предупреждать, когда применяется ограничение мономорфизма

динамический

-Wno-monomorphism-restriction

-Wname-shadowing

предупреждать, когда имена затеняются

динамический

-Wno-name-shadowing

-Wno-compat

Отключает все предупреждения, включенные с помощью -Wcompat.

динамический

-Wcompat

-Wnoncanonical-monad-instances

предупреждать, когда экземпляры Applicative или Monad имеют неканонические определения return, pure, (>>), или (*>). Дополнительные сведения см. в описании флага в Предупреждения и проверка на корректность.

динамический

-Wno-noncanonical-monad-instances

-Wnoncanonical-monadfail-instances

выводить предупреждение, когда у экземпляров Monad или MonadFail имеются неканонические определения fail. Для получения дополнительной информации см. описание флага в Предупреждения и проверка на корректность.

динамически

-Wno-noncanonical-monadfail-instances

-Wnoncanonical-monoid-instances

выводить предупреждение, когда у экземпляров Semigroup или Monoid имеются неканонические определения (<>) или mappend. Для получения дополнительной информации см. описание флага в Предупреждения и проверка на корректность.

динамически

-Wno-noncanonical-monoid-instances

-Worphans

выводить предупреждение, когда модуль содержит объявления оторванных экземпляров или правила переписывания

динамически

-Wno-orphans

-Woverflowed-literals

выводить предупреждение о литералах, которые переполнят свой тип

динамически

-Wno-overflowed-literals

-Woverlapping-patterns

выводить предупреждение о перекрывающихся шаблонах

динамически

-Wno-overlapping-patterns

-Wpartial-fields

выводить предупреждение при определении частичного поля записи.

динамически

-Wno-partial-fields

-Wpartial-type-signatures

выводить предупреждение о пробелах в частичных сигнатурах типов, когда PartialTypeSignatures включен. Не применимо, когда PartialTypeSignatures не включен, в этом случае такие пробелы приводят к ошибкам.

динамически

-Wno-partial-type-signatures

-Wredundant-constraints

Принудительное выведение предупреждений о излишних ограничениях в сигнатурах типов.

динамически

-Wno-redundant-constraints

-Wredundant-record-wildcards

Выводить предупреждение об использовании шаблонов-диких карт в записях, когда дикая карта не связывает никаких шаблонов.

динамически

-Wno-redundant-record-wildcards

-Wsafe

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

динамически

-Wno-safe

-Wsemigroup

выводить предупреждение, если Monoid не является Semigroup, и при нестандартных определениях (<>)?

динамически

-Wno-semigroup

-Wsimplifiable-class-constraints

Предупреждать о ограничениях класса в сигнатуре типа, которые можно упростить с помощью объявления экземпляра верхнего уровня.

динамически

-Wno-simplifiable-class-constraints

-Wspace-after-bang

выводить предупреждение об отсутствии пробела перед вторым аргументом инфиксного определения (!) когда BangPatterns не включены

динамически

-Wno-missing-space-after-bang

-Wstar-binder

выводить предупреждение о привязке оператора типа (*), несмотря на StarIsType

динамически

-Wno-star-binder

-Wstar-is-type

выводить предупреждение, когда * используется вместо Data.Kind.Type

динамически

-Wno-star-is-type

-Wtabs

выводить предупреждение, если в исходном файле есть символы табуляции

динамически

-Wno-tabs

-Wtrustworthy-safe

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

динамически

-Wno-safe

-Wtype-defaults

выводить предупреждение, когда происходит применение по умолчанию

динамически

-Wno-type-defaults

-Wtyped-holes

Выводить предупреждения, когда ошибки типизированных отверстий откладываются до времени выполнения. См. -fdefer-typed-holes.

динамически

-Wno-typed-holes

-Wunbanged-strict-patterns

выводить предупреждение при привязке шаблона к неподнятой переменной, которая не является ни голой, ни с восклицательным знаком.

динамически

-Wno-unbanged-strict-patterns

-Wunrecognised-pragmas

выводить предупреждение об использовании директив, которые GHC не распознает

динамически

-Wno-unrecognised-pragmas

-Wunrecognised-warning-flags

выводить предупреждение, если на командной строке встречен нераспознанный -W... флаг.

динамически

-Wno-unrecognised-warning-flags

-Wunsafe

выводить предупреждение, если компилируемый модуль считается небезопасным. См. Безопасный Haskell

динамически

-Wno-unsafe

-Wunsupported-calling-conventions

выводить предупреждение об использовании неподдерживаемой конвенции вызова

динамически

-Wno-unsupported-calling-conventions

-Wunsupported-llvm-version

Выводить предупреждение при использовании -fllvm с неподдерживаемой версией LLVM.

динамически

-Wno-monomorphism-restriction

-Wunticked-promoted-constructors

выводить предупреждение, если продвинутые конструкторы не отмечены

динамически

-Wno-unticked-promoted-constructors

-Wunused-binds

предупреждать о связываниях, которые не используются. Псевдоним для -Wunused-top-binds, -Wunused-local-binds и -Wunused-pattern-binds

динамический

-Wno-unused-binds

-Wunused-do-bind

предупреждать о связываниях do, которые, похоже, выбрасывают значения типов, отличных от ()

динамический

-Wno-unused-do-bind

-Wunused-foralls

предупреждать о переменных типа в пользовательских forall\s, которые не используются

динамический

-Wno-unused-foralls

-Wunused-imports

предупреждать об ненужных импортах

динамический

-Wno-unused-imports

-Wunused-local-binds

предупреждать о локальных связываниях, которые не используются

динамический

-Wno-unused-local-binds

-Wunused-matches

предупреждать о переменных в шаблонах, которые не используются

динамический

-Wno-unused-matches

-Wunused-packages

предупреждать, когда пакет запрашивается в командной строке, но никогда не загружался.

динамический

-Wno-unused-packages

-Wunused-pattern-binds

предупреждать о связываниях шаблонов, которые не используются

динамический

-Wno-unused-pattern-binds

-Wunused-record-wildcards

Предупреждать о совпадениях с дикими картами записей, когда ни одна из связанных переменных не используется.

динамический

-Wno-unused-record-wildcards

-Wunused-top-binds

предупреждать о связываниях верхнего уровня, которые не используются

динамический

-Wno-unused-top-binds

-Wunused-type-patterns

предупреждать о неиспользуемых переменных типа, которые возникают из шаблонов в экземплярах семейства типов и семейства данных

динамический

-Wno-unused-type-patterns

-Wwarn

сделать предупреждения не фатальными

динамический

-Werror

-Wwarnings-deprecations

предупреждать об использовании функций и типов, имеющих предупреждения или устаревшие прагмы

динамический

-Wno-warnings-deprecations

-Wwrong-do-bind

предупреждать о связываниях do, которые, похоже, выбрасывают монадические значения, которые вы должны были связать вместо этого

динамический

-Wno-wrong-do-bind

7.6.14. Уровни оптимизации

Эти параметры описаны более подробно в Оптимизация (улучшение кода).

См. Индивидуальные оптимизации для списка оптимизаций, включённых на уровне 1 и уровне 2.

Флаг Описание Тип Обратное

-O, -O1

Включить оптимизации уровня 1

динамический

-O0

-O0

Отключить оптимизации (по умолчанию)

динамический

-O2

Включить оптимизации уровня 2

динамический

-O0

-O⟨n⟩

Любой -On, где n > 2, эквивалентен -O2.

динамический

-O0

7.6.15. Индивидуальные оптимизации

Эти параметры описаны более подробно в -f*: независимые от платформы флаги. Если флаг подразумевается -O , то он также подразумевается -O2 (если описание флага явно не говорит обратное). Если флаг подразумевается -O0 только тогда флаг не подразумевается -O и -O2.

Флаг Описание Тип Обратный

-fasm-shortcutting

Включить обход на уровне ассемблера. Подразумевается флагом -O2.

динамический

-fno-asm-shortcutting

-fbinary-blob-threshold=⟨n⟩

по умолчанию: 500К. Настройка генератора ассемблера для двоичных блоков.

динамический

-fblock-layout-cfg

Использовать новый алгоритм размещения блоков на основе cfg.

динамический

-fno-block-layout-cfg

-fblock-layout-weightless

Игнорировать веса cfg при размещении кода.

динамический

-fno-block-layout-weightless

-fblock-layout-weights

Устанавливает веса рёбер, используемые новым алгоритмом размещения кода.

динамический

-fcall-arity

Включить оптимизацию по арности вызовов. Подразумевается флагом -O.

динамический

-fno-call-arity

-fcase-folding

Включить свёртку констант в выражениях case. Подразумевается флагом -O.

динамический

-fno-case-folding

-fcase-merge

Включить слияние case. Подразумевается флагом -O.

динамический

-fno-case-merge

-fcmm-elim-common-blocks

Включить удаление общих блоков Cmm. Подразумевается флагом -O.

динамический

-fno-cmm-elim-common-blocks

-fcmm-sink

Включить sinking в Cmm. Подразумевается флагом -O.

динамический

-fno-cmm-sink

-fcpr-anal

Включить анализ CPR в анализаторе запроса. Подразумевается флагом -O.

динамический

-fno-cpr-anal

-fcross-module-specialise

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

динамический

-fno-cross-module-specialise

-fcse

Включить удаление общих подвыражений. Подразумевается флагом -O.

динамический

-fno-cse

-fdicts-cheap

Сделать выражения со словарями для оптимизатора кажущимися дешёвыми.

динамический

-fno-dicts-cheap

-fdicts-strict

Сделать словари строгими

динамический

-fno-dicts-strict

-fdmd-tx-dict-sel

Использовать специальный преобразователь запроса для селекторов словарей. Включен по умолчанию.

динамический

-fno-dmd-tx-dict-sel

-fdo-eta-reduction

Включить eta-редукцию. Подразумевается флагом -O.

динамический

-fno-do-eta-reduction

-fdo-lambda-eta-expansion

Включить lambda eta-расширение. Включен по умолчанию.

динамический

-fno-do-lambda-eta-expansion

-feager-blackholing

Включить жадный blackholing

динамический

-fenable-rewrite-rules

Включить все правила переписывания (включая правила, сгенерированные автоматической специализацией перегруженных функций). Подразумевается флагом -O.

динамический

-fno-enable-rewrite-rules

-fexcess-precision

Включить избыточную промежуточную точность

динамический

-fno-excess-precision

-fexitification

Включает оптимизацию exitification. Подразумевается флагом -O.

динамический

-fno-exitification

-fexpose-all-unfoldings

Открыть все развёртывания, даже для очень больших или рекурсивных функций.

динамический

-fno-expose-all-unfoldings

-ffloat-in

Включить преобразование float-in. Подразумевается флагом -O.

динамический

-fno-float-in

-ffull-laziness

Включить полную ленивость (связанные переменные двигаются наружу). Подразумевается флагом -O.

динамический

-fno-full-laziness

-ffun-to-thunk

Разрешить worker-wrapper преобразовывать замыкания функций в лямбды, если функция не использует ни один из своих аргументов. Отключено по умолчанию.

динамический

-fno-fun-to-thunk

-fignore-asserts

Игнорировать утверждения в исходном коде. Подразумевается флагом -O.

динамический

-fno-ignore-asserts

-fignore-interface-pragmas

Игнорировать директивы в интерфейсных файлах. Подразумевается только флагом -O0.

динамический

-fno-ignore-interface-pragmas

-flate-dmd-anal

Запустить повторный анализ спроса в конце этапа упрощения

динамический

-fno-late-dmd-anal

-flate-specialise

Запустить поздний этап специализации

динамический

-fno-late-specialise

-fliberate-case

Включить преобразование liberate-case. Подразумевается -O2.

динамический

-fno-liberate-case

-fliberate-case-threshold=⟨n⟩

по умолчанию: 2000. Установить порог размера для преобразования liberate-case в ⟨n⟩

динамический

-fno-liberate-case-threshold

-fllvm-pass-vectors-in-regs

Передача векторизованных значений в регистры векторов для вызовов функций

динамический

-fno-llvm-pass-vectors-in-regs

-floopification

Преобразовывать насыщенные рекурсивные вызовы хвостовой рекурсии в локальные переходы в сгенерированном ассемблере. Подразумевается -O.

динамический

-fno-loopification

-fmax-inline-alloc-size=⟨n⟩

по умолчанию: 128. Установить максимальный размер выделений массивов встраивания в ⟨n⟩ байт (по умолчанию: 128).

динамический

-fmax-inline-memcpy-insns=⟨n⟩

по умолчанию: 32. Встраивать вызовы memcpy если они сгенерируют не более ⟨n⟩ псевдоинструкций.

динамический

-fmax-inline-memset-insns=⟨n⟩

по умолчанию: 32. Встраивать вызовы memset если они сгенерируют не более ⟨n⟩ псевдоинструкций

динамический

-fmax-simplifier-iterations=⟨n⟩

по умолчанию: 4. Установить максимальное количество итераций для упростителя.

динамический

-fmax-uncovered-patterns=⟨n⟩

по умолчанию: 4. Установить максимальное количество шаблонов для отображения в предупреждениях о неполных.

динамический

-fmax-worker-args=⟨n⟩

по умолчанию: 10. Если у рабочего есть столько аргументов, больше ни один из них не будет распаковываться.

динамический

-fno-opt-coercion

Отключить оптимизатор приведения типов

динамический

-fno-pre-inlining

Отключить предварительное встраивание

динамический

-fno-state-hack

Отключить хитрость состояния, в которой любая лямбда с маркером реального состояния в качестве аргумента считается однократной. Следовательно, встраивание вещей внутри нее допустимо.

динамический

-fomit-interface-pragmas

Не генерировать интерфейсные прагмы. Подразумевается только -O0.

динамический

-fno-omit-interface-pragmas

-fomit-yields

Пропускать проверки кучи, когда не выполняется выделение памяти.

динамический

-fno-omit-yields

-foptimal-applicative-do

Использовать более медленный, но лучший алгоритм для ApplicativeDo

динамический

-fno-optimal-applicative-do

-fpedantic-bottoms

Сделать GHC более точным в отношении обработки значений nil (но см. также -fno-state-hack). В частности, GHC не будет расширять eta-форму через выражение case.

динамический

-fno-pedantic-bottoms

-fregs-graph

Использовать алгоритм распределения регистров по принципу окраски графа для распределения регистров в генераторе кода для нативного кода. Подразумевается -O2.

динамический

-fno-regs-graph

-fregs-iterative

Использовать итеративный алгоритм распределения регистров по принципу окраски графа в генераторе кода для нативного кода.

динамический

-fno-regs-iterative

-fsimpl-tick-factor=⟨n⟩

по умолчанию: 100. Установить процентный коэффициент для тиков упростителя.

динамический

-fsimplifier-phases=⟨n⟩

по умолчанию: 2. Установить количество фаз для упростителя. Игнорируется при -O0.

динамический

-fsolve-constant-dicts

При решении ограничений попытаться с оптимизацией решить надклассы, используя доступные словари.

динамический

-fno-solve-constant-dicts

-fspec-constr

Включить преобразование SpecConstr. Подразумевается -O2.

динамический

-fno-spec-constr

-fspec-constr-count=⟨n⟩

по умолчанию: 3.* Установить в ⟨n⟩ максимальное количество специализаций, которые будут созданы для любой одной функции преобразованием SpecConstr.

динамический

-fno-spec-constr-count

-fspec-constr-keen

Специализировать вызов с явным аргументом конструктора, даже если аргумент не проверяется в теле функции

динамический

-fno-spec-constr-keen

-fspec-constr-threshold=⟨n⟩

по умолчанию: 2000. Установить порог размера для преобразования SpecConstr в ⟨n⟩.

динамический

-fno-spec-constr-threshold

-fspecialise

Включить специализацию перегруженных функций. Подразумевается -O.

динамический

-fno-specialise

-fspecialise-aggressively

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

динамический

-fno-specialise-aggressively

-fstatic-argument-transformation

Включить преобразование статического аргумента.

динамический

-fno-static-argument-transformation

-fstg-cse

Включить удаление общих подвыражений на промежуточном языке STG

динамический

-fno-stg-cse

END_OF_DOCUMENT_MARKER

-fstg-lift-lams

Включить позднее поднятие лямбда-выражений в промежуточном языке STG. Подразумевается флагом -O2.

динамический

-fno-stg-lift-lams

-fstg-lift-lams-known

Разрешить преобразование известных вызовов в неизвестные при выполнении позднего поднятия лямбда-выражений.

динамический

-fno-stg-lift-lams-known

-fstg-lift-lams-non-rec-args

Создавать функции верхнего уровня без рекурсии с не более чем <n> параметрами при выполнении позднего поднятия лямбда-выражений.

динамический

-fno-stg-lift-lams-non-rec-args-any

-fstg-lift-lams-rec-args

Создавать рекурсивные функции верхнего уровня с не более чем <n> параметрами при выполнении позднего поднятия лямбда-выражений.

динамический

-fno-stg-lift-lams-rec-args-any

-fstrictness

Включить анализ строгости. Подразумевается флагом -O. Подразумевает -fworker-wrapper

динамический

-fno-strictness

-fstrictness-before=⟨n⟩

Запустить дополнительный анализ строгости перед фазой упрощения ⟨n⟩

динамический

-funbox-small-strict-fields

Разворачивать строгие поля конструктора с представлением размером указателя. Подразумевается флагом -O.

динамический

-fno-unbox-small-strict-fields

-funbox-strict-fields

Разворачивать строгие поля конструктора.

динамический

-fno-unbox-strict-fields

-funfolding-creation-threshold=⟨n⟩

По умолчанию: 750. Настройка параметров разворачивания.

динамический

-funfolding-dict-discount=⟨n⟩

По умолчанию: 30. Настройка параметров разворачивания.

динамический

-funfolding-fun-discount=⟨n⟩

По умолчанию: 60. Настройка параметров разворачивания.

динамический

-funfolding-keeness-factor=⟨n⟩

По умолчанию: 1.5. Настройка параметров разворачивания.

динамический

-funfolding-use-threshold=⟨n⟩

По умолчанию: 60. Настройка параметров разворачивания.

динамический

-fworker-wrapper

Включить трансформацию обертки для рабочих процессов.

динамический

7.6.16. Параметры профилирования

Более подробная информация в Профилирование

Флаг Описание Тип Обратное действие

-fno-prof-auto

Отключает предыдущие флаги -fprof-auto, -fprof-auto-top или -fprof-auto-exported.

динамический

-fprof-auto

-fno-prof-cafs

Отключает предыдущий флаг -fprof-cafs.

динамический

-fprof-cafs

-fno-prof-count-entries

Не собирать счётчики входов.

динамический

-fprof-count-entries

-fprof-auto

Автоматическое добавление SCC\ к всем связям, не помеченным INLINE.

динамический

-fno-prof-auto

-fprof-auto-calls

Автоматическое добавление SCC\ ко всем местам вызова.

динамический

-fno-prof-auto-calls

-fprof-auto-exported

Автоматическое добавление SCC\ ко всем экспортируемым связям, не помеченным INLINE.

динамический

-fno-prof-auto

-fprof-auto-top

Автоматическое добавление SCC\ ко всем связям верхнего уровня, не помеченным INLINE.

динамический

-fno-prof-auto

-fprof-cafs

Автоматическое добавление SCC\ ко всем CAFs.

динамический

-fno-prof-cafs

-prof

Включить профилирование.

динамический

-ticky

Включить профилирование ticky-ticky

динамический

7.6.17. Параметры покрытия кода

Более подробная информация в Наблюдение за покрытием кода

Флаг Описание Тип Обратное действие

-fhpc

Включить инструментирование покрытия Haskell кода.

динамический

7.6.18. Параметры препроцессора C

Более подробная информация в Параметры, влияющие на препроцессор C

Флаг Описание Тип Обратное действие

-cpp

Запустить препроцессор C над файлами исходного кода Haskell.

динамический

-D⟨symbol⟩[=⟨value⟩]

Определить символ в препроцессоре C.

динамический

-U⟨symbol⟩

-I⟨dir⟩

Добавить ⟨dir⟩ в список поиска каталогов для файлов #include

динамический

-U⟨symbol⟩

Удалить определение символа в препроцессоре C.

динамический

7.6.19. Параметры генерации кода

Более подробная информация в Параметры, влияющие на генерацию кода

Флаг Описание Тип Обратное

-dynamic-too

Сгенерировать динамические объектные файлы также как статические объектные файлы во время компиляции

динамический

-fasm

Использовать генератор кода нативного языка

динамический

-fllvm

-fbyte-code

Сгенерировать байткод

динамический

-fexternal-dynamic-refs

Сгенерировать код для связывания с динамическими библиотеками

динамический

-fllvm

Компилировать с помощью генератора кода LLVM

динамический

-fasm

-fno-code

Исключить генерацию кода

динамический

-fobject-code

Сгенерировать объектный код

динамический

-fPIC

Сгенерировать позиционно-независимый код (если доступно)

динамический

-fPIE

Сгенерировать код для позиционно-независимого исполняемого файла (если доступно)

динамический

-fwrite-interface

Всегда генерировать файлы интерфейса

динамический

7.6.20. Опции линковки

Более подробная информация в Опции, влияющие на линковку

Флаг Описание Тип Обратное

-c

Остановиться после генерации объектного (.o) файла

режим

-debug

Использовать отладочный запуск

динамический

-dylib-install-name ⟨path⟩

Установить имя установки (через -install_name передаваемое линковщику Apple), указывая полный путь установки файла библиотеки. Любые библиотеки или исполняемые файлы, которые затем связываются с ним, будут использовать этот путь в качестве расположения поиска во время выполнения.

динамический

-dynamic

Сгенерировать динамически подключаемые объектные файлы и исполняемые файлы

динамический

-dynload

Выбирает один из способов поиска общих библиотек во время выполнения.

динамический

-eventlog

Включить трассировку событий во время выполнения

динамический

-fno-embed-manifest

Не включать манифест в исполняемый файл (только Windows)

динамический

-fno-gen-manifest

Не генерировать файл манифеста (только Windows)

динамический

-fno-shared-implib

Не генерировать библиотеку импорта для DLL (только Windows)

динамический

-framework ⟨name⟩

Только для Darwin/OS X/iOS, подключить фреймворк ⟨name⟩. Эта опция соответствует опции -framework линковщика Apple.

динамический

-framework-path ⟨dir⟩

Только для Darwin/OS X/iOS, добавить ⟨dir⟩ в список каталогов, просматриваемых для фреймворков. Эта опция соответствует опции -F линковщика Apple.

динамический

-fwhole-archive-hs-libs

При линковке исполняемого файла это вставляет флаг -Wl,--whole-archive перед любыми флагами -l для библиотек Haskell и -Wl,--no-whole-archive после них

динамический

-keep-cafs

Не собирать CAFs (выражения верхнего уровня) во время выполнения

динамический

-L ⟨dir⟩

Добавить ⟨dir⟩ в список каталогов, просматриваемых для библиотек

динамический

-l ⟨lib⟩

Подключить библиотеку ⟨lib⟩

динамический

-main-is ⟨thing⟩

Установить основной модуль и функцию

динамический

-no-hs-main

Не предполагать, что эта программа содержит main

динамический

-no-rtsopts-suggestions

Не выводить предложения RTS о линковке с -rtsopts[=⟨none|some|all|ignore|ignoreAll⟩].

динамический

-package ⟨name⟩

Открыть пакет ⟨pkg⟩

динамический

-pie

Инструктирует линковщик создать позиционно-независимый исполняемый файл.

динамический

-rdynamic

Инструктирует линковщик добавить все символы, а не только используемые, в динамическую таблицу символов. В настоящее время только Linux и Windows/MinGW32. Это эквивалентно использованию -optl -rdynamic в Linux и -optl -export-all-symbols в Windows.

динамический

-rtsopts[=⟨none|some|all|ignore|ignoreAll⟩]

Управление возможностью настройки поведения RTS с помощью флагов командной строки и переменной окружения GHCRTS. Использование none означает, что флаги RTS не могут быть заданы; some означает, что может быть задано только минимальное количество безопасных опций (по умолчанию); all (или вообще без аргумента) означает, что разрешены все флаги RTS; ignore означает, что флаги RTS могут быть заданы, но обрабатываются как обычные аргументы и передаются программе Haskell в качестве аргументов; ignoreAll — то же самое, что ignore, но GHCRTS также игнорируется. -rtsopts не влияет на поведение -with-rtsopts; флаги, переданные через -with-rtsopts, используются независимо от -rtsopts.

динамический

-shared

Сгенерировать общую библиотеку (в отличие от исполняемого файла)

динамический

-split-sections

Разделить секции для удаления мертвого кода во время линковки

динамический

-static

Использовать статические библиотеки Haskell

динамический

-staticlib

Сгенерировать автономную статическую библиотеку (в отличие от исполняемого файла). Это полезно при кросс-компиляции. Библиотека вместе со всеми ее зависимостями оказывается в одной статической библиотеке, к которой можно обратиться.

динамический

-threaded

Использовать многопоточную среду выполнения

динамический

-with-rtsopts=⟨opts⟩

Установить параметры RTS по умолчанию на ⟨opts⟩.

динамический

7.6.21. Опции плагинов

Более подробная информация в Плагины компилятора

Флаг Описание Тип Обратный

-fclear-plugins

Очистить список активных плагинов

динамический

-fplugin-opt=⟨module⟩:⟨args⟩

Передать аргументы модулю плагина; модуль должен быть указан с помощью -fplugin=⟨module⟩

динамический

-fplugin-trustworthy

Доверять используемым плагинам и больше не отмечать скомпилированный модуль как небезопасный

динамический

-fplugin=⟨module⟩

Загрузить плагин, экспортированный данным модулем

динамический

-hide-all-plugin-packages

Скрыть все пакеты плагинов по умолчанию

динамический

-plugin-package ⟨pkg⟩

Экспонировать ⟨pkg⟩ для плагинов

динамический

-plugin-package-id ⟨pkg-id⟩

Экспонировать ⟨pkg-id⟩ для плагинов

динамический

7.6.22. Замена фаз

Подробнее в Замена программы для одной или нескольких фаз

Флаг Описание Тип Обратный

-pgma ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве ассемблера

динамический

-pgmc ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве компилятора C

динамический

-pgmdll ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве генератора DLL

динамический

-pgmF ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве препроцессора (только с -F)

динамический

-pgmi ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве команды внешнего интерпретатора.

динамический

-pgmL ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве препроцессора лит-текста

динамический

-pgml ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве компоновщика

динамический

-pgmlc ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве компилятора LLVM

динамический

-pgmlibtool ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве команды для libtool (только с -staticlib).

динамический

-pgmlm ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве компоновщика при объединении объектных файлов

динамический

-pgmlo ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве оптимизатора LLVM

динамический

-pgmP ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве препроцессора C (только с -cpp)

динамический

-pgms ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве разделителя

динамический

-pgmwindres ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве программы для встраивания манифестов в Windows.

динамический

7.6.23. Принудительное применение параметров к определённым фазам

Подробнее в Принудительное применение параметров к определённой фазе

Флаг Описание Тип Обратный

-opta ⟨option⟩

передать ⟨option⟩ ассемблеру

динамический

-optc ⟨option⟩

передать ⟨option⟩ компилятору C

динамический

-optcxx ⟨option⟩

передать ⟨option⟩ компилятору C++

динамический

-optdll ⟨option⟩

передать ⟨option⟩ генератору DLL

динамический

-optF ⟨option⟩

передать ⟨option⟩ пользовательскому препроцессору

динамический

-opti ⟨option⟩

передать ⟨option⟩ подпроцессу интерпретатора.

динамический

-optL ⟨option⟩

передать ⟨option⟩ препроцессору лит-текста

динамический

-optl ⟨option⟩

передать ⟨option⟩ компоновщику

динамический

-optlc ⟨option⟩

передать ⟨option⟩ компилятору LLVM

динамический

-optlm ⟨option⟩

передать ⟨option⟩ компоновщику при объединении объектных файлов.

динамический

-optlo ⟨option⟩

передать ⟨option⟩ оптимизатору LLVM

динамический

-optP ⟨option⟩

передать ⟨option⟩ cpp (только с -cpp)

динамический

-optwindres ⟨option⟩

передать ⟨option⟩ windres.

динамический

7.6.24. Параметры, специфичные для платформы

Подробнее в Параметры, специфичные для платформы

Флаг Описание Тип Обратный

-mbmi2

(только x86) Использовать BMI2 для операций по обработке битов

динамический

-msse2

(только x86) Использовать SSE2 для операций с плавающей точкой

динамический

-msse4.2

(только x86) Использовать SSE4.2 для операций с плавающей точкой

динамический

7.6.25. Параметры отладки компилятора

Подробнее в Отладка компилятора

Флаг Описание Тип Обратное

-dcmm-lint

Проверка корректности C--

динамический

-dcore-lint

Включить внутреннюю проверку корректности

динамический

-ddump-asm

Вывести конечный ассемблерный код

динамический

-ddump-asm-expanded

Вывести результат прохода расширения синтетических инструкций.

динамический

-ddump-asm-liveness

Вывести ассемблерный код с информацией о жизни регистров

динамический

-ddump-asm-native

Вывести исходный ассемблерный код

динамический

-ddump-asm-regalloc

Вывести результат распределения регистров

динамический

-ddump-asm-regalloc-stages

Вывести этапы построения/вытеснения алгоритма распределения регистров -fregs-graph.

динамический

-ddump-asm-stats

Вывести статистику распределения регистров.

динамический

-ddump-bcos

Вывести байт-код интерпретатора

динамический

-ddump-cfg-weights

Вывести предполагаемые веса CFG.

динамический

-ddump-cmm

Вывести конечный C-- код

динамический

-ddump-cmm-caf

Вывести результаты прохода анализа C-- CAF.

динамический

-ddump-cmm-cbe

Вывести результаты удаления общих блоков

динамический

-ddump-cmm-cfg

Вывести результаты прохода оптимизации потока управления C--.

динамический

-ddump-cmm-cps

Вывести результаты прохода CPS.

динамический

-ddump-cmm-from-stg

Вывести результат преобразования STG в C--

динамический

-ddump-cmm-info

Вывести результаты прохода дополнения таблицы информации C--.

динамический

-ddump-cmm-proc

Вывести результат анализа точек вызова.

динамический

-ddump-cmm-procmap

Вывести результаты прохода отображения точек вызова C--.

динамический

-ddump-cmm-raw

Вывести исходный C-- код

динамический

-ddump-cmm-sink

Вывести результаты прохода утонения C--.

динамический

-ddump-cmm-sp

Вывести результаты прохода размещения стека C--.

динамический

-ddump-cmm-split

Вывести результаты прохода разделения точек вызова C--.

динамический

-ddump-cmm-switch

Вывести результаты проходов понижения switch.

динамический

-ddump-cmm-verbose

Записывать вывод основных проходов C-- в файлы

динамический

-ddump-cmm-verbose-by-proc

Показывать вывод основных проходов C-- (сгруппировано по процедурам)

динамический

-ddump-core-stats

Вывести сводную строку размера программы Core в конце оптимизационной цепочки.

динамический

-ddump-cse

Вывести вывод CSE

динамический

-ddump-deriv

Вывести вывод вывода

динамический

-ddump-ds, -ddump-ds-preopt

Вывести вывод десуггера.

динамический

-ddump-ec-trace

Отслеживание проверки исчерпываемости

динамический

-ddump-file-prefix=⟨str⟩

Установить префикс имен файлов, используемых для отладочного вывода.

динамический

-ddump-foreign

Вывести foreign export заглушки

динамический

-ddump-hpc

Псевдоним для -ddump-ticked.

динамический

-ddump-if-trace

Отслеживание файлов интерфейса

динамический

-ddump-inlinings

Вывести информацию о встраивании

динамический

-ddump-json

Вывести сообщения об ошибках в формате JSON.

динамический

-ddump-llvm

Вывести промежуточный код LLVM.

динамический

-ddump-mod-map

Вывести состояние базы данных сопоставления модулей.

динамический

-ddump-occur-anal

Вывести вывод анализа встречаемости

динамический

-ddump-opt-cmm

Вывести результаты проходов оптимизации C-- -> C--.

динамический

-ddump-parsed

Вывести дерево разбора

динамический

-ddump-parsed-ast

Вывести вывод парсера в виде синтаксического дерева

динамический

-ddump-prep

Вывести подготовленное ядро

динамический

-ddump-rn

Вывести вывод переименования

динамический

-ddump-rn-ast

Вывести вывод переименования в виде синтаксического дерева

динамический

-ddump-rn-stats

Статистики переименования

динамический

-ddump-rn-trace

Отслеживание переименования

динамический

-ddump-rtti

Отслеживание вывода инференции типов во время выполнения

динамический

-ddump-rule-firings

Вывести информацию о срабатывании правил

динамический

-ddump-rule-rewrites

Вывести подробную информацию о срабатывании правил

динамический

END_OF_DOCUMENT_MARKER

-ddump-rules

Выгрузка правил переписывания

динамически

-ddump-simpl

Выгрузка результата окончательного упростителя

динамически

-ddump-simpl-iterations

Выгрузка результата каждой итерации упростителя

динамически

-ddump-simpl-stats

Выгрузка статистики упростителя

динамически

-ddump-spec

Выгрузка результата специализации

динамически

-ddump-splices

Выгрузка выражений TH со склейками и их результатами вычисления

динамически

-ddump-stg

Показать вывод CoreToStg

динамически

-ddump-stg-final

Показать результат последнего прохода STG.

динамически

-ddump-stg-unarised

Показать неарнозированный STG

динамически

-ddump-str-signatures

Выгрузка подписей строгости

динамически

-ddump-stranal

Выгрузка результата анализа строгости

динамически

-ddump-tc

Выгрузка результата типизации

динамически

-ddump-tc-ast

Выгрузка результата типизации в виде синтаксического дерева

динамически

-ddump-tc-trace

Отслеживание типизации

динамически

-ddump-ticked

Выгрузка кода, инструментированного HPC (Наблюдение за покрытием кода).

динамически

-ddump-timings

Выгрузка статистики времени выполнения и выделения памяти по этапам

динамически

-ddump-to-file

Выгрузка в файлы вместо стандартного вывода

динамически

-ddump-types

Выгрузка сигнатур типов

динамически

-ddump-worker-wrapper

Выгрузка результата обёртки для рабочих процессов

динамически

-dfaststring-stats

Показать статистику использования быстрых строк по завершении

динамически

-dhex-word-literals

Вывести значения типа Word# в шестнадцатеричном формате.

динамически

-dinitial-unique=⟨s⟩

Начать выделение памяти UniqSupply с ⟨s⟩.

динамически

-dinline-check=⟨str⟩

Выгрузка информации о решениях инлайнинга

динамически

-dno-debug-output

Подавить нежелательный вывод отладки

динамически

-ddebug-output

-dno-typeable-binds

Не генерировать связи для методов Typeable

динамически

-dppr-case-as-let

Выводить одноальтернативные выражения case как строгие let.

динамически

-dppr-cols=⟨n⟩

Установить ширину вывода отладки. Например, -dppr-cols200

динамически

-dppr-debug

Включить подробный вывод отладки

динамически

-dppr-user-length

Установить глубину вывода выражений в сообщениях об ошибках

динамически

-drule-check=⟨str⟩

Выгрузка информации о потенциальном применении правила

динамически

-dshow-passes

Выводить имя каждого прохода по мере его выполнения

динамически

-dstg-lint

Проверка корректности проходов STG

динамически

-dsuppress-all

В выгрузках подавить всё (кроме уникальных элементов), что можно подавить.

динамически

-dsuppress-coercions

Подавить вывод приведений в выгрузках Core для сокращения их размера

динамически

-dsuppress-idinfo

Подавить расширенную информацию об идентификаторах в месте их связывания

динамически

-dsuppress-module-prefixes

Подавить вывод префиксов квалификации модулей

динамически

-dsuppress-stg-free-vars

Подавить вывод списков свободных переменных замыканий в выводе STG

динамически

-dsuppress-ticks

Подавить «ticks» в выводе красивого принтера.

динамически

-dsuppress-timestamps

Подавить временные метки в выгрузках

динамически

-dsuppress-type-applications

Подавить применение типов

динамически

-dsuppress-type-signatures

Подавить сигнатуры типов

динамически

-dsuppress-unfoldings

Подавить вывод устойчивого разворачивания переменной в месте её связывания

динамически

-dsuppress-uniques

Подавить вывод уникальных элементов в выводе отладки (легче использовать diff)

динамически

-dsuppress-var-kinds

Подавить вывод видов переменных

динамически

-dth-dec-file

Выгрузить вычисленные объявления TH в файлы *.th.hs

динамически

-dunique-increment=⟨i⟩

Установить шаг для сгенерированных Unique до ⟨i⟩.

динамически

-dverbose-core2core

Показать вывод каждого прохода core-to-core

динамически

-dverbose-stg2stg

Показать вывод каждого прохода STG-to-STG

динамически

-falignment-sanitisation

Компилировать с проверками выравнивания для всех обращений по ссылкам в таблице информации.

динамически

-fcatch-bottoms

Вставлять выражения error после выражений "bottoming"; полезно при отладке компилятора.

динамически

-fllvm-fill-undef-with-garbage

Инструктировать LLVM заполнять мёртвые регистры STG мусором

динамически

-fproc-alignment

Выравнивать функции по заданному границе.

динамический

-g, -g⟨n⟩

Создавать отладочную информацию DWARF в скомпилированных объектных файлах. ⟨n⟩ может быть 0, 1 или 2, где большие значения создают более подробный вывод. Если ⟨n⟩ опущено, предполагается уровень 2.

динамический

7.6.26. Дополнительные параметры компилятора

Флаг Описание Тип Обратный

-fexternal-interpreter

Выполнять интерпретируемый код в отдельном процессе

динамический

-fglasgow-exts

Устарело. Включает большинство расширений языка; см. Параметры языка для точного перечисления.

динамический

-fno-glasgow-exts

-ghcversion-file ⟨path to ghcversion.h⟩

(Только GHC как компилятор C) Используйте этот ghcversion.h файл

динамический

-H ⟨size⟩

Установить минимальный размер кучи до ⟨size⟩

динамический

-j[⟨n⟩]

При компиляции с --make, компилировать ⟨n⟩ модулей параллельно.

динамический

© 2002–2007 The University Court of the University of Glasgow. All rights reserved.
Licensed under the Glasgow Haskell Compiler License.
https://downloads.haskell.org/~ghc/8.10.2/docs/html/users_guide/flags.html

Spec-Zone.ru

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