4.20. フラグ早見表

この節はGHCのコマンド行フラグの早見表である。それぞれのフラグについて、動的/静的の区別(4.3. 静的オプション、動的オプション、モード指定オプションを見よ)と逆のフラグ(存在すれば)も載せられている。

4.20.1. 多弁さに関するオプション

詳しくは4.6. 多弁さに関するオプション

フラグ 解説 動静
-v 多弁モード(-v3と同等) -
-v n 多弁さを設定する -
-fprint-explicit-foralls 型内で明示的なforall量化を表示する -fno-print-explicit-foralls
-ferror-spans エラーメッセージで範囲を完全な形で表示する -
-H size 最低ヒープサイズをsizeにする -
-Rghc-timing GHCの時間情報の要約を表示する(+RTS -tstderrと同じ) -

4.20.2. 通常以外の実行モード

詳しくは4.5. 実行モード

フラグ 解説 動静
--help-? ヘルプ モード -
--interactive 対話モード。通常これを使うときは単にghciを走らせる。詳細は第2章. GHCiを使うを見よ。 モード -
--make 複数モジュールからなるHaskellプログラムを、依存性を自動的に解決しながらビルドする。makeを使うのよりもずっと簡単で、速いことが期待できる。詳細は4.5.1. ghc --makeを使うを見よ。 モード -
-e expr exprを評価する。詳細は4.5.2. 式評価モードを見よ。 モード -
--show-iface file インタフェースファイルの内容を表示する。    
-M Makefileで使うのに適した依存性情報を生成する。詳細は4.7.11. 依存関係を生成するを見よ。 モード -
--supported-extensionsまたは--supported-languages 対応している言語および言語拡張を表示 モード -
--info コンパイラに関する情報を表示 モード -
--version、-V GHCのバージョンを表示 モード -
--numeric-version GHCのバージョンを表示(数値のみ) モード -
--print-libdir GHCのライブラリディレクトリを表示 モード -

4.20.3. どの段階を実行するか

4.5.3. 一括処理コンパイラモード

フラグ 解説 動静
-E 前処理まで(.hsppファイル) モード -
-C C生成まで(.hcファイル) モード -
-S アセンブリ生成まで(.sファイル) モード -
-c リンクしない -
-x suffix ソースファイルの種類に対してデフォルトでない振る舞いをする -

4.20.4. 出力先の変更

4.7.4. コンパイルの出力先を変える

フラグ 解説 動静
-hcsuf suffix 中間Cファイルに使う接尾辞を設定する -
-hidir dir インタフェースファイルを置くディレクトリを設定する -
-hisuf suffix インタフェースファイルに使う接尾辞を設定する -
-o filename 出力ファイル名を設定する -
-odir dir オブジェクトファイルのディレクトリを設定する -
-ohi filename インタフェースを置くファイルの名前を設定する  
-osuf suffix 出力ファイルの接尾辞を設定する -
-stubdir dir FFIのスタブファイルの出力先を変更する -
-dumpdir dir ダンプファイルの出力先を変更する -
-outputdir dir 出力ディレクトリを設定する -

4.20.5. 中間ファイルの保持

4.7.5. 中間ファイルをそのままにする

フラグ 解説 動静
-keep-hc-fileまたは-keep-hc-files 中間の.hcファイルを保持する -
-keep-llvm-fileまたは-keep-llvm-files 中間の.llLLVMファイルを保持する -
-keep-s-fileまたは-keep-s-files 中間の.sファイルを保持する -
-keep-tmp-files 全ての中間ファイルを保持する -

4.20.6. 一時ファイル

4.7.6. 一時ファイルの場所を変更する

フラグ 解説 動静
-tmpdir 一時ファイルのディレクトリを設定する -

4.20.7. インポートされたものを見つける

4.7.3. 探索パス

フラグ 解説 動静
-idir1:dir2:... dirdir2…をインポートパスに追加する 静/:set -
-i インポートディレクトリの一覧を空にする 静/:set -

4.20.8. インタフェースファイルに関するオプション

4.7.7. インタフェースファイルに関連するその他のオプション

フラグ 解説 動静
-ddump-hi 新しいインタフェースファイルを標準出力に出力する -
-ddump-hi-diffs 古いインタフェースファイルと比較しての差分を表示する -
-ddump-minimal-imports 最小のインポートを出力する -

4.20.9. 再コンパイル検査

4.7.8. 再コンパイル検査器

フラグ 解説 動静
-fforce-recomp 再コンパイル検査を無効にする。単一のファイルをコンパイルしている(つまり、-cを使っている)場合、-ddump-X系のオプションが一つでも指定されているときは自動的に有効になる。 -fno-force-recomp

4.20.10. 対話モードのオプション

2.9. .ghciファイル

フラグ 解説 動静
-ignore-dot-ghci .ghciファイルを読むのを無効にする -
-ghci-script 与えられた.ghciを追加で読む -
-fbreak-on-exception 例外が投げられる度にブレークする -fno-break-on-exception
-fbreak-on-error 例外やエラーがキャッチされなかった場合にブレークする -fno-break-on-error
-fghci-hist-size=n GHCiが:historyのために保存する項目の数を設定する (デフォルトは50)
-fprint-evld-with-show :printでShowのインスタンスを使うのを有効にする -fno-print-evld-with-show
-fprint-bind-result GHCiで束縛の結果を表示するのを有効にする -fno-printbind-result
-fno-print-bind-contents GHCiで束縛の中身を表示するのを無効にする -
-interactive-print GHCiで評価された式を表示するための関数を選ぶ -
-fno-implicit-import-qualified GHCiで、あらゆるものが暗黙にimport qualifiedされるのを無効にする -

4.20.11. パッケージ

4.9. パッケージ

フラグ 解説 動静
-package-name P パッケージPの一員になるようにコンパイルする -
-package P パッケージPを露出する 静/:set -
-hide-all-packages デフォルトで全てのパッケージを隠す -
-hide-package name パッケージPを隠す 静/:set -
-ignore-package name パッケージPを無視する 静/:set -
-package-db file fileをパッケージDBスタックに追加する。 静/:set -
-clear-package-db パッケージDBスタックを空にする。 -
-no-global-package-db グローバルパッケージDBをスタックから取り除く。 -
-global-package-db グローバルパッケージDBをスタックに加える。 -
-no-user-package-db ユーザのパッケージDBをスタックから取り除く。 -
-user-package-db ユーザのパッケージDBをスタックに加える。 静/:set -
-no-auto-link-packages baseパッケージとrtsパッケージを自動的にはリンクしない。 -
-trust P パッケージPを露出し、trustedに設定する 静/:set -
-distrust P パッケージPを露出し、distrustedに設定する 静/:set -
-distrust-all デフォルトで全てのパッケージをdistrustする 静/:set -

4.20.12. 言語オプション

言語オプションを有効にするには、-Xなんたらというコマンド行オプションを使うか、ファイル自体に{-# LANGUAGE なんたら #-}というプラグマを置く。7.1. 言語オプションを見よ。

フラグ 解説 動静
-fglasgow-exts 非推奨。大部分の言語拡張を有効にする。具体的には7.1. 言語オプションを見よ。 -fno-glasgow-exts
-firrefutable-tuples タプルのパターン照合を反駁不能にする -fno-irrefutable-tuples
-fcontext-stack=N n 文脈簡約の制限値を設定する。デフォルトは20。  
-ftype-function-depth=N n 関数簡約の制限値を設定する。デフォルト200。  
-XAllowAmbiguousTypes ユーザが曖昧な型を書いたり、型推論エンジンが曖昧な型を推論することを許す。 -XNoAllowAmbiguousTypes
-XArrows アロー記法拡張を有効にする -XNoArrows
-XAutoDeriveTypeable 自動的にTypeableのインスタンスを全てのデータ型と型クラスの宣言に関して導出する-XDeriveDataTypeableも有効になる。 -XNoAutoDeriveTypeable
-XConstraintKinds 制約の種を有効にする。 -XNoConstraintKinds
-XDataKinds データ型の昇格を有効にする。 -XNoDataKinds
-XDeriveDataTypeable DataとTypeableの両クラスについての自動導出を有効にする。 -XNoDeriveDataTypeable
-XDeriveGeneric Genericクラスについての自動導出を有効にする。 -XNoDeriveGeneric
-XGeneralizedNewtypeDeriving newtype derivingを有効にする。 -XNoGeneralizedNewtypeDeriving
-XDisambiguateRecordFields レコードフィールドの曖昧性除去を有効にする -XNoDisambiguateRecordFields
-XEmptyCase 選択肢のないcaseを許す -XNoEmptyCase
-XExtendedDefaultRules GHCiの拡張デフォルト化規則を通常のモジュールで使う -XNoExtendedDefaultRules
-XForeignFunctionInterface 外部関数インタフェースを有効にする。 -XNoForeignFunctionInterface
-XGADTs 一般化代数データ型を有効にする。 -XNoGADTs
-XGADTSyntax 一般化代数データ型構文を有効にする。 -XNoGADTSyntax
-XGenerics 非推奨。何もしない。もはや総称クラスを有効にしない。GHCのジェネリックプログラミングのサポートも参照。 -XNoGenerics
-XImplicitParams 暗黙パラメタを有効にする。 -XNoImplicitParams
-XNoImplicitPrelude 暗黙にimport Preludeしない -XImplicitPrelude
-XIncoherentInstances 非整合インスタンスを有効にする。-XOverlappingInstancesも有効になる -XNoIncoherentInstances
-XNoMonomorphismRestriction 単相性限定を無効にする -XMonomorphismRestriction
-XNegativeLiterals 負数リテラルを有効にする -XNoNegativeLiterals
-XNoNPlusKPatterns n+kパターンへの対応を無効にする -XNPlusKPatterns
-XNumDecimals 小数表記の整数リテラルへの対応を有効にする -XNoNumDecimals
-XOverlappingInstances 重複インスタンスを有効にする -XNoOverlappingInstances
-XOverloadedLists リストの多重定義を有効にする。 -XNoOverloadedLists
-XOverloadedStrings 文字列リテラルの多重定義を有効にする。 -XNoOverloadedStrings
-XQuasiQuotes 準クォートを有効にする -XNoQuasiQuotes
-XRelaxedPolyRec 相互再帰的な多相関数の検査を緩める -XNoRelaxedPolyRec
-XNoTraditionalRecordSyntax 伝統的なレコード構文(Haskell 98が対応しているもの)C {f = x}への対応を無効にする。 -XTraditionalRecordSyntax
-XTypeFamilies 型の族を有効にする。 -XNoTypeFamilies
-XUndecidableInstances 決定不能インスタンスを有効にする -XNoUndecidableInstances
-XPolyKinds 種多相を有効にする。-XKindSignaturesも有効になる。 -XNoPolyKinds
-XMonoLocalBinds 局所的な束縛を一般化しないを有効にする。 -XNoMonoLocalBinds
-XRebindableSyntax 再束縛可能な構文を有効にする -XNoRebindableSyntax
-XScopedTypeVariables 字句的スコープを持つ型変数を有効にする。-fglasgow-extsによっても有効になる。 -XNoScopedTypeVariables
-XTemplateHaskell Template Haskellを有効にする。もはや-fglasgow-extsによって有効にはならない -XNoTemplateHaskell
-XBangPatterns びっくりパターンを有効にする -XNoBangPatterns
-XCPP Cプリプロセッサを有効にする。 -XNoCPP
-XPatternGuards パターンガードを有効にする。 -XNoPatternGuards
-XViewPatterns ビューパターンを有効にする。 -XNoViewPatterns
-XUnicodeSyntax Unicode構文を有効にする。 -XNoUnicodeSyntax
-XMagicHash 「#」を識別子につける後置修飾子として認める。 -XNoMagicHash
-XExplicitForAll 明示的な全称量化を有効にする。以下の各オプションによっても有効になる。-XScopedTypeVariables-XLiberalTypeSynonyms-XRankNTypes-XExistentialQuantification -XNoExplicitForAll
-XPolymorphicComponents データ構築子が多相的な構成要素を持てるようにする。 動、-XRankNTypesと同義 -XNoPolymorphicComponents
-XRank2Types ランク2の型を有効にする。 動、-XRankNTypesと同義 -XNoRank2Types
-XRankNTypes ランクNの型を有効にする。 -XNoRankNTypes
-XImpredicativeTypes 非叙述的な型を有効にする。 -XNoImpredicativeTypes
-XExistentialQuantification 存在量化を有効にする。 -XNoExistentialQuantification
-XKindSignatures 種シグネチャを有効にする。 -XNoKindSignatures
-XEmptyDataDecls 空のデータ型宣言を有効にする。 -XNoEmptyDataDecls
-XParallelListComp 並行リスト内包表記を有効にする。 -XNoParallelListComp
-XTransformListComp 一般化リスト内包表記を有効にする。 -XNoTransformListComp
-XMonadComprehensions モナド内包表記を有効にする。 -XNoMonadComprehensions
-XUnliftedFFITypes unlifted FFI typesを有効にする。 -XNoUnliftedFFITypes
-XInterruptibleFFI 割り込み可能なFFIを有効にする。 -XNoInterruptibleFFI
-XLiberalTypeSynonyms 自由化型シノニムを有効にする。 -XNoLiberalTypeSynonyms
-XTypeOperators 型演算子を有効にする。 -XNoTypeOperators
-XExplicitNamespaces インポートリストとエクスポートリストにおいて実体の名前空間をtypeキーワードを用いて指定するの(7.3.27. インポート/エクスポートの際の名前空間の明示)を有効にする。-XTypeOperatorsまたは-XTypeFamiliesによっても有効になる -XNoExplicitNamespaces
-XRecursiveDo 再帰的do(mdo)記法を有効にする。 -XNoRecursiveDo
-XParallelArrays parallel arrayを有効にする。 -XNoParallelArrays
-XRecordWildCards レコードワイルドカードを有効にする -XNoRecordWildCards
-XNamedFieldPuns レコード同名利用を有効にする。 -XNoNamedFieldPuns
-XDisambiguateRecordFields フィールドの曖昧性除去を有効にする。 -XNoDisambiguateRecordFields
-XUnboxedTuples 非ボックス化タプルを有効にする。 -XNoUnboxedTuples
-XStandaloneDeriving 独立derivingを有効にする。 -XNoStandaloneDeriving
-XTypeSynonymInstances インスタンス頭部中の型シノニムを有効にする。 -XNoTypeSynonymInstances
-XFlexibleContexts 柔軟な文脈を有効にする。-XTypeSynonymInstancesも有効になる。 -XNoFlexibleContexts
-XFlexibleInstances 柔軟なインスタンスを有効にする。 -XNoFlexibleInstances
-XConstrainedClassMethods 制約付きクラスメソッドを有効にする。 -XNoConstrainedClassMethods
-XDefaultSignatures デフォルトシグネチャを有効にする。 -XNoDefaultSignatures
-XMultiParamTypeClasses 多引数の型クラスを有効にする。 -XNoMultiParamTypeClasses
-XNullaryTypeClasses 無引数の型クラスを有効にする。 -XNoNullaryTypeClasses
-XFunctionalDependencies 関数従属を有効にする。 -XNoFunctionalDependencies
-XPackageImports パッケージ修飾されたインポートを有効にする。 -XNoPackageImports
-XLambdaCase lambda-case式を有効にする。 -XNoLambdaCase
-XMultiWayIf 多選択肢のif式を有効にする。 -XNoMultiWayIf
-XSafe Safe HaskellのSafeモードを有効にする。 -
-XTrustworthy Safe HaskellのTrustworthyモードを有効にする。 -
-XUnsafe Safe HaskellのUnsafeモードを有効にする。 -
-fpackage-trust Safe Haskellのtrustworthyモジュールに関するパッケージの信頼要件を有効にする。 -

4.20.13. 警告

4.8. 警告と正気度チェックのためのオプション

フラグ 解説 動静
-W 通常の警告を有効にする -w
-w 全ての警告を無効にする -
-Wall ほぼ全ての警告を有効にする -w
-Werror 警告を致命的にする -Wwarn
-Wwarn 警告を致命的でなくする -Werror
-fdefer-type-errors 型エラーを可能な限り実行時まで遅らせる。 -fno-defer-type-errors
-fhelpful-errors 綴りの誤っている名前について忠告する。 -fno-helpful-errors
-fwarn-deprecated-flags 非推奨のコマンド行フラグが使われているときに警告する -fno-warn-deprecated-flags
-fwarn-duplicate-constraints 型シグネチャにおいて制約が重複しているように見えるときに警告する -fno-warn-duplicate-constraints
-fwarn-duplicate-exports 実体が複数回エクスポートされているときに警告する -fno-warn-duplicate-exports
-fwarn-hi-shadowing カレントディレクトリの.hiファイルがライブラリを隠しているときに警告する -fno-warn-hi-shadowing
-fwarn-identities Preludeの数値変換を、おそらく恒等変換として使っている(よって省かれる)場合に警告する -fno-warn-identities
-fwarn-implicit-prelude Preludeが暗黙にimportされるときに警告する -fno-warn-implicit-prelude
-fwarn-incomplete-patterns パターン照合が失敗し得るときに警告する -fno-warn-incomplete-patterns
-fwarn-incomplete-uni-patterns ラムダ式やパターン束縛におけるパターンが失敗し得るときに警告する -fno-warn-incomplete-uni-patterns
-fwarn-incomplete-record-updates レコード更新が失敗し得るときに警告する -fno-warn-incomplete-record-updates
-fwarn-lazy-unlifted-bindings (非推奨)正格でなければならないパターン束縛が遅延されるように見えるときに警告する -fno-warn-lazy-unlifted-bindings
-fwarn-missing-fields レコードのフィールドが初期化されていないときに警告する -fno-warn-missing-fields
-fwarn-missing-import-lists import宣言がスコープに導入される名前全てを明示的に列挙していないときに警告する -fnowarn-missing-import-lists
-fwarn-missing-methods クラスメソッドが定義されていないときに警告する -fno-warn-missing-methods
-fwarn-missing-signatures シグネチャのない最上位の関数があれば警告する -fno-warn-missing-signatures
-fwarn-missing-local-sigs シグネチャのない多相的な局所束縛があれば警告する -fno-warn-missing-local-sigs
-fwarn-monomorphism-restriction 単相性制限が適用されたときに警告する -fno-warn-monomorphism-restriction
-fwarn-name-shadowing 名前の隠蔽があれば警告する -fno-warn-name-shadowing
-fwarn-orphans, -fwarn-auto-orphans モジュールに孤立したインスタンス宣言や書き換え規則があるときに警告する -fno-warn-orphans, -fno-warn-auto-orphans
-fwarn-overlapping-patterns 重複パターンがあれば警告する -fno-warn-overlapping-patterns
-fwarn-tabs ソースファイル中にタブがあったときに警告する -fno-warn-tabs
-fwarn-type-defaults デフォルト化が起きたときに警告する -fno-warn-type-defaults
-fwarn-unrecognised-pragmas GHCが認識できないプラグマが使われているときに警告する -fno-warn-unrecognised-pragmas
-fwarn-unused-binds 未使用の束縛があれば警告する -fno-warn-unused-binds
-fwarn-unused-imports 不必要なインポートがあれば警告する -fno-warn-unused-imports
-fwarn-unused-matches パターン中に未使用の変数があれば警告する -fno-warn-unused-matches
-fwarn-unused-do-bind ()以外の型の値を捨てているように見えるdo bindingがあれば警告する。 -fno-warn-unused-do-bind
-fwarn-wrong-do-bind 束縛するべきだったモナドな値を捨てているように見えるdo bindingがあれば警告する。 -fno-warn-wrong-do-bind
-fwarn-unsafe コンパイルしているモジュールがunsafeと見なされる場合に警告する。安全性推論を使う場合に、モジュールが安全かどうかを確認するために使うべきである。 -fno-warn-unsafe
-fwarn-safe コンパイルしているモジュールがsafeと見なされる場合に警告する。安全性推論を使う場合に、モジュールが安全かどうかを確認するために使うべきである。 -fno-warn-safe
-fwarn-warnings-deprecations WARNINGおよびDEPRECATEDプラグマの付いた関数・型が使われているときに警告する -fno-warn-warnings-deprecations
-fwarn-amp Applicative-Monad Proposal (AMP)に抵触する定義について警告する -fno-warn-amp
-fwarn-typed-holes 式中のを有効にする。 -fno-warn-typed-holes

4.20.14. 最適化水準

これらのオプションについてより詳しくは4.10. 最適化(コードの改善)に記述されている。

フラグ 解説 動静
-O デフォルトの最適化(水準1)を有効にする -O0
-O n 最適化水準をnに設定する -O0

4.20.15. 個々の最適化

これらのオプションについてより詳しくは4.10.2. -f*: プラットフォーム非依存のフラグに記述されている。

フラグ 解説 動静
-fcase-merge case-mergingを有効にする。-Oオプションによって有効になる。 -fno-case-merge
-fcse 共通部分式の除去を有効にする。-Oによっても有効になる。 -fno-cse
-fdicts-strict 辞書を正格にする -fno-dicts-strict
-fdo-eta-reduction イータ簡約を有効にする。-Oによって有効になる。 -fno-do-eta-reduction
-fdo-lambda-eta-expansion ラムダイータ展開を有効にする -fno-do-lambda-eta-expansion
-feager-blackholing eager blackholingを有効にする -
-fenable-rewrite-rules 全ての書き換え規則(多重定義関数の自動特殊化で生成されたものも含む)を有効にする。-Oによっても有効になる。 -fno-enable-rewrite-rules
-fvectorise 入れ子データ並列のベクトル化を有効にする -fno-vectorise
-favoid-vect ベクトル化回避を有効にする(実験的) -fno-avoid-vect
-fexcess-precision 中間値の精度超過を有効にする -fno-excess-precision
-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 ソース中のアサーションを無視する -fno-ignore-asserts
-fignore-interface-pragmas インタフェースファイル中のプラグマを無視する -fno-ignore-interface-pragmas
-floopification 生成するアセンブリにおいて、部分適用でない自己再帰的な末尾呼び出しを局所ジャンプに変える。 -fno-loopification
-flate-dmd-anal 単純化パイプラインの最後に、要求解析(demand analysis)をもう一度実行する -fno-late-dmd-anal
-fliberate-case liberate-case変換を有効にする。-O2によっても有効になる。 -fno-liberate-case
-fliberate-case-threshold=n liberate-case変換における大きさ閾値をnに設定する。(デフォルト: 200) -fno-liberate-case-threshold
-fmax-relevant-bindings=N エラーメッセージ中で表示する束縛の最大数を設定する(デフォルトは6)。 -fno-max-relevant-bindings
-fmax-simplifier-iterations=N 単純化器の最大繰り返し回数を設定する -
-fmax-worker-args=N ワーカにこれだけの引数があるとき、これ以上アンパックしない(デフォルト: 10) -
-fno-opt-coercion coercion最適化器を使わない -
-fno-pre-inlining pre-inliningを無効にする -
-fno-state-hack 実世界の状態トークンを引数として持つラムダが単一進入だとみなされ、従ってその内容をインライン化できる、という「stateハック」を無効にする。 -
-fpedantic-bottoms GHCがボトムをより精密に扱うようにする(しかし、-fno-state-hackも見よ)。特に、case式を透過してイータ展開をすることがなくなる。 -fno-pedantic-bottoms
-fomit-interface-pragmas インタフェースプラグマを生成しない -fno-omit-interface-pragmas
-fsimplifier-phases 単純化器の段階の数を設定する(デフォルトは2)。-O0が与えられたときには無視される。 -
-fsimpl-tick-factor=n 単純化器のtickの倍率を百分率で指定する(デフォルトは100)。 -
-fspec-constr SpecConstr変換を有効にする。-O2によっても有効になる。 -fno-spec-constr
-fspec-constr-threshold=n SpecConstr変換の大きさ閾値をnにする。(デフォルト: 200) -fno-spec-constr-threshold
-fspec-constr-count=n 一つの関数についてSpecConstr変換で作られる特殊化の数の最大値をnにする。(デフォルト: 3) -fno-spec-constr-count
-fspecialise 多重定義された関数の特殊化を有効にする。-Oによっても有効になる。 -fno-specialise
-fstrictness 正格性解析を有効にする。-Oによっても有効になる。 -fno-strictness
-fstrictness=before=n 単純化器の段階nの前に、追加で正格性解析を行なう。 -
-fstatic-argument-transformation 静的引数変換を有効にする。-O2によって有効になる。 -fno-static-argument-transformation
-funbox-strict-fields 構築子の正格なフィールドを平坦化する -fno-unbox-strict-fields
-funbox-small-strict-fields 構築子の正格なフィールドのうち、ポインタと同じ大きさを持つものを平坦化する -fno-unbox-small-strict-fields
-funfolding-creation-threshold 展開の設定を調整する -fno-unfolding-creation-threshold
-funfolding-fun-discount 展開の設定を調整する -fno-unfolding-fun-discount
-funfolding-keeness-factor 展開の設定を調整する -fno-unfolding-keeness-factor
-funfolding-use-threshold 展開の設定を調整する -fno-unfolding-use-threshold

4.20.16. プロファイルに関するオプション

第5章. プロファイルを取る

フラグ 解説 動静
-prof プロファイルを有効にする -
-fprof-auto INLINE指定されていない全ての関数に自動的にSCCを付加する -fno-prof-auto
-fprof-auto-top INLINE指定されていない全ての最上位の関数に自動的にSCCを付加する -fno-prof-auto
-fprof-auto-exported エクスポートされていてINLINE指定されていない全ての関数に自動的にSCCを付加する -fno-prof-auto
-fprof-cafs 全てのCAFに自動的にSCCを付加する -fno-prof-cafs
-fno-prof-count-entries 進入回数を収集しない -fprof-count-entries
-ticky ticky-tickyプロファイルを有効にする -

4.20.17. プログラム網羅オプション

5.7. コード網羅率を観察する

フラグ 解説 動静
-fhpc Haskellプログラム網羅率の計器付与を有効にする -
-hpcdir dir コンパイル中に.mixファイルを保管するディレクトリ(デフォルトは.hpc) -

4.20.18. Haskell前処理器オプション

4.12.4. Haskell前処理器に影響するオプション

フラグ 解説 動静
-F 前処理器(-pgmFで設定される)の使用を有効にする -

4.20.19. Cプリプロセッサオプション

4.12.3. Cプリプロセッサに影響するオプション

フラグ 解説 動静
-cpp Haskellソースファイルに対してCプリプロセッサを走らせる -
-Dsymbol[=value] Cプリプロセッサのシンボルを定義する -U symbol
-U symbol Cプリプロセッサのシンボルを未定義にする -
-I dir #includeファイルの探索ディレクトリにdirを加える -

4.20.20. コード生成オプション

4.12.5. コード生成に影響するオプション

フラグ 解説 動静
-fasm ネイティブコード生成器を使う -fllvm
-fllvm LLVMコード生成器を使う -fasm
-fno-code コード生成を省略する -
-fbyte-code バイトコードを生成する -
-fobject-code オブジェクトコードを生成する -

4.20.21. プログラムのリンク

4.12.6. リンクに影響するオプション

フラグ 解説 動静
-shared (実行ファイルでなく)共有ライブラリを生成する -
-staticlib Darwin/OS X/iOSにおいてのみ、(実行可能形式でなく)standaloneな静的ライブラリを生成する。これはiOS用にコンパイルする際の通常の方法である -
-fPIC (可能なら)位置独立コードを生成する -
-dynamic (可能なら)動的なHaskellライブラリを使う -
-dynamic-too 動的なオブジェクトファイルと静的なオブジェクトファイルの両方をコンパイル時に生成する -
-dyno 動的にリンクされるオブジェクトの出力パスを設定する -
-dynosuf 動的オブジェクトファイルの接尾辞を設定する -
-dynload 実行時に共有ライブラリを見つけるための方法として、いくつかから一つ選ぶ。 -
-framework name Darwin/OS X/iOSのみ。フレームワークnameをリンクする。このオプションはAppleのリンカの-frameworkオプションに相当する。 -
-framework-path name Darwin/OS X/iOSのみ。ディレクトリdirをフレームワークを探索するディレクトリ一覧に加える。これはAppleのリンカの-Fオプションに相当する。 -
-l lib ライブラリlibをリンクする -
-L dir dirをライブラリを探索するディレクトリの一覧に加える -
-main-is mainのモジュールと関数を設定する -
--mk-dll DLL作成モード(Windows のみ) -
-no-hs-main プログラムにmainがあるとは考えない -
-rtsopts, -rtsopts={none,some,all} RTSの振る舞いを、コマンド行フラグと環境変数GHCRTSで調整できるようにするかどうかを制御する。noneを使うと、一切のRTSフラグを与えられないということになる。someなら、最小限の、安全なオプションのみを与えられる(デフォルト)。allなら(あるいは、引数がないなら)全てのRTSフラグが許可されるという意味である。 -
-with-rtsopts=opts デフォルトのRTSオプションをoptsに設定する。 -
-no-link リンクを省略する -
-split-objs オブジェクトを分割する(ライブラリ用) -
-static 静的なHaskellライブラリを使う -
-threaded スレッド化されたランタイムを使う -
-debug デバッグ用ランタイムを使う -
-eventlog ランタイムのevent tracingを有効にする -
-fno-gen-manifest マニフェストファイルを生成しない(Windowsのみ) -
-fno-embed-manifest マニフェストファイルを実行ファイルに埋め込まない(Windowsのみ) -
-fno-shared-implib DLL用のインポートライブラリを生成しない(Windowsのみ) -
-dylib-install-name path ライブラリファイルのインストール先のフルパスを示すinstall nameを設定する(これはAppleのリンカに-install_nameを渡すことで行なう)。後にこのライブラリをリンクするライブラリや実行ファイルは、このライブラリを実行時に探索する場所としてこのパスを選ぶ。(Darwin/OS Xのみ) -

4.20.22. プラグインオプション

9.3. コンパイラプラグイン

フラグ 解説 動静
-fplugin=module 与えられたモジュールからエクスポートされているプラグインをロードする -
-fplugin-opt=module:args プラグインモジュールに引数を与える。モジュールは-fpluginで指定されねばならない -

4.20.23. 段階の置き換え

4.12.1. それぞれの段階で使われるプログラムを変更する

フラグ 解説 動静
-pgmL cmd cmdを文芸前処理器として使う -
-pgmP cmd cmdをCプリプロセッサとして使う(-cppが指定された場合のみ) -
-pgmc cmd cmdをCコンパイラとして使う -
-pgmlo cmd cmdをLLVM最適化器として使う -
-pgmlc cmd cmdをLLVMコンパイラとして使う -
-pgms cmd cmdをsplitterとして使う -
-pgma cmd cmdをアセンブラとして使う -
-pgml cmd cmdをリンカとして使う -
-pgmdll cmd cmdをDLL生成器として使う -
-pgmF cmd cmdを前処理器として使う(-Fが指定されているときのみ) -
-pgmwindres cmd cmdを、Windowsでマニフェストを埋め込むためのプログラムとして使う。 -
-pgmlibtool cmd cmdを、libtoolのためのコマンドとして使う(-staticlibが指定されているときのみ)。 -

4.20.24. 特定の段階にオプションを強制する

4.12.2. 特定の段階にオプションを強制する

フラグ 解説 動静
-optL option optionを文芸前処理器に渡す -
-optP option optionをcppに渡す(-cppが指定されているときのみ) -
-optF option optionを用意した前処理器に渡す -
-optc option optionをCコンパイラに渡す -
-optlo option optionをLLVM最適化器に渡す -
-optlc option optionをLLVMコンパイラに渡す -
-optm option optionをmanglerに渡す -
-opta option optionをアセンブラに渡す -
-optl option optionをリンカに渡す -
-optdll option optionをDLL生成器に渡す -
-optwindres option optionwindresに渡す -

4.20.25. プラットフォーム固有のオプション

4.16. プラットフォーム固有のフラグ

フラグ 解説 動静
-msse2 (x86のみ)浮動小数点にSSE2を使う -
-monly-[432]-regs (x86のみ)レジスタをいくつかCコンパイラに返す -

4.20.26. 外部コアファイルに関するオプション

4.18. 外部コアファイルを生成・コンパイルする

フラグ 解説 動静
-fext-core 外部コアファイル.hcrを生成する -

4.20.27. コンパイラのデバッグに関するオプション

4.19. コンパイラをデバッグする

フラグ 解説 動静
-dcore-lint 内部的な正気度チェックを有効にする -
-ddump-to-file 標準出力でなくファイルに出力する -
-ddump-asm アセンブリを表示 -
-ddump-bcos インタプリタバイトコードを出力 -
-ddump-cmm C--出力を表示 -
-ddump-core-stats 最適化パイプラインの最後に、Coreプログラムの大きさの一行要約を表示する -
-ddump-cpranal CPR解析の出力を表示 -
-ddump-cse CSEの出力を表示 -
-ddump-deriv 自動導出(deriving)の出力を表示 -
-ddump-ds 脱糖器の出力を表示 -
-ddump-flatC 「平坦な」Cを表示 -
-ddump-foreign foreign exportのスタブを表示 -
-ddump-hpc プログラム網羅率のために計器付与された段階で表示 -
-ddump-inlinings インライン化情報を表示 -
-ddump-llvm LLVM中間コードを出力する -
-ddump-occur-anal 出現解析の出力を表示 -
-ddump-opt-cmm C--からC--への最適化過程の出力を表示 -
-ddump-parsed 構文解析木を表示 -
-ddump-prep prepared coreを表示 -
-ddump-rn 名前変更器の出力を表示 -
-ddump-rule-firings 規則(rules)の発動情報を表示 -
-ddump-rule-rewrites 規則(rules)の詳細な発動情報を表示 -
-ddump-rules 規則(rules)を表示 -
-ddump-vect ベクトル化器の入力と出力を表示 -
-ddump-simpl 単純化器の最終出力を表示 -
-ddump-simpl-phases 単純化器の段階毎の出力を表示 -
-ddump-simpl-iterations 単純化器の繰り返し毎の出力を表示 -
-ddump-spec 特殊化器の出力を表示 -
-ddump-splices 接合されたTH式と、その評価結果を表示 -
-ddump-stg 最終STGを表示 -
-ddump-stranal 正格性解析器の出力を表示 -
-ddump-strsigs 正格性シグネチャを表示 -
-ddump-tc 型検査器の出力を表示 -
-ddump-types 型シグネチャを表示 -
-ddump-worker-wrapper worker/wrapper出力を表示 -
-ddump-if-trace インタフェースファイルを追跡 -
-ddump-tc-trace 型検査器を追跡 -
-ddump-vt-trace ベクトル化器を追跡 -
-ddump-rn-trace 名前変更器を追跡 -
-ddump-rn-stats 名前変更器の統計情報 -
-ddump-simpl-stats 単純化器の統計情報を出力 -
-dno-debug-output 要求された以外のデバッグ出力を抑制する -
-dppr-debug デバッグ表示を有効にする(さらなる多弁) -
-dppr-noprags デバッグ出力中でプラグマ情報を出力しない -
-dppr-user-length エラーメッセージで表示する式の深さを設定する -
-dppr-colsNNN デバッグ出力の幅を設定する。例えば-dppr-cols200 -
-dppr-case-as-let 選択肢が一つのcase式を正格なletとして表示する。 -
-dsuppress-all コア出力において、抑制可能なものを全て(固有子を除いて)抑制する。 -
-dsuppress-uniques デバッグ出力中で固有子を表示することを抑制する(diffが使いやすくなる) -
-dsuppress-idinfo 識別子の束縛地点に置かれる、識別子についての拡張情報を抑制する。 -
-dsuppress-module-prefixes モジュール修飾接頭辞を表示するのを抑制する。 -
-dsuppress-type-signatures 型シグネチャを抑制する -
-dsuppress-type-applications 型適用を抑制する -
-dsuppress-coercions Core出力の中で型変換(coercion)を表示するのを抑制し、Core出力が短かくなるようにする。 -
-dsource-stats Haskellソースの統計情報を表示 -
-dcmm-lint C--過程の正気度チェック -
-dstg-lint STG過程の正気度チェック -
-dstg-stats STG統計情報を表示 -
-dverbose-core2core コアからコアへの過程一回毎に出力を表示 -
-dverbose-stg2stg STGからSTGへの過程一回毎に出力を表示 -
-dshow-passes 過程の名前を発生ごとに表示 -
-dfaststring-stats 終了時にfast stringの利用に関する統計情報を表示 -

4.20.28. その他のコンパイルオプション

フラグ 解説 動静
-j N --makeでコンパイルする際、N個のモジュールを並列にコンパイルする。 -
-fno-hi-version-check .hiファイルが合致しなくても文句を言わない -
-dno-black-holing ブラックホール化を無効にする(おそらく動作しない) -
-fhistory-size 単純化履歴の大きさを設定する -
-funregisterised 非レジスタ化コンパイル(代わりに-unregを使うこと) -
-fno-ghci-history GHCiのコマンドヒストリghci_historyを読み書きしない。 -
-fno-ghci-sandbox GHCiのサンドボックスを無効にする。これは、フォークされたスレッドではなく主スレッドで計算が走るということである。 -