フラグ早見表

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

ヘルプと多弁さに関するオプション

4.6. ヘルプと多弁さに関するオプション

フラグ 解説 動静
-? ヘルプ モード -
-help ヘルプ モード -
-n ドライランを行う -
-v 多弁モード(-v3と同等) -
-v n 多弁さを設定する -
-V GHCのバージョンを表示 モード -
––supported-extensionsまたは––supported-languages 対応している言語および言語拡張を表示 モード -
––info コンパイラに関する情報を表示 モード -
––version GHCのバージョンを表示 モード -
––numeric-version GHCのバージョンを表示(数値のみ) モード -
––print-libdir GHCのライブラリディレクトリを表示 モード -
-ferror-spans エラーメッセージで範囲を完全な形で表示する -
-H size 最低ヒープサイズをsizeにする -
-Rghc-timing GHCの時間情報の要約を表示する(+RTS -tstderrと同じ) -

どの段階を実行するか

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

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

通常以外の実行モード

4.5. 実行モード

フラグ 解説 動静
--interactive 対話モード。通常これを使うときは単にghciを走らせる。詳細は第2章. GHCiを使うを見よ。 モード -
--make 複数モジュールからなるHaskellプログラムを、依存性を自動的に解決しながらビルドする。makeを使うのよりもずっと簡単で、速いことが期待できる。詳細は4.5.1. ghc ––makeを使うを見よ。 モード -
-e expr exprを評価する。詳細は4.5.2. 式評価モードを見よ。 モード -
-M Makefileで使うのに適した依存性情報を生成する。詳細は4.7.11. 依存関係を生成するを見よ。 モード -

出力先の変更

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

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

中間ファイルの保持

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-raw-s-fileまたは-keep-raw-s-files 中間の.raw_sファイルを保持する -
-keep-tmp-files 全ての中間ファイルを保持する -

一時ファイル

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

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

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

4.7.3. 探索パス

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

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

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

フラグ 解説 動静
-ddump-hi 新しいインタフェースファイルを標準出力に出力する -
-ddump-hi-diffs 古いインタフェースファイルと比較しての差分を表示する -
-ddump-minimal-imports 最小のインポートを出力する -
--show-iface file 4.5. 実行モードを見よ。    

再コンパイル検査

4.7.8. 再コンパイル検査器

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

対話モードのオプション

2.9. .ghciファイル

フラグ 解説 動静
-ignore-dot-ghci .ghciファイルを読むのを無効にする -
-read-dot-ghci .ghciファイルを読むのを有効にする -
-fbreak-on-exception 例外が投げられる度にブレークする -fno-break-on-exception
-fbreak-on-error 例外やエラーがキャッチされなかった場合にブレークする -fno-break-on-error
-fprint-evld-with-show :printでShowのインスタンスを使うのを有効にする -fno-print-evld-with-show
-fprint-bind-result GHCiで束縛の結果を表示するのを有効にする -fno-printbind-result
-fno-print-bind-contents GHCiで束縛の中身を表示するのを無効にする -
-fno-implicit-import-qualified GHCiで、あらゆるものが暗黙にimport qualifiedされるのを無効にする -

パッケージ

4.9. パッケージ

フラグ 解説 動静
-package-name P パッケージPの一員になるようにコンパイルする -
-package P パッケージPを露出する 静/:set -
-hide-all-packages デフォルトで全てのパッケージを隠す -
-hide-package name パッケージPを隠す 静/:set -
-ignore-package name パッケージPを無視する 静/:set -
-package-conf file fileから追加でパッケージをロードする 静/:set -
-no-user-package-conf ユーザのパッケージ設定ファイルをロードしない 静/:set -
-no-auto-link-packages haskell98パッケージを自動的にはリンクしない。 -

言語オプション

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

フラグ 解説 動静
-fglasgow-exts 大部分の言語拡張を有効にする -fno-glasgow-exts
-XOverlappingInstances 重複インスタンスを有効にする -XNoOverlappingInstances
-XIncoherentInstances 非整合インスタンスを有効にする。-XOverlappingInstancesも有効になる -XNoIncoherentInstances
-XUndecidableInstances 決定不能インスタンスを有効にする -XNoUndecidableInstances
-fcontext-stack=N n 文脈簡約の制限値を設定する。デフォルトは20。  
-XArrows アロー記法拡張を有効にする -XNoArrows
-XDisambiguateRecordFields レコードフィールドの曖昧性除去を有効にする -XNoDisambiguateRecordFields
-XForeignFunctionInterface 他言語関数インタフェース (-fglasgow-extsによっても有効になる) -XNoForeignFunctionInterface
-XGenerics 総称クラスを有効にする -XNoGenerics
-XImplicitParams 暗黙パラメタを有効にする。-fglasgow-extsによっても有効になる -XNoImplicitParams
-firrefutable-tuples タプルのパターン照合を反駁不能にする -fno-irrefutable-tuples
-XNoImplicitPrelude 暗黙にimport Preludeしない -XImplicitPrelude
-XRebindableSyntax 再束縛可能な構文を有効にする -XNoRebindableSyntax
-XNoMonomorphismRestriction 単相性限定を無効にする -XMonomorphismRestriction
-XNoNPlusKPatterns n+kパターンへの対応を無効にする -XNPlusKPatterns
-XNoMonoPatBinds パターン束縛を多相的にする。 -XMonoPatBinds
-XRelaxedPolyRec 相互再帰的な多相関数の検査を緩める -XNoRelaxedPolyRec
-XExtendedDefaultRules GHCiの拡張デフォルト化規則を通常のモードで使う -XNoExtendedDefaultRules
-XOverloadedStrings 文字列リテラルの多重定義を有効にする。 -XNoOverloadedStrings
-XGADTs 一般化代数データ型を有効にする。 -XNoGADTs
-XTypeFamilies 型の族を有効にする。 -XNoTypeFamilies
-XScopedTypeVariables 字句的スコープを持つ型変数を有効にする。-fglasgow-extsによっても有効になる。 -XNoScopedTypeVariables
-XMonoLocalBinds 局所的な束縛を一般化しないを有効にする。 -XNoMonoLocalBinds
-XTemplateHaskell Template Haskellを有効にする。もはや-fglasgow-extsによって有効にはならない -XNoTemplateHaskell
-XQuasiQuotes 準クォートを有効にする -XNoQuasiQuotes
-XBangPatterns びっくりパターンを有効にする -XNoBangPatterns
-XCPP Cプリプロセッサを有効にする。 -XNoCPP
-XPatternGuards パターンガードを有効にする。 -XNoPatternGuards
-XViewPatterns ビューパターンを有効にする。 -XNoViewPatterns
-XUnicodeSyntax Unicode構文を有効にする。 -XNoUnicodeSyntax
-XMagicHash 「#」を識別子につける後置修飾子として認める。 -XNoMagicHash
-XNewQualifiedOperators 被修飾演算子の新しい構文を有効にする。 -XNoNewQualifiedOperators
-XExplicitForALl 明示的な全称量化を有効にする。以下の各オプションによっても有効になる。-XScopedTypeVariables-XLiberalTypeSynonyms-XRank2Types-XRankNTypes-XPolymorphicComponents-XExistentialQuantification -XNoExplicitForAll
-XPolymorphicComponents データ構築子が多相的な構成要素を持てるようにする。 -XNoPolymorphicComponents
-XRank2Types ランク2の型を有効にする。 -XNoRank2Types
-XRankNTypes ランクNの型を有効にする。 -XNoRankNTypes
-XImpredicativeTypes 非叙述的な型を有効にする。 -XNoImpredicativeTypes
-XExistentialQuantification 存在量化を有効にする。 -XNoExistentialQuantification
-XKindSignatures 類シグネチャを有効にする。 -XNoKindSignatures
-XEmptyDataDecls 空のデータ型宣言を有効にする。 -XNoEmptyDataDecls
-XParallelListComp 並行リスト内包表記を有効にする。 -XNoParallelListComp
-XTransformListComp 一般化リスト内包表記を有効にする。 -XNoTransformListComp
-XUnliftedFFITypes unlifted FFI typesを有効にする。 -XNoUnliftedFFITypes
-XLiberalTypeSynonyms 自由化型シノニムを有効にする。 -XNoLiberalTypeSynonyms
-XTypeOperators 型演算子を有効にする。 -XNoTypeOperators
-XDoRec 再帰的do記法を有効にする。 -XNoDoRec
-XRecursiveDo 再帰的do(mdo)記法を有効にする。これは非推奨である。代わりに再帰的do記法を使ってほしい。 -XNoRecursiveDo
-XPArr parallel arrayを有効にする。 -XNoPArr
-XRecordWildCards レコードワイルドカードを有効にする -XNoRecordWildCards
-XNamedFieldPuns レコード同名利用を有効にする。 -XNoNamedFieldPuns
-XDisambiguateRecordFields フィールドの曖昧性除去を有効にする。 -XNoDisambiguateRecordFields
-XUnboxedTuples 非ボックス化タプルを有効にする。 -XNoUnboxedTuples
-XStandaloneDeriving 独立derivingを有効にする。 -XNoStandaloneDeriving
-XDeriveDataTypeable DataとTypeableの両クラスについてのderivingを有効にする。 -XNoDeriveDataTypeable
-XGeneralizedNewtypeDeriving newtype derivingを有効にする。 -XNoGeneralizedNewtypeDeriving
-XTypeSynonymInstances インスタンス頭部中の型シノニムを有効にする。 -XNoTypeSynonymInstances
-XFlexibleContexts 柔軟な文脈を有効にする。 -XNoFlexibleContexts
-XFlexibleInstances 柔軟なインスタンスを有効にする。 -XNoFlexibleInstances
-XConstrainedClassMethods 制約付きクラスメソッドを有効にする。 -XNoConstrainedClassMethods
-XMultiParamTypeClasses 多引数の型クラスを有効にする。 -XNoMultiParamTypeClasses
-XFunctionalDependencies 関数従属を有効にする。 -XNoFunctionalDependencies
-XPackageImports パッケージ修飾されたインポートを有効にする。 -XNoPackageImports

警告

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

フラグ 解説 動静
-W 通常の警告を有効にする -w
-w 全ての警告を無効にする -
-Wall ほぼ全ての警告を有効にする -w
-Werror 警告を致命的にする -Wwarn
-Wwarn 警告を致命的でなくする -Werror
-fwarn-unrecognised-pragmas GHCが認識できないプラグマが使われているときに警告する -fno-warn-unrecognised-pragmas
-fwarn-warnings-deprecations WARNINGおよびDEPRECATEDプラグマの付いた関数・型が使われているときに警告する -fno-warn-warnings-deprecations
-fwarn-deprecated-flags 非推奨のコマンド行フラグが使われているときに警告する -fno-warn-deprecated-flags
-fwarn-duplicate-exports 実体が複数回エクスポートされているときに警告する -fno-warn-duplicate-exports
-fwarn-hi-shadowing カレントディレクトリの.hiファイルがライブラリを隠しているときに警告する -fno-warn-hi-shadowing
-fwarn-implicit-prelude Preludeが暗黙にimportされるときに警告する -fno-warn-implicit-prelude
-fwarn-incomplete-patterns パターン照合が失敗し得るときに警告する -fno-warn-incomplete-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-name-shadowing 名前の隠蔽があれば警告する -fno-warn-name-shadowing
-fwarn-orphans モジュールに孤立したインスタンス宣言や書き換え規則があるときに警告する -fno-warn-orphans
-fwarn-overlapping-patterns 重複パターンがあれば警告する -fno-warn-overlapping-patterns
-fwarn-tabs ソースファイル中にタブがあったときに警告する -fno-warn-tabs
-fwarn-type-defaults デフォルト化が起きたときに警告する -fno-warn-type-defaults
-fwarn-monomorphism-restriction 単相性限定が適用された時に警告する -fno-warn-monomorphism-restriction
-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

最適化水準

4.10. 最適化(コードの改善)

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

個々の最適化

4.10.2. -f*: プラットフォーム非依存のフラグ

フラグ 解説 動静
-fcase-merge case-mergingを有効にする。-Oオプションによって有効になる。 -fno-case-merge
-fdicts-strict 辞書を正格にする -fno-dicts-strict
-fmethod-sharing 多重定義関数の特殊化を共有する(デフォルト) -fno-method-sharing
-fdo-eta-reduction イータ簡約を有効にする。-Oによって有効になる。 -fno-do-eta-reduction
-fdo-lambda-eta-expansion ラムダイータ展開を有効にする -fno-do-lambda-eta-expansion
-fexcess-precision 中間値の精度超過を有効にする -fno-excess-precision
-fignore-asserts ソース中のアサーションを無視する -fno-ignore-asserts
-fignore-interface-pragmas インタフェースファイル中のプラグマを無視する -fno-ignore-interface-pragmas
-fomit-interface-pragmas インタフェースプログラムを生成しない -fno-omit-interface-pragmas
-fmax-worker-args ワーカにこれだけの引数があるとき、これ以上アンパックしない(デフォルト: 10) -
-fsimplifier-phases 単純化器の段階の数を設定する(デフォルトは2)。-O0が与えられたときには無視される。 -
-fmax-simplifier-iterations 単純化器の最大繰り返し回数を設定する -
-fno-state-hack 実世界の状態トークンを引数として持つラムダが単一進入だとみなされ、従ってその内容をインライン化できる、という「stateハック」を無効にする。 -
-fcse 共通部分式削除を使う。-Oによって有効になる。 -fno-cse
-fspecialise 多重定義された関数の特殊化を有効にする。-Oによっても有効になる。 -fno-specialise
-ffull-laziness 完全遅延(束縛を外側に向かって浮遊させる)を有効にする。-Oによっても有効になる。 -fno-full-laziness
-ffloat-in "float-in"最適化を有効にする。-Oによっても有効になる。 -fno-float-in
-fenable-rewrite-rules 全ての書き換え規則(多重定義関数の自動特殊化で生成されたものも含む)を有効にする。-Oによっても有効になる。 -fno-enable-rewrite-rules
-fstrictness 正格性解析を有効にする。-Oによっても有効になる。 -fno-strictness
-fstrictness=before=n 単純化器の段階nの前に、追加で正格性解析を行なう。 -
-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
-fliberate-case liberate-case変換を有効にする。-O2によっても有効になる。 -fno-liberate-case
-fstatic-argument-transformation 静的引数変換を有効にする。-O2によって有効になる。 -fno-static-argument-transformation
-fliberate-case-threshold=n liberate-case変換における大きさ閾値をnに設定する。(デフォルト: 200) -fno-liberate-case-threshold
-funbox-strict-fields 構築子の正格なフィールドを平坦化する -fno-unbox-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
-fno-pre-inlining pre-inliningを無効にする -
-feager-blackholing eager blackholingを有効にする -

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

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

フラグ 解説 動静
-auto エクスポートされていてINLINE指定されていない全ての関数に自動的に_scc_を付加する -no-auto
-auto-all INLINE指定されていない全ての最上位の関数に自動的に_scc_を付加する -no-auto-all
-caf-all 全てのCAFに自動的に_scc_を付加する -no-caf-all
-prof プロファイルを有効にする -
-ticky ticky-tickyプロファイルを有効にする -

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

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

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

Haskell前処理器オプション

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

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

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

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

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

コード生成オプション

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

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

プログラムのリンク

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

フラグ 解説 動静
-shared (実行ファイルでなく)共有ライブラリを生成する -
-fPIC (可能なら)位置独立コードを生成する -
-dynamic (可能なら)動的なHaskellライブラリを使う -
-dynload 実行時に共有ライブラリを見つけるための方法として、いくつかから一つ選ぶ。 -
-framework name Darwin/MacOS Xのみ。フレームワークnameをリンクする。このオプションはAppleのリンカの-frameworkオプションに相当する。 -
-framework-path name Darwin/MacOS Xのみ。ディレクトリ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/MacOS Xのみ) -

段階の置き換え

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

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

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

4.11.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.15. プラットフォーム固有のフラグ

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

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

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

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

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

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

フラグ 解説 動静
-dcore-lint 内部的な正気度チェックを有効にする -
-ddump-asm アセンブリを表示 -
-ddump-bcos インタプリタバイトコードを出力 -
-ddump-cmm C--出力を表示 -
-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-rules 規則(rules)を表示 -
-ddump-simpl 単純化器の最終出力を表示 -
-ddump-simpl-phases 単純化器の段階毎の出力を表示 -
-ddump-simpl-iterations 単純化器の繰り返し毎の出力を表示 -
-ddump-spec 特殊化器の出力を表示 -
-ddump-splices 接合されたTH式と、その評価結果を表示 -
-ddump-stg 最終STGを表示 -
-ddump-stranal 正格性解析器の出力を表示 -
-ddump-tc 型検査器の出力を表示 -
-ddump-types 型シグネチャを表示 -
-ddump-worker-wrapper worker/wrapper出力を表示 -
-ddump-if-trace インタフェースファイルを追跡 -
-ddump-tc-trace 型検査器を追跡 -
-ddump-rn-trace 名前変更器を追跡 -
-ddump-rn-stats 名前変更器の統計情報 -
-ddump-simpl-stats 単純化器の統計情報を出力 -
-dno-debug-output 要求された以外のデバッグ出力を抑制する -
-dppr-debug デバッグ表示を有効にする(さらなる多弁) -
-dsuppress-uniques デバッグ出力中で固有子を表示することを抑制する(diffが使いやすくなる。 -
-dsuppress-coercions Core出力の中で型変換(coercion)を表示するのを抑制し、Core出力が短かくなるようにする。 -
-dsuppress-module-prefixes Core出力の中でモジュール修飾接頭辞を表示するのを抑制し、読み易くする。 -
-dppr-noprags 表示にプラグマを含めない -
-dppr-user-length エラーメッセージ中の式の深さを設定する -
-dsource-stats Haskellソースの統計情報を表示 -
-dcmm-lint C--過程の正気度チェック -
-dstg-lint STG過程の正気度チェック -
-dstg-stats STG統計情報を表示 -
-dverbose-core2core コアからコアへの過程一回毎に出力を表示 -
-dverbose-stg2stg STGからSTGへの過程一回毎に出力を表示 -
-dshow-passes 過程の名前を発生ごとに表示 -
-dfaststring-stats 終了時にfast stringの利用に関する統計情報を表示 -

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

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