Spec-Zone.ru › Haskell 9

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

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

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

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

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

-fabstract-refinement-hole-fits

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

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

-fno-abstract-refinement-hole-fits

-fdefer-diagnostics

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

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

-fdiagnostics-as-json

Выводить диагностику в формате Json, заданном схемой JSON

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

-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-error-index-links=⟨always|auto|never⟩

Выводить ли коды диагностики в виде гиперссылок ANSI на указатель ошибок Haskell.

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

-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 и Levity в типах с полиморфизмом по представлению во время выполнения.

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

-fno-print-explicit-runtime-reps

-fprint-potential-instances

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

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

-fno-print-potential-instances

-fprint-redundant-promotion-ticks

Выводить избыточные маркеры продвижения DataKinds

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

-fno-print-redundant-promotion-ticks

-fprint-typechecker-elaboration

Выводить дополнительные сведения от проверяющего типы.

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

-fno-print-typechecker-elaboration

-fprint-unicode-syntax

Использовать синтаксис Unicode при выводе выражений, типов и родов. См. также 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-error-context

Показывать ли текстовые сведения о контексте ошибки

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

-fno-show-error-context

-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-show-type-of-hole-fits

-fsort-by-size-hole-fits

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

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

-fno-sort-by-size-hole-fits

-fsort-by-subsumption-hole-fits

Сортировать допустимые подходящие выражения по отношению подведения.

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

-fno-sort-by-subsumption-hole-fits

-funclutter-valid-hole-fits

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

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

-Rghc-timing

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

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

-v

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

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

-v⟨n⟩

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

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

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

Подробнее см. в разделе Режимы работы

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

--frontend ⟨module⟩

запустить GHC с указанным плагином внешнего интерфейса; подробности см. в разделе Плагины внешнего интерфейса.

режим

--help, -?

Показать справку

режим

--info

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

режим

--interactive

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

режим

--make

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

режим

--numeric-version

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

режим

--print-booter-version

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

режим

--print-build-platform

показать платформу, для которой был собран GHC

режим

--print-c-compiler-flags

Флаги компилятора C, использованные при сборке GHC

режим

--print-c-compiler-link-flags

Флаги компоновщика C, использованные при сборке GHC

режим

--print-debug-on

показать, был ли GHC собран с -DDEBUG

режим

--print-global-package-db

показать каталог глобальной базы пакетов GHC

режим

--print-have-interpreter

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

режим

--print-have-native-code-generator

показать, поддерживает ли целевая платформа NCG

режим

--print-host-platform

показать платформу хоста для GHC

режим

--print-ld-flags

показать флаги компоновщика, использованные при компиляции GHC

режим

--print-leading-underscore

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

режим

--print-libdir

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

режим

--print-object-splitting-supported

показать, поддерживает ли GHC разделение объектных файлов

режим

--print-project-git-commit-id

показать идентификатор коммита Git, на основе которого собран GHC

режим

--print-project-version

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

режим

--print-rts-ways

показать, в каком режиме собрана RTS

режим

--print-stage

показать номер этапа stage для GHC

режим

--print-support-smp

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

режим

--print-tables-next-to-code

показать, был ли GHC скомпилирован с --enable-tables-next-to-code

режим

--print-target-platform

показать целевую платформу GHC

режим

--print-unregisterised

показать, был ли этот GHC собран в режиме без регистрации

режим

--run ⟨file⟩

Запустить программу на Haskell.

режим

--show-iface ⟨file⟩

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

режим

--show-options

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

режим

--supported-extensions, --supported-languages

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

режим

--version, -V

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

режим

-e ⟨expr⟩

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

режим

-M

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

режим

-shared

Создать разделяемый объект.

режим

5.6.3. Выбор выполняемых этапов

Подробнее см. в разделе Режим пакетного компилятора

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

--merge-objs

Объединить набор объектных файлов в библиотеку GHCi.

режим

-C

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

режим

-c

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

режим

-E

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

режим

-F

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

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

-S

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

режим

-x ⟨suffix⟩

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

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

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

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

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

-dep-makefile ⟨file⟩

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

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

-dep-suffix ⟨suffix⟩

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

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

-dumpdir ⟨dir⟩

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

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

-dynhisuf ⟨suffix⟩

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

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

-dyno ⟨file⟩

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

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

-dynohi ⟨file⟩

задать имя файла для динамического интерфейса

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

-dynosuf ⟨suffix⟩

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

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

-hcsuf ⟨suffix⟩

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

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

-hidir ⟨dir⟩

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

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

-hiedir ⟨dir⟩

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

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

-hiesuf ⟨suffix⟩

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

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

-hisuf ⟨suffix⟩

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

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

-o ⟨file⟩

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

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

-odir ⟨dir⟩

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

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

-ohi ⟨file⟩

задать имя файла для интерфейса

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

-osuf ⟨suffix⟩

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

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

-outputdir ⟨dir⟩

задать выходной каталог

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

-stubdir ⟨dir⟩

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

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

5.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

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

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

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

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

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

-tmpdir ⟨dir⟩

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

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

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

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

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

-i

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

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

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

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

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

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

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

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

--show-iface ⟨file⟩

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

режим

-ddump-hi

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

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

-ddump-hi-diffs

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

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

-ddump-minimal-imports

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

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

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

Подробнее см. в разделе Параметры, связанные с расширенными файлами интерфейса

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

-fvalidate-ide-info

Выполнить ряд проверок целостности расширенных файлов интерфейса

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

-fwrite-ide-info

Записывать расширенные файлы интерфейса

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

5.6.10. Проверка необходимости повторной компиляции

Подробнее см. в разделе Проверка необходимости повторной компиляции

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

-exclude-module=⟨file⟩

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

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

-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

-include-cpp-deps

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

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

-include-pkg-deps

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

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

5.6.11. Параметры интерактивного режима

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

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

-fbreak-on-error

Останавливаться при необработанных исключениях и ошибках

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

-fno-break-on-error

-fbreak-on-exception

Останавливаться при любом выброшенном исключении

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

-fno-break-on-exception

-fbreak-points

Устанавливать точки останова в отладчике GHCi

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

-fno-break-points

-fghci-hist-size=⟨n⟩

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

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

-fghci-leak-check

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

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

-fno-ghci-leak-check

-fimplicit-import-qualified

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

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

-fno-implicit-import-qualified

-fload-initial-targets

Загружать цели при запуске GHCi.

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

-fno-load-initial-targets

-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

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

-no-ignore-dot-ghci

-interactive-print ⟨name⟩

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

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

5.6.12. Пакеты

Подробнее см. в разделе Пакеты

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

-base-unit-id ⟨unit-id⟩

Идентификатор unit-id пакета "base", который будет автоматически подключён.

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

-clear-package-db

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

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

-distrust ⟨pkg⟩

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

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

-distrust-all-packages

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

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

-fpackage-trust

Включить требование доверия к пакетам в Safe 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⟩

Открыть пакет по идентификатору ⟨unit-id⟩

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

-this-unit-id ⟨unit-id⟩

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

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

-trust ⟨pkg⟩

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

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

-user-package-db

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

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

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

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

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

Подробнее см. в разделе Предупреждения и проверка корректности

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

-fenable-th-splice-warnings

Выдавать предупреждения для сплайсов Template Haskell

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

-fno-enable-th-splice-warnings

-fhelpful-errors

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

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

-fno-helpful-errors

-fmax-pmcheck-models=⟨n⟩

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

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

-fshow-warning-groups

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

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

-fno-show-warning-groups

-fvia-C

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

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

-W

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

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

-Wno-extra

-w

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

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

-Wall

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

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

-Wno-all

-Wall-missed-specialisations

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

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

-Wno-all-missed-specialisations

-Wall-missed-specializations

псевдоним для -Wall-missed-specialisations

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

-Wno-all-missed-specializations

-Wambiguous-fields

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

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

-Wauto-orphans

(устарел) Ничего не делает

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

-Wbadly-levelled-types

выдавать предупреждение, если связывание типа используется не на том уровне Template Haskell.

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

-Wno-badly-levelled-types

-Wbadly-staged-types

Устаревший псевдоним для -Wbadly-levelled-types

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

-Wno-badly-staged-types

-Wcompat

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

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

-Wno-compat

-Wcompat-unqualified-imports

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

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

-Wno-compat-unqualified-imports

-Wcpp-undef

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

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

-Wdata-kinds-tc

(устарел) Ничего не делает

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

-Wdefault

включить флаги по умолчанию

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

-Wno-default

-Wdefaulted-exception-context

выдавать предупреждение, если неявный параметр Control.Exception.Context.ExceptionContext получает значение по умолчанию Control.Exception.Context.emptyExceptionContext.

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

-Wnop-defaulted-exception-context

-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

-Wdeprecated-pragmas

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

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

-Wno-deprecated-pragmas

-Wdeprecations

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

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

-Wno-deprecations

-Wderiving-defaults

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

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

-Wno-deriving-defaults

-Wderiving-typeable

выдавать предупреждение при выведении Typeable

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

-Wno-deriving-typeable

-Wdodgy-exports

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

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

-Wno-dodgy-exports

-Wdodgy-foreign-imports

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

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

-Wno-dodgy-foreign-imports

-Wdodgy-imports

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

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

-Wno-dodgy-imports

-Wduplicate-constraints

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

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

-Wno-duplicate-constraints

-Wduplicate-exports

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

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

-Wno-duplicate-exports

-Wempty-enumerations

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

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

-Wno-empty-enumerations

-Werror

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

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

-Wwarn

-Weverything

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

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

-w

-Wextended-warnings

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

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

-Wno-extended-warnings

-Wextra

псевдоним для -W

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

-Wno-extra

-Wforall-identifier

(устарел) Ничего не делает

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

-Wgadt-mono-local-binds

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

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

-Wno-gadt-mono-local-binds

-Whi-shadowing

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

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

-Wno-hi-shadowing

-Widentities

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

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

-Wno-identities

-Wimplicit-kind-vars

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

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

-Wno-implicit-kind-vars

-Wimplicit-lift

выдавать предупреждения о неявном lift в кавычках Template Haskell

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

-Wno-implicit-lift

-Wimplicit-prelude

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

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

-Wno-implicit-prelude

-Wimplicit-rhs-quantification

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

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

-Wno-implicit-rhs-quantification

-Winaccessible-code

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

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

-Wno-inaccessible-code

-Wincomplete-export-warnings

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

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

-Wno-incomplete-export-warnings

-Wincomplete-patterns

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

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

-Wno-incomplete-patterns

-Wincomplete-record-selectors

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

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

-Wno-incomplete-record-selectors

-Wincomplete-record-updates

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

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

-Wno-incomplete-record-updates

-Wincomplete-uni-patterns

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

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

-Wno-incomplete-uni-patterns

-Winconsistent-flags

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

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

-Wno-inconsistent-flags

-Winferred-safe-imports

выдавать предупреждение, если модуль с явно указанным режимом Safe Haskell импортирует модуль с режимом Safe-Inferred

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

-Wno-inferred-safe-imports

-Winline-rule-shadowing

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

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

-Wno-inline-rule-shadowing

-Winvalid-haddock

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

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

-Wno-invalid-haddock

-Wloopy-superclass-solve

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

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

-Wno-loopy-superclass-solve

-Wmisplaced-pragmas

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

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

-Wno-misplaced-pragmas

-Wmissed-extra-shared-lib

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

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

-Wno-missed-extra-shared-lib

-Wmissed-specialisations

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

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

-Wno-missed-specialisations

-Wmissed-specializations

псевдоним для -Wmissed-specialisations

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

-Wno-missed-specializations

-Wmissing-deriving-strategies

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

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

-Wno-missing-deriving-strategies

-Wmissing-export-lists

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

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

-Wno-missing-export-lists

-Wmissing-exported-pattern-synonym-signatures

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

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

-Wno-missing-exported-pattern-synonym-signatures

-Wmissing-exported-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

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

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

-Wno-missing-import-lists

-Wmissing-kind-signatures

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

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

-Wno-missing-kind-signatures

-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-poly-kind-signatures

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

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

-Wno-missing-poly-kind-signatures

-Wmissing-role-annotations

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

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

-Wno-role-annotations-signatures

-Wmissing-safe-haskell-mode

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

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

-Wno-missing-safe-haskell-mode

-Wmissing-signatures

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

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

-Wno-missing-signatures

-Wmissing-space-after-bang

(устарел) Ничего не делает

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

-Wmonomorphism-restriction

выдавать предупреждение при применении ограничения мономорфизма

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

-Wno-monomorphism-restriction

-Wname-shadowing

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

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

-Wno-name-shadowing

-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

-Wnot

(устарел) Псевдоним для -w

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

-Woperator-whitespace

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

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

-Wno-operator-whitespace

-Woperator-whitespace-ext-conflict

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

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

-Wno-operator-whitespace-ext-conflict

-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

-Wpattern-namespace-specifier

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

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

-Wno-pattern-namespace-specifier

-Wprepositive-qualified-module

сообщать об импортах с начальным/предшествующим именам модулей словом "qualified"

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

-Wno-prepositive-qualified-module

-Wredundant-bang-patterns

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

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

-Wno-redundant-bang-patterns

-Wredundant-constraints

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

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

-Wno-redundant-constraints

-Wredundant-record-wildcards

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

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

-Wno-redundant-record-wildcards

-Wredundant-strictness-flags

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

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

-Wno-redundant-strictness-flags

-Wrule-lhs-equalities

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

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

-Wno-rule-lhs-equalities

-Wsafe

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

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

-Wno-safe

-Wsemigroup

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

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

-Wno-semigroup

-Wsimplifiable-class-constraints

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

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

-Wno-simplifiable-class-constraints

-Wstar-binder

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

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

-Wno-star-binder

-Wstar-is-type

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

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

-Wno-star-is-type

-Wtabs

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

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

-Wno-tabs

-Wterm-variable-capture

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

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

-Wtrustworthy-safe

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

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

-Wno-safe

-Wtype-defaults

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

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

-Wno-type-defaults

-Wtype-equality-out-of-scope

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

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

-Wno-type-equality-out-of-scope

-Wtype-equality-requires-operators

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

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

-Wno-type-equality-requires-operators

-Wtyped-holes

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

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

-Wno-typed-holes

-Wunbanged-strict-patterns

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

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

-Wno-unbanged-strict-patterns

-Wunicode-bidirectional-format-characters

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

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

-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-unsupported-llvm-version

-Wunticked-promoted-constructors

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

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

-Wno-unticked-promoted-constructors

-Wunusable-unpack-pragmas

выдавать предупреждение, если прагму {-# UNPACK #-} невозможно использовать

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

-Wno-unusable-unpack-pragmas

-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

-Wuseless-specialisations

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

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

-Wno-useless-specialisations

-Wuseless-specializations

псевдоним для -Wuseless-specialisations

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

-Wno-useless-specializations

-Wview-pattern-signatures

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

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

-Wno-view-pattern-signatures

-Wwarn

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

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

-Werror

-Wwarnings-deprecations

выдавать предупреждение об использовании функций и типов с прагмами DEPRECATED или прагмами WARNING с категорией deprecated. Псевдоним для -Wdeprecations.

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

-Wno-warnings-deprecations

-Wwrong-do-bind

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

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

-Wno-wrong-do-bind

-Wx-⟨category⟩

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

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

-Wno-x-⟨category⟩

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

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

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

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

-O, -O1

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

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

-O0

-O0

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

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

-O2

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

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

-O0

-O⟨n⟩

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

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

-O0

5.6.16. Отдельные оптимизации

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

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

-fasm-shortcutting

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

dynamic

-fno-asm-shortcutting

-fbinary-blob-threshold=⟨n⟩

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

dynamic

-fblock-layout-cfg

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

dynamic

-fno-block-layout-cfg

-fblock-layout-weightless

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

dynamic

-fno-block-layout-weightless

-fblock-layout-weights

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

dynamic

-fcall-arity

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

dynamic

-fno-call-arity

-fcase-folding

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

dynamic

-fno-case-folding

-fcase-merge

Включить объединение выражений case. Включается флагом -O.

dynamic

-fno-case-merge

-fcmm-control-flow

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

dynamic

-fno-cmm-control-flow

-fcmm-elim-common-blocks

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

dynamic

-fno-cmm-elim-common-blocks

-fcmm-sink

Включить перемещение операций вниз в Cmm. Включается флагом -O.

dynamic

-fno-cmm-sink

-fcmm-static-pred

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

dynamic

-fno-cmm-static-pred

-fcore-constant-folding

Включить свёртку констант в Core. Включается флагом -O.

dynamic

-fno-core-constant-folding

-fcpr-anal

Включить анализ результата-конструируемого продукта (Constructed Product Result). Включается флагом -O.

dynamic

-fno-cpr-anal

-fcross-module-specialise

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

dynamic

-fno-cross-module-specialise

-fcse

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

dynamic

-fno-cse

-fdicts-cheap

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

dynamic

-fno-dicts-cheap

-fdicts-strict

Сделать словари строгими. Включается флагом -O2.

dynamic

-fno-dicts-strict

-fdmd-tx-dict-sel

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

dynamic

-fno-dmd-tx-dict-sel

-fdmd-unbox-width=⟨n⟩

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

dynamic

-fdo-clever-arg-eta-expansion

Включить сложное эта-расширение аргументов. Включается флагом -O2.

dynamic

-fno-do-clever-arg-eta-expansion

-fdo-eta-reduction

Включить эта-сокращение. По умолчанию всегда включено.

dynamic

-fno-do-eta-reduction

-fdo-lambda-eta-expansion

Включить эта-расширение лямбда-выражений. По умолчанию всегда включено.

dynamic

-fno-do-lambda-eta-expansion

-feager-blackholing

Включить упреждающую блокировку чёрной дыры

dynamic

-fenable-rewrite-rules

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

dynamic

-fno-enable-rewrite-rules

-fexcess-precision

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

dynamic

-fno-excess-precision

-fexitification

Включить оптимизацию exitification. Включается флагом -O.

dynamic

-fno-exitification

-fexpose-all-unfoldings

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

dynamic

-fno-expose-all-unfoldings

-fexpose-overloaded-unfoldings

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

dynamic

-fno-expose-overloaded-unfoldings

-ffloat-in

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

dynamic

-fno-float-in

-ffull-laziness

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

dynamic

-fno-full-laziness

-ffun-to-thunk

(устарел) Заменён флагом -ffull-laziness.

dynamic

-fno-fun-to-thunk

-fignore-asserts

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

dynamic

-fno-ignore-asserts

-fignore-interface-pragmas

Игнорировать прагмы в файлах интерфейса. Включается только флагом -O0.

dynamic

-fno-ignore-interface-pragmas

-finline-generics

Добавлять к методам производных экземпляров Generic и Generic1 прагмы INLINE[1] на основе эвристик. Включается флагом -O.

dynamic

-fno-inline-generics

-finline-generics-aggressively

Добавлять прагмы INLINE[1] к методам всех производных экземпляров Generic и Generic1.

dynamic

-fno-inline-generics-aggressively

-finter-module-far-jumps

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

dynamic

-fno-inter-module-far-jumps

-fkeep-auto-rules

Сохранять все правила "auto", созданные специализацией

dynamic

-fno-keep-auto-rules

-flate-dmd-anal

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

dynamic

-fno-late-dmd-anal

-flate-specialise

Выполнить поздний проход специализации

dynamic

-fno-late-specialise

-fliberate-case

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

dynamic

-fno-liberate-case

-fliberate-case-threshold=⟨n⟩

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

dynamic

-fno-liberate-case-threshold

-fllvm-pass-vectors-in-regs

(устарел) Ничего не делает

dynamic

-flocal-float-out

Разрешить вынос локальных определений из привязок let.

dynamic

-fno-local-float-out

-flocal-float-out-top-level

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

dynamic

-fno-local-float-out-top-level

-floopification

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

dynamic

-fno-loopification

-fmax-forced-spec-args=⟨n⟩

по умолчанию: 333. Максимальное количество аргументов-значений для принудительных специализаций SpecConstr.

dynamic

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

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

dynamic

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

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

dynamic

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

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

dynamic

-fmax-simplifier-iterations=⟨n⟩

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

dynamic

-fmax-uncovered-patterns=⟨n⟩

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

dynamic

-fmax-worker-args=⟨n⟩

по умолчанию: 10. Максимальное количество аргументов-значений для рабочего кода.

dynamic

-fno-opt-coercion

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

dynamic

-fno-pre-inlining

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

dynamic

-fno-state-hack

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

dynamic

-fnum-constant-folding

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

dynamic

-fno-num-constant-folding

-fobject-determinism

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

dynamic

-fno-object-determinism

-fomit-interface-pragmas

Не генерировать прагмы интерфейса. Включается только флагом -O0.

dynamic

-fno-omit-interface-pragmas

-fomit-yields

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

dynamic

-fno-omit-yields

-foptimal-applicative-do

Использовать для ApplicativeDo более медленный, но более эффективный алгоритм

dynamic

-fno-optimal-applicative-do

-fpedantic-bottoms

Повысить точность обработки bottom в GHC (см. также -fno-state-hack). В частности, GHC не будет выполнять эта-расширение через выражение case.

dynamic

-fno-pedantic-bottoms

-fpolymorphic-specialisation

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

dynamic

-fno-polymorphic-specialisation

-fregs-graph

Использовать распределитель регистров на основе раскраски графа в генераторе машинного кода.

dynamic

-fno-regs-graph

-fregs-iterative

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

dynamic

-fno-regs-iterative

-fsimpl-tick-factor=⟨n⟩

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

dynamic

-fsimplifier-phases=⟨n⟩

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

dynamic

-fsolve-constant-dicts

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

dynamic

-fno-solve-constant-dicts

-fspec-constr

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

dynamic

-fno-spec-constr

-fspec-constr-count=⟨n⟩

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

dynamic

-fno-spec-constr-count

-fspec-constr-keen

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

dynamic

-fno-spec-constr-keen

-fspec-constr-threshold=⟨n⟩

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

dynamic

-fno-spec-constr-threshold

-fspec-eval

Включить спекулятивное вычисление.

dynamic

-fno-spec-eval

-fspec-eval-dictfun

Включить спекулятивное вычисление функций-словарей.

dynamic

-fno-spec-eval-dictfun

-fspecialise

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

dynamic

-fno-specialise

-fspecialise-aggressively

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

dynamic

-fno-specialise-aggressively

-fspecialise-incoherents

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

dynamic

-fno-specialise-incoherents

-fstatic-argument-transformation

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

dynamic

-fno-static-argument-transformation

-fstg-cse

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

dynamic

-fno-stg-cse

-fstg-lift-lams

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

dynamic

-fno-stg-lift-lams

-fstg-lift-lams-known

Разрешить преобразование известных вызовов в неизвестные при позднем подъёме лямбд.

dynamic

-fno-stg-lift-lams-known

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

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

dynamic

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

-fstg-lift-lams-rec-args

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

dynamic

-fstg-lift-lams-rec-args-any

-fstrictness

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

dynamic

-fno-strictness

-fstrictness-before=⟨n⟩

Выполнить дополнительный анализ спроса перед этапом упрощения ⟨n⟩

dynamic

-funbox-small-strict-fields

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

dynamic

-fno-unbox-small-strict-fields

-funbox-strict-fields

Уплощать строгие поля конструкторов

dynamic

-fno-unbox-strict-fields

-funfolding-case-scaling=⟨n⟩

по умолчанию: 30. Применять штраф (стоимость встраивания * 1/n) для каждого уровня вложенности case.

dynamic

-funfolding-case-threshold=⟨n⟩

по умолчанию: 2. Снижать встраивание для case, вложенных глубже, чем на n уровней.

dynamic

-funfolding-creation-threshold=⟨n⟩

по умолчанию: 750. Настроить параметры развёртки.

dynamic

-funfolding-dict-discount=⟨n⟩

по умолчанию: 30. Настроить параметры развёртки.

dynamic

-funfolding-fun-discount=⟨n⟩

по умолчанию: 60. Настроить параметры развёртки.

dynamic

-funfolding-keeness-factor=⟨n⟩

Этот параметр устарел в GHC 9.0.1.

dynamic

-funfolding-use-threshold=⟨n⟩

по умолчанию: 90. Настроить параметры развёртки.

dynamic

-fworker-wrapper

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

dynamic

-fworker-wrapper-cbv

Включить разбиение worker/wrapper для обёрток, единственная цель которых — вычислять аргументы.

dynamic

-fwrite-if-compression=⟨n⟩

по умолчанию: 2. Настроить уровень сжатия файлов интерфейса.

dynamic

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

Подробнее см. в разделе Профилирование

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

-auto

(устарел) Псевдоним для -fprof-auto-exported

dynamic

-auto-all

(устарел) Псевдоним для -fprof-auto

dynamic

-caf-all

(устарел) Псевдоним для -fprof-cafs

dynamic

-fno-prof-count-entries

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

dynamic

-fprof-count-entries

-fprof-auto

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

dynamic

-fno-prof-auto

-fprof-auto-calls

Автоматически добавлять SCC\ s ко всем местам вызова

dynamic

-fno-prof-auto

-fprof-auto-exported

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

dynamic

-fno-prof-auto

-fprof-auto-top

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

dynamic

-fno-prof-auto

-fprof-cafs

Автоматически добавлять SCC\ s ко всем CAF

dynamic

-fno-prof-cafs

-fprof-callers=⟨name⟩

Автоматически добавлять SCC\ s ко всем местам вызова указанной функции.

dynamic

-fprof-late

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

dynamic

-fno-prof-late

-fprof-late-inline

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

dynamic

-fno-prof-late-inline

-fprof-late-overloaded

Автоматически добавлять SCC\ s ко всем перегруженным привязкам верхнего уровня после выполнения конвейера Core.

dynamic

-fno-prof-late-overloaded

-fprof-late-overloaded-calls

Автоматически добавлять SCC\ s ко всем местам вызова, содержащим аргументы-словари, после выполнения конвейера Core.

dynamic

-fno-prof-late-overloaded-calls

-fprof-manual

Обрабатывать ручные аннотации SCC.

dynamic

-fno-prof-manual

-no-auto

(устарел) Псевдоним для -fno-prof-auto

dynamic

-no-auto-all

(устарел) Псевдоним для -fno-prof-auto

dynamic

-no-caf-all

(устарел) Псевдоним для -fno-prof-cafs

dynamic

-prof

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

dynamic

-ticky

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

dynamic

-ticky-allocd

Отслеживать количество выделений памяти для каждого типа замыкания.

dynamic

-ticky-ap-thunk

Не использовать стандартные AP thunks, чтобы повысить надёжность счётчиков входов.

dynamic

-ticky-dyn-thunk

Отслеживать выделение памяти для динамических thunks

dynamic

-ticky-LNE

Обрабатывать связывания точек соединения аналогично thunks/функциям.

dynamic

-ticky-tag-checks

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

dynamic

5.6.18. Параметры покрытия программы

Подробнее см. в разделе Наблюдение за покрытием кода

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

-fhpc

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

dynamic

-hpcdir⟨dir⟩

Задать каталог, в который GHC помещает файлы .mix.

dynamic

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

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

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

-cpp

Запустить препроцессор C для исходных файлов Haskell

dynamic

-D⟨symbol⟩[=⟨value⟩]

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

dynamic

-U⟨symbol⟩

-I⟨dir⟩

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

dynamic

-U⟨symbol⟩

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

dynamic

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

Подробнее см. в разделе Параметры, влияющие на генерацию кода

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

-dynamic-too

При компиляции создавать динамические объектные файлы наряду со статическими объектными файлами

dynamic

-fasm

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

dynamic

-fllvm

-fbyte-code

Генерировать байт-код

dynamic

-fbyte-code-and-object-code

Генерировать объектный код и байт-код

dynamic

-fexpose-internal-symbols

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

dynamic

-fexternal-dynamic-refs

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

dynamic

-fllvm

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

dynamic

-fasm

-fno-code

Не выполнять генерацию кода

dynamic

-fobject-code

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

dynamic

-fPIC

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

dynamic

-fPIE

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

dynamic

-fprefer-byte-code

Использовать байт-код, если он доступен, для вычисления вставок TH

dynamic

-fwrite-if-simplified-core

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

dynamic

-fwrite-interface

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

dynamic

5.6.21. Параметры компоновки

Подробнее см. в разделе Параметры, влияющие на компоновку

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

-c

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

режим

-debug

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

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

-dylib-install-name ⟨path⟩

Задать имя установки (с помощью -install_name, передаваемого компоновщику Apple), указав полный путь установки файла библиотеки. Все библиотеки и исполняемые файлы, которые впоследствии будут с ней скомпонованы, будут использовать этот путь как место поиска библиотеки во время выполнения. (Только для Darwin/OS X)

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

-dynamic

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

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

-dynload

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

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

-eventlog

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

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

-fcompact-unwind

Указать компоновщику создать секцию __compact_unwind.

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

-fkeep-cafs

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

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

-flink-rts

Компоновка среды выполнения при создании разделяемой или статической библиотеки

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

-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.

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

-fsplit-sections, -split-sections

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

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

-fno-split-sections

-fuse-rpaths

Задать rpath на основе флагов -L

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

-fwhole-archive-hs-libs

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

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

-L ⟨dir⟩

Добавить ⟨dir⟩ в список каталогов для поиска библиотек

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

-l ⟨lib⟩

Скомпоновать библиотеку ⟨lib⟩

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

-main-is ⟨thing⟩

Задать главный модуль и функцию

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

-no-hs-main

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

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

-no-pie

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

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

-pie

-no-rtsopts-suggestions

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

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

-package ⟨name⟩

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

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

-pie

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

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

-no-pie

-rdynamic

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

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

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

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

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

-shared

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

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

-single-threaded

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

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

-threaded

-static

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

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

-staticlib

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

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

-threaded

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

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

-single-threaded

-with-rtsopts=⟨opts⟩

Задать параметры RTS по умолчанию: ⟨opts⟩.

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

5.6.22. Параметры плагинов

Подробнее см. в разделе Плагины компилятора

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

-fclear-plugins

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

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

-fplugin-library=⟨file-path⟩;⟨unit-id⟩;⟨module⟩;⟨args⟩

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

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

-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⟩

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

5.6.23. Замена этапов

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

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

-pgma ⟨cmd⟩

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

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

-pgmc ⟨cmd⟩

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

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

-pgmCmmP ⟨cmd⟩

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

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

-pgmcxx ⟨cmd⟩

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

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

-pgmF ⟨cmd⟩

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

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

-pgmi ⟨cmd⟩

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

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

-pgminstall_name_tool ⟨cmd⟩

Использовать ⟨cmd⟩ как программу для внедрения runpath в библиотеки mach-o dylib в macOS

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

-pgmJSP ⟨cmd⟩

Использовать ⟨cmd⟩ в качестве препроцессора C для JavaScript (только для javascript-backend)

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

-pgmL ⟨cmd⟩

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

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

-pgml ⟨cmd⟩

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

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

-pgmlas ⟨cmd⟩

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

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

-pgmlc ⟨cmd⟩

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

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

-pgmlm ⟨cmd⟩

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

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

-pgmlo ⟨cmd⟩

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

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

-pgmotool ⟨cmd⟩

Использовать ⟨cmd⟩ как программу для проверки библиотек mach-o dylib в macOS

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

-pgmP ⟨cmd⟩

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

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

-pgms ⟨cmd⟩

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

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

-pgmwindres ⟨cmd⟩

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

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

5.6.24. Передача параметров определённым этапам

Подробнее см. в разделе Передача параметров определённому этапу

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

-opta ⟨option⟩

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

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

-optc ⟨option⟩

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

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

-optCmmP ⟨option⟩

передать ⟨option⟩ препроцессору C для C--.

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

-optcxx ⟨option⟩

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

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

-optF ⟨option⟩

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

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

-opti ⟨option⟩

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

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

-optJSP ⟨option⟩

передать ⟨option⟩ препроцессору C для JavaScript (только для javascript-backend)

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

-optL ⟨option⟩

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

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

-optl ⟨option⟩

передать ⟨option⟩ компоновщику

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

-optlas ⟨option⟩

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

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

-optlc ⟨option⟩

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

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

-optlm ⟨option⟩

передать ⟨option⟩ компоновщику при объединении объектных файлов.

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

-optlo ⟨option⟩

передать ⟨option⟩ оптимизатору LLVM

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

-optP ⟨option⟩

передать ⟨option⟩ cpp (только с -cpp)

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

-optwindres ⟨option⟩

передать ⟨option⟩ программе windres.

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

-pgmc-supports-no-pie

(устарел) Указать, что компоновщик поддерживает -no-pie

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

-pgml-supports-no-pie

Указать, что компоновщик поддерживает -no-pie

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

5.6.25. Параметры, зависящие от платформы

Подробнее см. в разделе Флаги, зависящие от платформы

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

-mavx

(только x86) Включить поддержку SIMD-расширений AVX

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

-mavx2

(только x86) Включить поддержку SIMD-расширений AVX2

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

-mavx512cd

(только x86) Включить поддержку SIMD-расширений AVX512-CD

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

-mavx512er

(только x86) Включить поддержку SIMD-расширений AVX512-ER

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

-mavx512f

(только x86) Включить поддержку SIMD-расширений AVX512-F

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

-mavx512pf

(только x86) Включить поддержку SIMD-расширений AVX512-PF

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

-mbmi

(только x86) Использовать BMI1 для операций манипулирования битами

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

-mbmi2

(только x86) Использовать BMI2 для операций манипулирования битами

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

-mfma

Использовать встроенные инструкции FMA для операций с плавающей точкой «умножение с последующим сложением»

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

-msse

(только x86) Использовать SSE для операций с плавающей точкой

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

-msse2

(только x86) Использовать SSE2 для операций с плавающей точкой

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

-msse3

(только x86) Использовать SSE3 для операций с плавающей точкой

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

-msse4

(только x86) Использовать SSE4 для операций с плавающей точкой

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

-msse4.2

(только x86) Использовать SSE4.2 для операций с плавающей точкой

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

-mssse3

(только x86) Использовать SSSE3 для векторных операций

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

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

Подробнее см. в разделе Отладка компилятора

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

-dasm-lint

Проверка корректности прохода ASM

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

-dcmm-lint

Проверка корректности прохода C-\-

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

-dcore-lint

Включить внутреннюю проверку корректности

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

-ddisable-js-c-sources

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

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

-ddisable-js-minifier

Генерировать отформатированный код JavaScript вместо минифицированного (компактного) кода.

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

-ddump-asm

Вывести итоговый ассемблерный код

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

-ddump-asm-conflicts

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

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

-ddump-asm-liveness

Вывести ассемблерный код с информацией о времени жизни регистров

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

-ddump-asm-native

Вывести исходный ассемблерный код

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

-ddump-asm-regalloc

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

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

-ddump-asm-regalloc-stages

Вывести этапы построения/сброса в память распределителя регистров -fregs-graph.

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

-ddump-asm-stats

Вывести статистику распределителя регистров.

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

-ddump-bcos

Вывести байт-код интерпретатора

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

-ddump-c-backend

Вывести код C, созданный бэкендом C (без распределения регистров).

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

-ddump-call-arity

Вывести результат прохода анализа арности вызовов.

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

-ddump-cfg-weights

Вывести предполагаемые веса CFG.

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

-ddump-cmm

Вывести итоговый результат C-\-

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

-ddump-cmm-caf

Вывести результаты прохода анализа CAF в C-\-.

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

-ddump-cmm-cbe

Вывести результаты устранения общих блоков

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

-ddump-cmm-cfg

Вывести результаты прохода оптимизации потока управления C-\-.

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

-ddump-cmm-cps

Вывести результаты прохода CPS

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

-ddump-cmm-from-stg

Вывести результат преобразования STG в C-\-

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

-ddump-cmm-info

Вывести результаты прохода дополнения таблиц информации C-\-.

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

-ddump-cmm-opt

Вывести результаты проходов оптимизации C-\- в 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-thread-sanitizer

Вывести результаты прохода развертывания ThreadSanitizer для C-\-.

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

-ddump-cmm-verbose

Записывать результаты основных проходов конвейера C-\- в файлы

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

-ddump-cmm-verbose-by-proc

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

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

-ddump-core-stats

Вывести однострочную сводку размера программы Core в конце конвейера оптимизации

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

-ddump-cpr-signatures

Вывести сигнатуры CPR

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

-ddump-cpranal

Вывести результат анализа CPR

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

-ddump-cs-trace

Трассировать решатель ограничений

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

-ddump-cse

Вывести результат CSE

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

-ddump-debug

Вывести сгенерированную отладочную информацию DWARF

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

-ddump-deriv

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

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

-ddump-dmd-signatures

Вывести сигнатуры требований верхнего уровня

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

-ddump-dmdanal

Вывести результат анализа требований

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

-ddump-ds, -ddump-ds-preopt

Вывести результат десахаризации.

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

-ddump-ec-trace

Трассировать проверку исчерпывающего сопоставления с образцом

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

-ddump-exitify

Вывести результат прохода преобразования выходов.

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

-ddump-faststrings

Вывести всю таблицу FastString по завершении

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

-ddump-file-prefix=⟨str⟩

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

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

-ddump-float-in

Вывести результат переноса внутрь

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

-ddump-foreign

Вывести заглушки foreign export

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

-ddump-full-laziness, -ddump-float-out

Вывести результат прохода полной ленивости

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

-ddump-hie

Вывести синтаксическое дерево файла hie

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

-ddump-hpc

Псевдоним для -ddump-ticked.

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

-ddump-if-trace

Трассировать файлы интерфейсов

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

-ddump-inlinings

Вывести подстановки, выполненные упрощателем.

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

-ddump-js

Вывести итоговый код JavaScript

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

-ddump-json

(устарел) Вместо него используйте -fdiagnostics-as-json

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

-ddump-late-cc

Вывести Core с добавленными поздними центрами затрат

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

-ddump-liberate-case

Вывести результат преобразования liberate case

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

-ddump-llvm

Вывести промежуточный код LLVM.

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

-ddump-mod-map

Вывести состояние базы данных сопоставления модулей.

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

-ddump-occur-anal

Вывести результат анализа вхождений

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

-ddump-opt-cmm

Вывести результаты проходов оптимизации C-\- в C-\-

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

-ddump-parsed

Вывести дерево разбора

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

-ddump-parsed-ast

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

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

-ddump-prep

Вывести подготовленный Core

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

-ddump-rn

Вывести результат переименователя

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

-ddump-rn-ast

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

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

-ddump-rn-stats

Статистика переименователя

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

-ddump-rn-trace

Трассировать переименователь

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

-ddump-rtti

Трассировать вывод типов во время выполнения

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

-ddump-rule-firings

Вывести сведения о срабатывании правил

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

-ddump-rule-rewrites

Вывести подробные сведения о срабатывании правил

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

-ddump-rules

Вывести правила переписывания

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

-ddump-simpl

Вывести итоговый результат упрощателя

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

-ddump-simpl-iterations

Вывести результат каждой итерации упрощателя

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

-ddump-simpl-stats

Вывести статистику упрощателя

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

-ddump-simpl-trace

Вывести трассировочные сообщения упрощателя

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

-ddump-spec

Вывести результат специализатора

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

-ddump-spec-constr

Вывести результат специализатора SpecConstr

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

-ddump-splices

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

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

-ddump-static-argument-transformation

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

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

-ddump-stg

(устарел) Псевдоним для -ddump-stg-from-core

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

-ddump-stg-cg

Показать результат после Stg2Stg

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

-ddump-stg-final

Показать результат последнего прохода STG.

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

-ddump-stg-from-core

Показать результат CoreToStg

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

-ddump-stg-from-js-sinker

Показать результат перемещения JavaScript вниз по графу

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

-ddump-stg-tags

Показать результат прохода вывода тегов.

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

-ddump-stg-unarised

Показать STG после устранения унарных типов

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

-ddump-str-signatures

(устарел) Псевдоним для -ddump-dmd-signatures

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

-ddump-stranal

(устарел) Псевдоним для -ddump-dmdanal

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

-ddump-tc

Вывести результат проверки типов

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

-ddump-tc-ast

Вывести результат проверки типов в виде синтаксического дерева

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

-ddump-tc-trace

Трассировать проверку типов

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

-ddump-ticked

Вывести код, инструментированный HPC (Наблюдение за покрытием кода).

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

-ddump-timings

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

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

-ddump-to-file

Выводить в файлы вместо stdout

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

-ddump-types

Вывести сигнатуры типов

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

-ddump-verbose-inlinings

Вывести все рассматриваемые подстановки

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

-ddump-view-pattern-commoning

Вывести объединенные шаблоны с представлением

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

-ddump-worker-wrapper

Вывести результат преобразования worker-wrapper

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

-dfaststring-stats

Показать статистику использования fast string по завершении

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

-dhex-word-literals

Выводить значения типа Word# в шестнадцатеричном формате.

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

-dinitial-unique=⟨s⟩

Начать выделение UniqSupply со значения ⟨s⟩.

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

-dinline-check=⟨str⟩

Вывести сведения о решениях по подстановке

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

-dipe-stats

Показать статистику сведений IPE

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

-dkeep-comments

Включать комментарии в результат работы парсера. Полезно в сочетании с -ddump-parsed-ast.

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

-dlinear-core-lint

Включить внутреннюю проверку корректности

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

-dlint

Включить несколько стандартных внутренних проверок корректности

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

-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-coercion-types

Не выводить типы приведений в дампах Core, чтобы сделать их короче

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

-dsuppress-coercions

Не выводить приведения в дампах Core, чтобы сделать их короче

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

-dsuppress-core-sizes

Не выводить статистику размера Core для каждой привязки (начиная с версии 9.4)

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

-dsuppress-idinfo

Не выводить расширенные сведения об идентификаторах в местах их связывания

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

-dsuppress-module-prefixes

Не выводить префиксы квалификаторов модулей

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

-dsuppress-stg-free-vars

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

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

-dsuppress-stg-reps

Не выводить аннотации представления для аргументов STG.

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

-dsuppress-ticks

Не выводить «тики» в форматированном выводе.

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

-dsuppress-timestamps

Не выводить временные метки в дампах

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

-dsuppress-type-applications

Не выводить применения типов

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

-dsuppress-type-signatures

Не выводить сигнатуры типов

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

-dsuppress-unfoldings

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

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

-dsuppress-uniques

Не выводить уникальные идентификаторы в отладочном выводе (удобнее использовать diff)

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

-dsuppress-var-kinds

Не выводить виды переменных

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

-dtag-inference-checks

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

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

-dth-dec-file

Вывести вычисленные объявления TH в файлы *.th.hs

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

-dunique-increment=⟨i⟩

Задать приращение для генерируемых Unique равным ⟨i⟩.

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

-dverbose-core2core

Показывать вывод каждого прохода преобразования Core в Core

dynamic

-dverbose-stg2stg

Показывать вывод каждого прохода преобразования STG в STG

dynamic

-fadd-bco-name

Добавлять инструкции BCO_NAME в генерируемый байт-код.

dynamic

-fno-add-bco-name

-falignment-sanitisation

Компилировать с проверками выравнивания для всех разыменований информационных таблиц.

dynamic

-fcatch-nonexhaustive-cases

Добавлять вариант error по умолчанию в выражения case, не имеющие такого варианта.

dynamic

-fcheck-prim-bounds

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

dynamic

-fcmm-thread-sanitizer

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

dynamic

-fdistinct-constructor-tables

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

dynamic

-fdump-with-ways

Включать тег активированных способов сборки в расширение файлов дампа.

dynamic

-finfo-table-map

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

dynamic

-finfo-table-map-with-fallback

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

dynamic

-fno-info-table-map-with-fallback

-fllvm-fill-undef-with-garbage

Указать LLVM заполнять мусорными данными неиспользуемые регистры STG

dynamic

-fno-info-table-map-with-fallback

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

dynamic

-finfo-table-map-with-fallback

-fno-info-table-map-with-stack

Не включать в карту информационных таблиц таблицы для замыканий STACK.

dynamic

-finfo-table-map-with-stack

-forig-thunk-info

Генерировать кадры стека stg_orig_thunk_info при входе в thunk

dynamic

-fproc-alignment

Выравнивать функции по заданной границе.

dynamic

-funoptimized-core-for-interpreter

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

dynamic

-fno-unoptimized-core-for-interpreter

-g, -g⟨n⟩

Создавать отладочную информацию DWARF в скомпилированных объектных файлах. ⟨n⟩ может принимать значения 0, 1 или 2; чем выше значение, тем подробнее вывод. Если ⟨n⟩ не указано, используется уровень 2.

dynamic

5.6.27. Прочие параметры компилятора

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

-ddump-mod-cycles

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

dynamic

-fdefer-out-of-scope-variables

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

dynamic

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

-fdefer-type-errors

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

dynamic

-fno-defer-type-errors

-fdefer-typed-holes

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

dynamic

-fno-defer-typed-holes

-fexternal-interpreter

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

dynamic

-ffamily-application-cache

Использовать кэш при редукции применений семейств типов

dynamic

-fno-family-application-cache

-fghci-browser

Включить режим браузера wasm ghci.

dynamic

-fghci-browser-host

Адрес хоста для режима браузера wasm ghci.

dynamic

-fghci-browser-playwright-browser-type

Тип браузера Playwright.

dynamic

-fghci-browser-playwright-launch-opts

Параметры Playwright browser.launch().

dynamic

-fghci-browser-port

Порт хоста для режима браузера wasm ghci.

dynamic

-fghci-browser-puppeteer-launch-opts

Параметры puppeteer.launch().

dynamic

-fghci-browser-redirect-wasi-console

Перенаправлять stdout/stderr консоли wasi обратно в ghci хоста.

dynamic

-fglasgow-exts

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

dynamic

-fno-glasgow-exts

-fno-safe-haskell

Отключить Safe Haskell

dynamic

-fwrite-if-self-recomp

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

dynamic

-fwrite-if-self-recomp-flags

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

dynamic

-ghcversion-file ⟨path to ghcversion.h⟩

(Только GHC в качестве компилятора C) Использовать этот файл ghcversion.h

dynamic

-H ⟨size⟩

Задать минимальный размер кучи ⟨size⟩

dynamic

-hidden-module ⟨module name⟩

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

dynamic

-j[⟨n⟩]

При компиляции с помощью --make компилировать ⟨n⟩ модулей параллельно.

dynamic

-jsem

При компиляции с помощью --make координировать работу с другими процессами через семафор ⟨sem⟩, чтобы компилировать модули параллельно.

dynamic

-reexported-module ⟨reexport-spec⟩

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

dynamic

-this-package-name ⟨unit-id⟩

Имя пакета, частью которого будет этот модуль после установки.

dynamic

-unit @⟨filename⟩

Указать параметры сборки конкретного пакета.

dynamic

-working-dir ⟨dir⟩

Указать каталог, в котором предполагается компилировать пакет.

dynamic

© 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/9.14.1/docs/users_guide/flags.html

Spec-Zone.ru

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