4.19. Flag reference

This section is a quick-reference for GHC's command-line flags. For each flag, we also list its static/dynamic status (see Section 4.2), and the flag's opposite (if available).

4.19.1. Help and verbosity options (Section 4.4)

4.19.2. Which phases to run (Section 4.6)

4.19.3. Redirecting output (Section 4.7)

4.19.4. Keeping intermediate files (Section 4.7.1)

4.19.5. Temporary files (Section 4.7.2)

4.19.6. Finding imports (Section 4.9.2)

4.19.7. Interface file options (Section 4.9.4)

4.19.8. Recompilation checking (Section 4.9.5)

4.19.9. Interactive-mode options (Section 3.8)

4.19.10. Packages (Section 4.10)

4.19.11. Language options (Section 7.1)

4.19.12. Warnings (Section 4.8)

FlagDescriptionStatic/DynamicReverse
-Wenable normal warningsdynamic-w
-wdisable all warningsdynamic-
-Wallenable all warningsdynamic-w
-fwarn-deprecationswarn about uses of functions & types that are deprecateddynamic-fno-warn-deprecations
-fwarn-duplicate-exportswarn when an entity is exported multiple timesdynamic-fno-warn-duplicate-exports
-fwarn-hi-shadowingwarn when a .hi file in the current directory shadows a librarydynamic-fno-warn-hi-shadowing
-fwarn-incomplete-patternswarn when a pattern match could faildynamic-fno-warn-incomplete-patterns
-fwarn-miscenable miscellaneous warningsdynamic-fno-warn-misc
-fwarn-missing-fieldswarn when fields of a record are uninitialiseddynamic-fno-warn-missing-fields
-fwarn-missing-methodswarn when class methods are undefineddynamic-fno-warn-missing-methods
-fwarn-missing-signatureswarn about top-level functions without signaturesdynamic-fno-warn-missing-signatures
-fwarn-name-shadowingwarn when names are shadoweddynamic-fno-warn-name-shadowing
-fwarn-overlapping-patternswarn about overlapping patternsdynamic-fno-warn-overlapping-patterns
-fwarn-simple-patternswarn about lambda-patterns that can faildynamic-fno-warn-simple-patterns
-fwarn-type-defaultswarn when defaulting happensdynamic-fno-warn-type-defaults
-fwarn-unused-bindswarn about bindings that are unuseddynamic-fno-warn-unused-binds
-fwarn-unused-importswarn about unnecessary importsdynamic-fno-warn-unused-imports
-fwarn-unused-matcheswarn about variables in patterns that aren't useddynamic-fno-warn-unused-matches

4.19.13. Optimisation levels (Section 4.11)

4.19.14. Individual optimisations (Section 4.11.2)

FlagDescriptionStatic/DynamicReverse
-fcase-mergeEnable case-mergingstatic-fno-case-merge
-fdicts-strictMake dictionaries strictdynamic-fno-dicts-strict
-fdo-eta-reductionEnable eta-reductionstatic-fno-do-eta-reduction
-fdo-lambda-eta-expansionEnable lambda eta-reductionstatic-fno-do-lambda-eta-expansion
-fexcess-precisionEnable excess intermediate precisionstatic-fno-excess-precision
-ffoldr-build-onEnable foldr-build optimisationstatic-fno-foldr-build-on
-fignore-assertsIgnore assertions in the sourcestatic-fno-ignore-asserts
-fignore-interface-pragmasIgnore pragmas in interface filesstatic-fno-ignore-interface-pragmas
-flet-no-escapeEnable let-no-escape optimisationstatic-fno-let-no-escape
-fliberate-case-thresholdTweak the liberate-case optimisation (default: 10)static-fno-liberate-case-threshold
-fomit-interface-pragmasDon't generate interface pragmasstatic-fno-omit-interface-pragmas
-fmax-worker-argsIf a worker has that many arguments, none will be unpacked anymore (default: 10)static-
-fmax-simplifier-iterationsSet the max iterations for the simplifierstatic-
-fno-cprTurn off CPR analysisstatic-
-fno-cseTurn off common sub-expressionstatic-
-fno-pre-inliningTurn off pre-inliningstatic-
-fno-strictnessTurn off strictness analysisstatic-
-fnumbers-strictMake numbers strictdynamic-fno-numbers-strict
-funbox-strict-fieldsFlatten strict constructor fieldsstatic-fno-unbox-strict-fields
-funfolding-creation-thresholdTweak unfolding settingsstatic-fno-unfolding-creation-threshold
-funfolding-fun-discountTweak unfolding settingsstatic-fno-unfolding-fun-discount
-funfolding-keeness-factorTweak unfolding settingsstatic-fno-unfolding-keeness-factor
-funfolding-update-in-placeTweak unfolding settingsstatic-fno-unfolding-update-in-place
-funfolding-use-thresholdTweak unfolding settingsstatic-fno-unfolding-use-threshold
-fusagespTurn on UsageSP analysisstatic-fno-usagesp

4.19.15. Profiling options (Chapter 5)

4.19.16. Parallelism options (Section 4.14)

4.19.17. C pre-processor options (Section 4.12.3)

4.19.18. C compiler options (Section 4.12.5)

4.19.19. Code generation options (Section 4.12.6)

4.19.20. Linking options (Section 4.12.7)

4.19.21. Replacing phases (Section 4.12.1)

4.19.22. Forcing options to particular phases (Section 4.12.2)

4.19.23. Platform-specific options (Section 4.15)

4.19.24. External core file options (Section 4.17)

4.19.25. Compiler debugging options (Section 4.18)

FlagDescriptionStatic/DynamicReverse
-dcore-lintTurn on internal sanity checkingdynamic-
-ddump-absCDump abstract Cdynamic-
-ddump-asmDump assemblydynamic-
-ddump-bcosDump interpreter byte codedynamic-
-ddump-cpranalDump output from CPR analysisdynamic-
-ddump-cseDump CSE outputdynamic-
-ddump-derivDump deriving outputdynamic-
-ddump-dsDump desugarer outputdynamic-
-ddump-flatCDump “flat” Cdynamic-
-ddump-foreignDump foreign export stubsdynamic-
-ddump-inliningsDump inlining infodynamic-
-ddump-occur-analDump occurrence analysis outputdynamic-
-ddump-parsedDump parse treedynamic-
-ddump-realCDump “real” Cdynamic-
-ddump-rnDump renamer outputdynamic-
-ddump-rulesDump rulesdynamic-
-ddump-satDump saturated outputdynamic-
-ddump-simplDump final simplifier outputdynamic-
-ddump-simpl-iterationsDump output from each simplifier iterationdynamic-
-ddump-specDump specialiser outputdynamic-
-ddump-stgDump final STGdynamic-
-ddump-stranalDump strictness analyser outputdynamic-
-ddump-tcDump typechecker outputdynamic-
-ddump-typesDump type signaturesdynamic-
-ddump-usagespDump UsageSP analysis outputdynamic-
-ddump-worker-wrapperDump worker-wrapper outputdynamic-
-ddump-rn-traceTrace renamerdynamic-
-ddump-rn-statsRenamer statsdynamic-
-ddump-stixNative code generator intermediate formdynamic-
-ddump-simpl-statsDump simplifier statsdynamic-
-dppr-debugTurn on debug printing (more verbose)static-
-dppr-nopragsDon't output pragma info in dumpsstatic-
-dppr-user-lengthSet the depth for printing expressions in error msgsstatic-
-dsource-statsDump haskell source statsdynamic-
-dstg-lintSTG pass sanity checkingdynamic-
-dstg-statsDump STG statsdynamic-
-dusagesp-lintUsageSP sanity checkerdynamic-
-dverbose-core2coreShow output from each core-to-core passdynamic-
-dverbose-stg2stgShow output from each STG-to-STG passdynamic-
-unregEnable unregisterised compilationstatic-

4.19.26. Misc compiler options