Implement Partial Type Signatures
[ghc.git] / docs / users_guide / flags.xml
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="flag-reference">
3 <title>Flag reference</title>
4
5 <para>This section is a quick-reference for GHC's command-line
6 flags. For each flag, we also list its static/dynamic status (see
7 <xref linkend="static-dynamic-flags"/>), and the flag's opposite
8 (if available).</para>
9
10 <sect2>
11 <title>Verbosity options</title>
12
13 <para>More details in <xref linkend="options-help"/></para>
14
15 <informaltable>
16 <tgroup cols="4" align="left" colsep="1" rowsep="1">
17 <thead>
18 <row>
19 <entry>Flag</entry>
20 <entry>Description</entry>
21 <entry>Static/Dynamic</entry>
22 <entry>Reverse</entry>
23 </row>
24 </thead>
25 <tbody>
26 <row>
27 <entry><option>-v</option></entry>
28 <entry>verbose mode (equivalent to <option>-v3</option>)</entry>
29 <entry>dynamic</entry>
30 <entry>-</entry>
31 </row>
32 <row>
33 <entry><option>-v</option><replaceable>n</replaceable></entry>
34 <entry>set verbosity level</entry>
35 <entry>dynamic</entry>
36 <entry>-</entry>
37 </row>
38 <row>
39 <entry><option>-fprint-explicit-foralls</option></entry>
40 <entry>print explicit <literal>forall</literal> quantification in types</entry>
41 <entry>dynamic</entry>
42 <entry>-fno-print-explicit-foralls</entry>
43 </row>
44 <row>
45 <entry><option>-fprint-explicit-kinds</option></entry>
46 <entry>print explicit kind foralls and kind arguments in types</entry>
47 <entry>dynamic</entry>
48 <entry>-fno-print-explicit-kinds</entry>
49 </row>
50 <row>
51 <entry><option>-ferror-spans</option></entry>
52 <entry>output full span in error messages</entry>
53 <entry>dynamic</entry>
54 <entry>-</entry>
55 </row>
56 <row>
57 <entry><option>-H</option><replaceable>size</replaceable></entry>
58 <entry>Set the minimum heap size to <replaceable>size</replaceable></entry>
59 <entry>dynamic</entry>
60 <entry>-</entry>
61 </row>
62 <row>
63 <entry><option>-Rghc-timing</option></entry>
64 <entry>Summarise timing stats for GHC (same as <literal>+RTS -tstderr</literal>)</entry>
65 <entry>dynamic</entry>
66 <entry>-</entry>
67 </row>
68 </tbody>
69 </tgroup>
70 </informaltable>
71
72 </sect2>
73 <sect2>
74 <title>Alternative modes of operation</title>
75
76 <para>More details in <xref linkend="modes"/></para>
77
78 <informaltable>
79 <tgroup cols="4" align="left" colsep="1" rowsep="1">
80 <thead>
81 <row>
82 <entry>Flag</entry>
83 <entry>Description</entry>
84 <entry>Static/Dynamic</entry>
85 <entry>Reverse</entry>
86 </row>
87 </thead>
88 <tbody>
89 <row>
90 <entry><option>--help</option>,<option>-?</option></entry>
91 <entry>Disply help</entry>
92 <entry>mode</entry>
93 <entry>-</entry>
94 </row>
95
96 <row>
97 <entry><option>--interactive</option></entry>
98 <entry>Interactive mode - normally used by just running <command>ghci</command>;
99 see <xref linkend="ghci"/> for details.</entry>
100 <entry>mode</entry>
101 <entry>-</entry>
102 </row>
103 <row>
104 <entry><option>--make</option></entry>
105 <entry>Build a multi-module Haskell program, automatically figuring out dependencies. Likely to be much easier, and faster, than using <command>make</command>;
106 see <xref linkend="make-mode"/> for details..</entry>
107 <entry>mode</entry>
108 <entry>-</entry>
109 </row>
110 <row>
111 <entry><option>-e <replaceable>expr</replaceable></option></entry>
112 <entry>Evaluate <replaceable>expr</replaceable>;
113 see <xref linkend="eval-mode"/> for details.</entry>
114 <entry>mode</entry>
115 <entry>-</entry>
116 </row>
117
118 <row>
119 <entry><option>--show-iface</option></entry>
120 <entry>Display the contents of an interface file.</entry>
121 <entry>mode</entry>
122 <entry>-</entry>
123 </row>
124
125 <row>
126 <entry><option>-M</option></entry>
127 <entry>Generate dependency information suitable for use in a <filename>Makefile</filename>;
128 see <xref linkend="makefile-dependencies"/> for details.</entry>
129 <entry>mode</entry>
130 <entry>-</entry>
131 </row>
132
133
134 <row>
135 <entry><option>--supported-extensions</option>, <option>--supported-languages</option></entry>
136 <entry>display the supported language extensions</entry>
137 <entry>mode</entry>
138 <entry>-</entry>
139 </row>
140 <row>
141 <entry><option>--show-options</option></entry>
142 <entry>display the supported command line options</entry>
143 <entry>mode</entry>
144 <entry>-</entry>
145 </row>
146 <row>
147 <entry><option>--info</option></entry>
148 <entry>display information about the compiler</entry>
149 <entry>mode</entry>
150 <entry>-</entry>
151 </row>
152 <row>
153 <entry><option>--version, -V</option></entry>
154 <entry>display GHC version</entry>
155 <entry>mode</entry>
156 <entry>-</entry>
157 </row>
158 <row>
159 <entry><option>--numeric-version</option></entry>
160 <entry>display GHC version (numeric only)</entry>
161 <entry>mode</entry>
162 <entry>-</entry>
163 </row>
164 <row>
165 <entry><option>--print-libdir</option></entry>
166 <entry>display GHC library directory</entry>
167 <entry>mode</entry>
168 <entry>-</entry>
169 </row>
170
171 </tbody>
172 </tgroup>
173 </informaltable>
174 </sect2>
175
176 <sect2>
177 <title>Which phases to run</title>
178
179 <para><xref linkend="options-order"/></para>
180
181 <informaltable>
182 <tgroup cols="4" align="left" colsep="1" rowsep="1">
183 <thead>
184 <row>
185 <entry>Flag</entry>
186 <entry>Description</entry>
187 <entry>Static/Dynamic</entry>
188 <entry>Reverse</entry>
189 </row>
190 </thead>
191 <tbody>
192 <row>
193 <entry><option>-E</option></entry>
194 <entry>Stop after preprocessing (<literal>.hspp</literal> file)</entry>
195 <entry>mode</entry>
196 <entry>-</entry>
197 </row>
198 <row>
199 <entry><option>-C</option></entry>
200 <entry>Stop after generating C (<literal>.hc</literal> file)</entry>
201 <entry>mode</entry>
202 <entry>-</entry>
203 </row>
204 <row>
205 <entry><option>-S</option></entry>
206 <entry>Stop after generating assembly (<literal>.s</literal> file)</entry>
207 <entry>mode</entry>
208 <entry>-</entry>
209 </row>
210 <row>
211 <entry><option>-c</option></entry>
212 <entry>Stop after generating object (<literal>.o</literal>) file</entry>
213 <entry>mode</entry>
214 <entry>-</entry>
215 </row>
216 <row>
217 <entry><option>-x</option> <replaceable>suffix</replaceable></entry>
218 <entry>Override default behaviour for source files</entry>
219 <entry>dynamic</entry>
220 <entry>-</entry>
221 </row>
222 </tbody>
223 </tgroup>
224 </informaltable>
225 </sect2>
226
227 <sect2>
228 <title>Redirecting output</title>
229
230 <para><xref linkend="options-output"/></para>
231
232 <informaltable>
233 <tgroup cols="4" align="left" colsep="1" rowsep="1">
234 <thead>
235 <row>
236 <entry>Flag</entry>
237 <entry>Description</entry>
238 <entry>Static/Dynamic</entry>
239 <entry>Reverse</entry>
240 </row>
241 </thead>
242 <tbody>
243 <row>
244 <entry><option>-hcsuf</option> <replaceable>suffix</replaceable></entry>
245 <entry>set the suffix to use for intermediate C files</entry>
246 <entry>dynamic</entry>
247 <entry>-</entry>
248 </row>
249 <row>
250 <entry><option>-hidir</option> <replaceable>dir</replaceable></entry>
251 <entry>set directory for interface files</entry>
252 <entry>dynamic</entry>
253 <entry>-</entry>
254 </row>
255 <row>
256 <entry><option>-hisuf</option> <replaceable>suffix</replaceable></entry>
257 <entry>set the suffix to use for interface files</entry>
258 <entry>dynamic</entry>
259 <entry>-</entry>
260 </row>
261 <row>
262 <entry><option>-o</option> <replaceable>filename</replaceable></entry>
263 <entry>set output filename</entry>
264 <entry>dynamic</entry>
265 <entry>-</entry>
266 </row>
267 <row>
268 <entry><option>-odir</option> <replaceable>dir</replaceable></entry>
269 <entry>set directory for object files</entry>
270 <entry>dynamic</entry>
271 <entry>-</entry>
272 </row>
273 <row>
274 <entry><option>-ohi</option> <replaceable>filename</replaceable></entry>
275 <entry>set the filename in which to put the interface</entry>
276 <entry>dynamic</entry>
277 <entry></entry>
278 </row>
279 <row>
280 <entry><option>-osuf</option> <replaceable>suffix</replaceable></entry>
281 <entry>set the output file suffix</entry>
282 <entry>dynamic</entry>
283 <entry>-</entry>
284 </row>
285 <row>
286 <entry><option>-stubdir</option> <replaceable>dir</replaceable></entry>
287 <entry>redirect FFI stub files</entry>
288 <entry>dynamic</entry>
289 <entry>-</entry>
290 </row>
291 <row>
292 <entry><option>-dumpdir</option> <replaceable>dir</replaceable></entry>
293 <entry>redirect dump files</entry>
294 <entry>dynamic</entry>
295 <entry>-</entry>
296 </row>
297 <row>
298 <entry><option>-outputdir</option> <replaceable>dir</replaceable></entry>
299 <entry>set output directory</entry>
300 <entry>dynamic</entry>
301 <entry>-</entry>
302 </row>
303 </tbody>
304 </tgroup>
305 </informaltable>
306 </sect2>
307
308 <sect2>
309 <title>Keeping intermediate files</title>
310
311 <para><xref linkend="keeping-intermediates"/></para>
312
313 <informaltable>
314 <tgroup cols="4" align="left" colsep="1" rowsep="1">
315 <thead>
316 <row>
317 <entry>Flag</entry>
318 <entry>Description</entry>
319 <entry>Static/Dynamic</entry>
320 <entry>Reverse</entry>
321 </row>
322 </thead>
323 <tbody>
324 <row>
325 <entry><option>-keep-hc-file</option> or
326 <option>-keep-hc-files</option></entry>
327 <entry>retain intermediate <literal>.hc</literal> files</entry>
328 <entry>dynamic</entry>
329 <entry>-</entry>
330 </row>
331 <row>
332 <entry><option>-keep-llvm-file</option> or
333 <option>-keep-llvm-files</option></entry>
334 <entry>retain intermediate LLVM <literal>.ll</literal> files</entry>
335 <entry>dynamic</entry>
336 <entry>-</entry>
337 </row>
338 <row>
339 <entry><option>-keep-s-file</option> or
340 <option>-keep-s-files</option></entry>
341 <entry>retain intermediate <literal>.s</literal> files</entry>
342 <entry>dynamic</entry>
343 <entry>-</entry>
344 </row>
345 <row>
346 <entry><option>-keep-tmp-files</option></entry>
347 <entry>retain all intermediate temporary files</entry>
348 <entry>dynamic</entry>
349 <entry>-</entry>
350 </row>
351 </tbody>
352 </tgroup>
353 </informaltable>
354 </sect2>
355
356 <sect2>
357 <title>Temporary files</title>
358
359 <para><xref linkend="temp-files"/></para>
360
361 <informaltable>
362 <tgroup cols="4" align="left" colsep="1" rowsep="1">
363 <thead>
364 <row>
365 <entry>Flag</entry>
366 <entry>Description</entry>
367 <entry>Static/Dynamic</entry>
368 <entry>Reverse</entry>
369 </row>
370 </thead>
371 <tbody>
372 <row>
373 <entry><option>-tmpdir</option></entry>
374 <entry>set the directory for temporary files</entry>
375 <entry>dynamic</entry>
376 <entry>-</entry>
377 </row>
378 </tbody>
379 </tgroup>
380 </informaltable>
381 </sect2>
382
383 <sect2>
384 <title>Finding imports</title>
385
386 <para><xref linkend="search-path"/></para>
387
388 <informaltable>
389 <tgroup cols="4" align="left" colsep="1" rowsep="1">
390 <thead>
391 <row>
392 <entry>Flag</entry>
393
394 <entry>Description</entry>
395 <entry>Static/Dynamic</entry>
396 <entry>Reverse</entry>
397 </row>
398 </thead>
399 <tbody>
400 <row>
401 <entry><option>-i</option><replaceable>dir1</replaceable>:<replaceable>dir2</replaceable>:...</entry>
402 <entry>add <replaceable>dir</replaceable>,
403 <replaceable>dir2</replaceable>, etc. to import path</entry>
404 <entry>dynamic/<literal>:set</literal></entry>
405 <entry>-</entry>
406 </row>
407 <row>
408 <entry><option>-i</option></entry>
409 <entry>Empty the import directory list</entry>
410 <entry>dynamic/<literal>:set</literal></entry>
411 <entry>-</entry>
412 </row>
413 </tbody>
414 </tgroup>
415 </informaltable>
416 </sect2>
417
418 <sect2>
419 <title>Interface file options</title>
420
421 <para><xref linkend="hi-options"/></para>
422
423 <informaltable>
424 <tgroup cols="4" align="left" colsep="1" rowsep="1">
425 <thead>
426 <row>
427 <entry>Flag</entry>
428
429 <entry>Description</entry>
430 <entry>Static/Dynamic</entry>
431 <entry>Reverse</entry>
432 </row>
433 </thead>
434 <tbody>
435 <row>
436 <entry><option>-ddump-hi</option></entry>
437 <entry>Dump the new interface to stdout</entry>
438 <entry>dynamic</entry>
439 <entry>-</entry>
440 </row>
441 <row>
442 <entry><option>-ddump-hi-diffs</option></entry>
443 <entry>Show the differences vs. the old interface</entry>
444 <entry>dynamic</entry>
445 <entry>-</entry>
446 </row>
447 <row>
448 <entry><option>-ddump-minimal-imports</option></entry>
449 <entry>Dump a minimal set of imports</entry>
450 <entry>dynamic</entry>
451 <entry>-</entry>
452 </row>
453 <row>
454 <entry><option>--show-iface</option> <replaceable>file</replaceable></entry>
455 <entry>See <xref linkend="modes"/>.</entry>
456 </row>
457 </tbody>
458 </tgroup>
459 </informaltable>
460 </sect2>
461
462 <sect2>
463 <title>Recompilation checking</title>
464
465 <para><xref linkend="recomp"/></para>
466
467 <informaltable>
468 <tgroup cols="4" align="left" colsep="1" rowsep="1">
469 <thead>
470 <row>
471 <entry>Flag</entry>
472
473 <entry>Description</entry>
474 <entry>Static/Dynamic</entry>
475 <entry>Reverse</entry>
476 </row>
477 </thead>
478 <tbody>
479 <row>
480 <entry><option>-fforce-recomp</option></entry>
481 <entry>Turn off recompilation checking. This is implied by any
482 <option>-ddump-X</option> option when compiling a single
483 file (i.e. when using <literal>-c</literal>).</entry>
484 <entry>dynamic</entry>
485 <entry><option>-fno-force-recomp</option></entry>
486 </row>
487 </tbody>
488 </tgroup>
489 </informaltable>
490 </sect2>
491
492 <sect2 id="interactive-mode-options">
493 <title>Interactive-mode options</title>
494
495 <para><xref linkend="ghci-dot-files"/></para>
496
497 <informaltable>
498 <tgroup cols="4" align="left" colsep="1" rowsep="1">
499 <thead>
500 <row>
501 <entry>Flag</entry>
502 <entry>Description</entry>
503 <entry>Static/Dynamic</entry>
504 <entry>Reverse</entry>
505 </row>
506 </thead>
507 <tbody>
508 <row>
509 <entry><option>-ignore-dot-ghci</option></entry>
510 <entry>Disable reading of <filename>.ghci</filename> files</entry>
511 <entry>dynamic</entry>
512 <entry>-</entry>
513 </row>
514 <row>
515 <entry><option>-ghci-script</option></entry>
516 <entry>Read additional <filename>.ghci</filename> files</entry>
517 <entry>dynamic</entry>
518 <entry>-</entry>
519 </row>
520 <row>
521 <entry><option>-fbreak-on-error</option></entry>
522 <entry><link linkend="ghci-debugger-exceptions">Break on uncaught exceptions and errors</link></entry>
523 <entry>dynamic</entry>
524 <entry><option>-fno-break-on-error</option></entry>
525 </row>
526 <row>
527 <entry><option>-fbreak-on-exception</option></entry>
528 <entry><link linkend="ghci-debugger-exceptions">Break on any exception thrown</link></entry>
529 <entry>dynamic</entry>
530 <entry><option>-fno-break-on-exception</option></entry>
531 </row>
532 <row>
533 <entry><option>-fghci-hist-size=<replaceable>n</replaceable></option></entry>
534 <entry><link linkend="ghci-debugger">Set the number of entries GHCi keeps for <literal>:history</literal></link></entry>
535 <entry>dynamic</entry>
536 <entry><option>(default is 50)</option></entry>
537 </row>
538 <row>
539 <entry><option>-fprint-evld-with-show</option></entry>
540 <entry><link linkend="breakpoints">Enable usage of Show instances in <literal>:print</literal></link></entry>
541 <entry>dynamic</entry>
542 <entry><option>-fno-print-evld-with-show</option></entry>
543 </row>
544 <row>
545 <entry><option>-fprint-bind-result</option></entry>
546 <entry><link linkend="ghci-stmts">Turn on printing of binding results in GHCi</link></entry>
547 <entry>dynamic</entry>
548 <entry><option>-fno-print-bind-result</option></entry>
549 </row>
550 <row>
551 <entry><option>-fno-print-bind-contents</option></entry>
552 <entry><link linkend="breakpoints">Turn off printing of binding contents in GHCi</link></entry>
553 <entry>dynamic</entry>
554 <entry>-</entry>
555 </row>
556 <row>
557 <entry><option>-fno-implicit-import-qualified</option></entry>
558 <entry><link linkend="ghci-import-qualified">Turn off
559 implicit qualified import of everything in GHCi</link></entry>
560 <entry>dynamic</entry>
561 <entry>-</entry>
562 </row>
563 <row>
564 <entry><option>-interactive-print</option></entry>
565 <entry><link linkend="ghci-interactive-print">Select the function
566 to use for printing evaluated expressions in GHCi</link></entry>
567 <entry>dynamic</entry>
568 <entry>-</entry>
569 </row>
570
571 </tbody>
572 </tgroup>
573 </informaltable>
574 </sect2>
575
576 <sect2>
577 <title>Packages</title>
578
579 <para><xref linkend="packages"/></para>
580
581 <informaltable>
582 <tgroup cols="4" align="left" colsep="1" rowsep="1">
583 <thead>
584 <row>
585 <entry>Flag</entry>
586 <entry>Description</entry>
587 <entry>Static/Dynamic</entry>
588 <entry>Reverse</entry>
589 </row>
590 </thead>
591 <tbody>
592 <row>
593 <entry><option>-this-package-key</option> <replaceable>P</replaceable></entry>
594 <entry>Compile to be part of package <replaceable>P</replaceable></entry>
595 <entry>dynamic</entry>
596 <entry>-</entry>
597 </row>
598 <row>
599 <entry><option>-package</option> <replaceable>P</replaceable></entry>
600 <entry>Expose package <replaceable>P</replaceable></entry>
601 <entry>dynamic/<literal>:set</literal></entry>
602 <entry>-</entry>
603 </row>
604 <row>
605 <entry><option>-hide-all-packages</option></entry>
606 <entry>Hide all packages by default</entry>
607 <entry>dynamic</entry>
608 <entry>-</entry>
609 </row>
610 <row>
611 <entry><option>-hide-package</option> <replaceable>name</replaceable></entry>
612 <entry>Hide package <replaceable>P</replaceable></entry>
613 <entry>dynamic/<literal>:set</literal></entry>
614 <entry>-</entry>
615 </row>
616 <row>
617 <entry><option>-ignore-package</option> <replaceable>name</replaceable></entry>
618 <entry>Ignore package <replaceable>P</replaceable></entry>
619 <entry>dynamic/<literal>:set</literal></entry>
620 <entry>-</entry>
621 </row>
622 <row>
623 <entry><option>-package-db</option> <replaceable>file</replaceable></entry>
624 <entry>Add <replaceable>file</replaceable> to the package db stack.</entry>
625 <entry>dynamic</entry>
626 <entry>-</entry>
627 </row>
628 <row>
629 <entry><option>-clear-package-db</option></entry>
630 <entry>Clear the package db stack.</entry>
631 <entry>dynamic</entry>
632 <entry>-</entry>
633 </row>
634 <row>
635 <entry><option>-no-global-package-db</option></entry>
636 <entry>Remove the global package db from the stack.</entry>
637 <entry>dynamic</entry>
638 <entry>-</entry>
639 </row>
640 <row>
641 <entry><option>-global-package-db</option></entry>
642 <entry>Add the global package db to the stack.</entry>
643 <entry>dynamic</entry>
644 <entry>-</entry>
645 </row>
646 <row>
647 <entry><option>-no-user-package-db</option></entry>
648 <entry>Remove the user's package db from the stack.</entry>
649 <entry>dynamic</entry>
650 <entry>-</entry>
651 </row>
652 <row>
653 <entry><option>-user-package-db</option></entry>
654 <entry>Add the user's package db to the stack.</entry>
655 <entry>dynamic</entry>
656 <entry>-</entry>
657 </row>
658 <row>
659 <entry><option>-no-auto-link-packages</option></entry>
660 <entry>Don't automatically link in the base and rts packages.</entry>
661 <entry>dynamic</entry>
662 <entry>-</entry>
663 </row>
664 <row>
665 <entry><option>-trust</option> <replaceable>P</replaceable></entry>
666 <entry>Expose package <replaceable>P</replaceable> and set it to be
667 trusted</entry>
668 <entry>dynamic/<literal>:set</literal></entry>
669 <entry>-</entry>
670 </row>
671 <row>
672 <entry><option>-distrust</option> <replaceable>P</replaceable></entry>
673 <entry>Expose package <replaceable>P</replaceable> and set it to be
674 distrusted</entry>
675 <entry>dynamic/<literal>:set</literal></entry>
676 <entry>-</entry>
677 </row>
678 <row>
679 <entry><option>-distrust-all</option> </entry>
680 <entry>Distrust all packages by default</entry>
681 <entry>dynamic/<literal>:set</literal></entry>
682 <entry>-</entry>
683 </row>
684 </tbody>
685 </tgroup>
686 </informaltable>
687 </sect2>
688
689 <sect2>
690 <title>Language options</title>
691
692 <para>Language options can be enabled either by a command-line option
693 <option>-Xblah</option>, or by a <literal>{-# LANGUAGE blah #-}</literal>
694 pragma in the file itself. See <xref linkend="options-language"/>. Some
695 options are enabled using <option>-f*</option> flags.</para>
696
697 <informaltable>
698 <tgroup cols="4" align="left" colsep="1" rowsep="1">
699 <thead>
700 <row>
701 <entry>Flag</entry>
702 <entry>Description</entry>
703 <entry>Static/Dynamic</entry>
704 <entry>Reverse</entry>
705 </row>
706 </thead>
707 <tbody>
708 <row>
709 <entry><option>-fcontext-stack=</option><replaceable>n</replaceable></entry>
710 <entry>set the <link linkend="undecidable-instances">limit for type-class context reduction</link>. Default is 100.</entry>
711 <entry>dynamic</entry>
712 <entry></entry>
713 </row>
714 <row>
715 <entry><option>-fglasgow-exts</option></entry>
716 <entry>Deprecated. Enable most language extensions; see <xref linkend="options-language"/> for exactly which ones.</entry>
717 <entry>dynamic</entry>
718 <entry><option>-fno-glasgow-exts</option></entry>
719 </row>
720 <row>
721 <entry><option>-firrefutable-tuples</option></entry>
722 <entry>Make tuple pattern matching irrefutable</entry>
723 <entry>dynamic</entry>
724 <entry><option>-fno-irrefutable-tuples</option></entry>
725 </row>
726 <row>
727 <entry><option>-fpackage-trust</option></entry>
728 <entry>Enable <link linkend="safe-haskell">Safe Haskell</link> trusted package requirement for trustworthy modules.</entry>
729 <entry>dynamic</entry>
730 <entry><option>-</option></entry>
731 </row>
732 <row>
733 <entry><option>-ftype-function-depth=</option><replaceable>n</replaceable></entry>
734 <entry>set the <link linkend="type-families">limit for type function reductions</link>. Default is 200.</entry>
735 <entry>dynamic</entry>
736 <entry></entry>
737 </row>
738 <row>
739 <entry><option>-XAllowAmbiguousTypes</option></entry>
740 <entry>Allow the user to write <link linkend="ambiguity">ambiguous types</link>,
741 and the type inference engine to infer them.
742 </entry>
743 <entry>dynamic</entry>
744 <entry><option>-XNoAllowAmbiguousTypes</option></entry>
745 </row>
746 <row>
747 <entry><option>-XArrows</option></entry>
748 <entry>Enable <link linkend="arrow-notation">arrow
749 notation</link> extension</entry>
750 <entry>dynamic</entry>
751 <entry><option>-XNoArrows</option></entry>
752 </row>
753 <row>
754 <entry><option>-XAutoDeriveTypeable</option></entry>
755 <entry>Automatically <link linkend="deriving-typeable">derive Typeable instances for every datatype and type class declaration</link>.
756 Implies <option>-XDeriveDataTypeable</option>.</entry>
757 <entry>dynamic</entry>
758 <entry><option>-XNoAutoDeriveTypeable</option></entry>
759 </row>
760 <row>
761 <entry><option>-XBangPatterns</option></entry>
762 <entry>Enable <link linkend="bang-patterns">bang patterns</link>.</entry>
763 <entry>dynamic</entry>
764 <entry><option>-XNoBangPatterns</option></entry>
765 </row>
766 <row>
767 <entry><option>-XBinaryLiterals</option></entry>
768 <entry>Enable support for <link linkend="binary-literals">binary literals</link>.</entry>
769 <entry>dynamic</entry>
770 <entry><option>-XNoBinaryLiterals</option></entry>
771 </row>
772 <row>
773 <entry><option>-XCApiFFI</option></entry>
774 <entry>Enable <link linkend="ffi-capi">the CAPI calling convention</link>.</entry>
775 <entry>dynamic</entry>
776 <entry><option>-XNoCAPIFFI</option></entry>
777 </row>
778 <row>
779 <entry><option>-XConstrainedClassMethods</option></entry>
780 <entry>Enable <link linkend="class-method-types">constrained class methods</link>.</entry>
781 <entry>dynamic</entry>
782 <entry><option>-XNoConstrainedClassMethods</option></entry>
783 </row>
784 <row>
785 <entry><option>-XConstraintKinds</option></entry>
786 <entry>Enable a <link linkend="constraint-kind">kind of constraints</link>.</entry>
787 <entry>dynamic</entry>
788 <entry><option>-XNoConstraintKinds</option></entry>
789 </row>
790 <row>
791 <entry><option>-XCPP</option></entry>
792 <entry>Enable the <link linkend="c-pre-processor">C preprocessor</link>.</entry>
793 <entry>dynamic</entry>
794 <entry><option>-XNoCPP</option></entry>
795 </row>
796 <row>
797 <entry><option>-XDataKinds</option></entry>
798 <entry>Enable <link linkend="promotion">datatype promotion</link>.</entry>
799 <entry>dynamic</entry>
800 <entry><option>-XNoDataKinds</option></entry>
801 </row>
802 <row>
803 <entry><option>-XDefaultSignatures</option></entry>
804 <entry>Enable <link linkend="class-default-signatures">default signatures</link>.</entry>
805 <entry>dynamic</entry>
806 <entry><option>-XNoDefaultSignatures</option></entry>
807 </row>
808 <row>
809 <entry><option>-XDeriveAnyClass</option></entry>
810 <entry>Enable <link linkend="derive-any-class">deriving for any
811 class</link>.</entry>
812 <entry>dynamic</entry>
813 <entry><option>-XNoDeriveAnyClass</option></entry>
814 </row>
815 <row>
816 <entry><option>-XDeriveDataTypeable</option></entry>
817 <entry>Enable <link linkend="deriving-typeable">deriving for the Data and Typeable classes</link>.
818 Implied by <option>-XAutoDeriveTypeable</option>.</entry>
819 <entry>dynamic</entry>
820 <entry><option>-XNoDeriveDataTypeable</option></entry>
821 </row>
822 <row>
823 <entry><option>-XDeriveFunctor</option></entry>
824 <entry>Enable <link linkend="deriving-extra">deriving for the Functor class</link>.
825 Implied by <option>-XDeriveTraversable</option>.</entry>
826 <entry>dynamic</entry>
827 <entry><option>-XNoDeriveFunctor</option></entry>
828 </row>
829 <row>
830 <entry><option>-XDeriveFoldable</option></entry>
831 <entry>Enable <link linkend="deriving-extra">deriving for the Foldable class</link>.
832 Implied by <option>-XDeriveTraversable</option>.</entry>
833 <entry>dynamic</entry>
834 <entry><option>-XNoDeriveFoldable</option></entry>
835 </row>
836 <row>
837 <entry><option>-XDeriveGeneric</option></entry>
838 <entry>Enable <link linkend="deriving-typeable">deriving for the Generic class</link>.</entry>
839 <entry>dynamic</entry>
840 <entry><option>-XNoDeriveGeneric</option></entry>
841 </row>
842 <row>
843 <entry><option>-XDeriveTraversable</option></entry>
844 <entry>Enable <link linkend="deriving-extra">deriving for the Traversable class</link>.
845 Implies <option>-XDeriveFunctor</option> and <option>-XDeriveFoldable</option>.</entry>
846 <entry>dynamic</entry>
847 <entry><option>-XNoDeriveTraversable</option></entry>
848 </row>
849 <row>
850 <entry><option>-XDisambiguateRecordFields</option></entry>
851 <entry>Enable <link linkend="disambiguate-fields">record field disambiguation</link>.
852 Implied by <option>-XRecordWildCards</option>.</entry>
853 <entry>dynamic</entry>
854 <entry><option>-XNoDisambiguateRecordFields</option></entry>
855 </row>
856 <row>
857 <entry><option>-XEmptyCase</option></entry>
858 <entry>Allow <link linkend="empty-case">empty case alternatives</link>.</entry>
859 <entry>dynamic</entry>
860 <entry><option>-XNoEmptyCase</option></entry>
861 </row>
862 <row>
863 <entry><option>-XEmptyDataDecls</option></entry>
864 <entry>Enable empty data declarations.</entry>
865 <entry>dynamic</entry>
866 <entry><option>-XNoEmptyDataDecls</option></entry>
867 </row>
868 <row>
869 <entry><option>-XExistentialQuantification</option></entry>
870 <entry>Enable <link linkend="existential-quantification">existential quantification</link>.</entry>
871 <entry>dynamic</entry>
872 <entry><option>-XNoExistentialQuantification</option></entry>
873 </row>
874 <row>
875 <entry><option>-XExplicitForAll</option></entry>
876 <entry>Enable <link linkend="explicit-foralls">explicit universal quantification</link>.
877 Implied by <option>-XScopedTypeVariables</option>,
878 <option>-XLiberalTypeSynonyms</option>,
879 <option>-XRankNTypes</option> and
880 <option>-XExistentialQuantification</option>.
881 </entry>
882 <entry>dynamic</entry>
883 <entry><option>-XNoExplicitForAll</option></entry>
884 </row>
885 <row>
886 <entry><option>-XExplicitNamespaces</option></entry>
887 <entry>Enable using the keyword <literal>type</literal> to specify the namespace of
888 entries in imports and exports (<xref linkend="explicit-namespaces"/>).
889 Implied by <option>-XTypeOperators</option> and <option>-XTypeFamilies</option>.</entry>
890 <entry>dynamic</entry>
891 <entry><option>-XNoExplicitNamespaces</option></entry>
892 </row>
893 <row>
894 <entry><option>-XExtendedDefaultRules</option></entry>
895 <entry>Use GHCi's <link linkend="extended-default-rules">extended default rules</link> in a normal module.</entry>
896 <entry>dynamic</entry>
897 <entry><option>-XNoExtendedDefaultRules</option></entry>
898 </row>
899 <row>
900 <entry><option>-XFlexibleContexts</option></entry>
901 <entry>Enable <link linkend="flexible-contexts">flexible contexts</link>.
902 Implied by <option>-XImplicitParams</option>.</entry>
903 <entry>dynamic</entry>
904 <entry><option>-XNoFlexibleContexts</option></entry>
905 </row>
906 <row>
907 <entry><option>-XFlexibleInstances</option></entry>
908 <entry>Enable <link linkend="instance-rules">flexible instances</link>.
909 Implies <option>-XTypeSynonymInstances</option>. Implied by <option>-XImplicitParams</option>.</entry>
910 <entry>dynamic</entry>
911 <entry><option>-XNoFlexibleInstances</option></entry>
912 </row>
913 <row>
914 <entry><option>-XForeignFunctionInterface</option></entry>
915 <entry>Enable <link linkend="ffi">foreign function interface</link>.</entry>
916 <entry>dynamic</entry>
917 <entry><option>-XNoForeignFunctionInterface</option></entry>
918 </row>
919 <row>
920 <entry><option>-XFunctionalDependencies</option></entry>
921 <entry>Enable <link linkend="functional-dependencies">functional dependencies</link>.
922 Implies <option>-XMultiParamTypeClasses</option>.</entry>
923 <entry>dynamic</entry>
924 <entry><option>-XNoFunctionalDependencies</option></entry>
925 </row>
926 <row>
927 <entry><option>-XGADTs</option></entry>
928 <entry>Enable <link linkend="gadt">generalised algebraic data types</link>.
929 Implies <option>-XGADTSyntax</option> and <option>-XMonoLocalBinds</option>.</entry>
930 <entry>dynamic</entry>
931 <entry><option>-XNoGADTs</option></entry>
932 </row>
933 <row>
934 <entry><option>-XGADTSyntax</option></entry>
935 <entry>Enable <link linkend="gadt-style">generalised algebraic data type syntax</link>.
936 </entry>
937 <entry>dynamic</entry>
938 <entry><option>-XNoGADTSyntax</option></entry>
939 </row>
940 <row>
941 <entry><option>-XGeneralizedNewtypeDeriving</option></entry>
942 <entry>Enable <link linkend="newtype-deriving">newtype deriving</link>.</entry>
943 <entry>dynamic</entry>
944 <entry><option>-XNoGeneralizedNewtypeDeriving</option></entry>
945 </row>
946 <row>
947 <entry><option>-XGenerics</option></entry>
948 <entry>Deprecated, does nothing. No longer enables <link linkend="generic-classes">generic classes</link>.
949 See also GHC's support for
950 <link linkend="generic-programming">generic programming</link>.</entry>
951 <entry>dynamic</entry>
952 <entry><option>-XNoGenerics</option></entry>
953 </row>
954 <row>
955 <entry><option>-XImplicitParams</option></entry>
956 <entry>Enable <link linkend="implicit-parameters">Implicit Parameters</link>.
957 Implies <option>-XFlexibleContexts</option> and <option>-XFlexibleInstances</option>.</entry>
958 <entry>dynamic</entry>
959 <entry><option>-XNoImplicitParams</option></entry>
960 </row>
961 <row>
962 <entry><option>-XNoImplicitPrelude</option></entry>
963 <entry>Don't implicitly <literal>import Prelude</literal>.
964 Implied by <option>-XRebindableSyntax</option>.</entry>
965 <entry>dynamic</entry>
966 <entry><option>-XImplicitPrelude</option></entry>
967 </row>
968 <row>
969 <entry><option>-XImpredicativeTypes</option></entry>
970 <entry>Enable <link linkend="impredicative-polymorphism">impredicative types</link>.
971 Implies <option>-XRankNTypes</option>.</entry>
972 <entry>dynamic</entry>
973 <entry><option>-XNoImpredicativeTypes</option></entry>
974 </row>
975 <row>
976 <entry><option>-XIncoherentInstances</option></entry>
977 <entry>Enable <link linkend="instance-overlap">incoherent instances</link>.
978 Implies <option>-XOverlappingInstances</option>.</entry>
979 <entry>dynamic</entry>
980 <entry><option>-XNoIncoherentInstances</option></entry>
981 </row>
982 <row>
983 <entry><option>-XInstanceSigs</option></entry>
984 <entry>Enable <link linkend="instance-sigs">instance signatures</link>.</entry>
985 <entry>dynamic</entry>
986 <entry><option>-XNoInstanceSigs</option></entry>
987 </row>
988 <row>
989 <entry><option>-XInterruptibleFFI</option></entry>
990 <entry>Enable interruptible FFI.</entry>
991 <entry>dynamic</entry>
992 <entry><option>-XNoInterruptibleFFI</option></entry>
993 </row>
994 <row>
995 <entry><option>-XKindSignatures</option></entry>
996 <entry>Enable <link linkend="kinding">kind signatures</link>.
997 Implied by <option>-XTypeFamilies</option> and <option>-XPolyKinds</option>.</entry>
998 <entry>dynamic</entry>
999 <entry><option>-XNoKindSignatures</option></entry>
1000 </row>
1001 <row>
1002 <entry><option>-XLambdaCase</option></entry>
1003 <entry>Enable <link linkend="lambda-case">lambda-case expressions</link>.</entry>
1004 <entry>dynamic</entry>
1005 <entry><option>-XNoLambdaCase</option></entry>
1006 </row>
1007 <row>
1008 <entry><option>-XLiberalTypeSynonyms</option></entry>
1009 <entry>Enable <link linkend="type-synonyms">liberalised type synonyms</link>.</entry>
1010 <entry>dynamic</entry>
1011 <entry><option>-XNoLiberalTypeSynonyms</option></entry>
1012 </row>
1013 <row>
1014 <entry><option>-XMagicHash</option></entry>
1015 <entry>Allow "#" as a <link linkend="magic-hash">postfix modifier on identifiers</link>.</entry>
1016 <entry>dynamic</entry>
1017 <entry><option>-XNoMagicHash</option></entry>
1018 </row>
1019 <row>
1020 <entry><option>-XMonadComprehensions</option></entry>
1021 <entry>Enable <link linkend="monad-comprehensions">monad comprehensions</link>.</entry>
1022 <entry>dynamic</entry>
1023 <entry><option>-XNoMonadComprehensions</option></entry>
1024 </row>
1025 <row>
1026 <entry><option>-XMonoLocalBinds</option></entry>
1027 <entry>Enable <link linkend="mono-local-binds">do not generalise local bindings</link>.
1028 Implied by <option>-XTypeFamilies</option> and <option>-XGADTs</option>.
1029 </entry>
1030 <entry>dynamic</entry>
1031 <entry><option>-XNoMonoLocalBinds</option></entry>
1032 </row>
1033 <row>
1034 <entry><option>-XNoMonomorphismRestriction</option></entry>
1035 <entry>Disable the <link linkend="monomorphism">monomorphism restriction</link>.</entry>
1036 <entry>dynamic</entry>
1037 <entry><option>-XMonomorphismRestriction</option></entry>
1038 </row>
1039 <row>
1040 <entry><option>-XMultiParamTypeClasses</option></entry>
1041 <entry>Enable <link linkend="multi-param-type-classes">multi parameter type classes</link>.
1042 Implied by <option>-XFunctionalDependencies</option>.</entry>
1043 <entry>dynamic</entry>
1044 <entry><option>-XNoMultiParamTypeClasses</option></entry>
1045 </row>
1046 <row>
1047 <entry><option>-XMultiWayIf</option></entry>
1048 <entry>Enable <link linkend="multi-way-if">multi-way if-expressions</link>.</entry>
1049 <entry>dynamic</entry>
1050 <entry><option>-XNoMultiWayIf</option></entry>
1051 </row>
1052 <row>
1053 <entry><option>-XNamedFieldPuns</option></entry>
1054 <entry>Enable <link linkend="record-puns">record puns</link>.</entry>
1055 <entry>dynamic</entry>
1056 <entry><option>-XNoNamedFieldPuns</option></entry>
1057 </row>
1058 <row>
1059 <entry><option>-XNamedWildcards</option></entry>
1060 <entry>Enable <link linkend="named-wildcards">named wildcards</link>.</entry>
1061 <entry>dynamic</entry>
1062 <entry><option>-XNoNamedWildcards</option></entry>
1063 </row>
1064 <row>
1065 <entry><option>-XNegativeLiterals</option></entry>
1066 <entry>Enable support for <link linkend="negative-literals">negative literals</link>.</entry>
1067 <entry>dynamic</entry>
1068 <entry><option>-XNoNegativeLiterals</option></entry>
1069 </row>
1070 <row>
1071 <entry><option>-XNoNPlusKPatterns</option></entry>
1072 <entry>Disable support for <literal>n+k</literal> patterns.</entry>
1073 <entry>dynamic</entry>
1074 <entry><option>-XNPlusKPatterns</option></entry>
1075 </row>
1076 <row>
1077 <entry><option>-XNullaryTypeClasses</option></entry>
1078 <entry>Deprecated, does nothing. <link linkend="nullary-type-classes">nullary (no parameter) type classes</link> are now enabled using <option>-XMultiParamTypeClasses</option>.</entry>
1079 <entry>dynamic</entry>
1080 <entry><option>-XNoNullaryTypeClasses</option></entry>
1081 </row>
1082 <row>
1083 <entry><option>-XNumDecimals</option></entry>
1084 <entry>Enable support for 'fractional' integer literals.</entry>
1085 <entry>dynamic</entry>
1086 <entry><option>-XNoNumDecimals</option></entry>
1087 </row>
1088 <row>
1089 <entry><option>-XOverlappingInstances</option></entry>
1090 <entry>Enable <link linkend="instance-overlap">overlapping instances</link>.</entry>
1091 <entry>dynamic</entry>
1092 <entry><option>-XNoOverlappingInstances</option></entry>
1093 </row>
1094 <row>
1095 <entry><option>-XOverloadedLists</option></entry>
1096 <entry>Enable <link linkend="overloaded-lists">overloaded lists</link>.
1097 </entry>
1098 <entry>dynamic</entry>
1099 <entry><option>-XNoOverloadedLists</option></entry>
1100 </row>
1101 <row>
1102 <entry><option>-XOverloadedStrings</option></entry>
1103 <entry>Enable <link linkend="overloaded-strings">overloaded string literals</link>.
1104 </entry>
1105 <entry>dynamic</entry>
1106 <entry><option>-XNoOverloadedStrings</option></entry>
1107 </row>
1108 <row>
1109 <entry><option>-XPackageImports</option></entry>
1110 <entry>Enable <link linkend="package-imports">package-qualified imports</link>.</entry>
1111 <entry>dynamic</entry>
1112 <entry><option>-XNoPackageImports</option></entry>
1113 </row>
1114 <row>
1115 <entry><option>-XParallelArrays</option></entry>
1116 <entry>Enable parallel arrays.
1117 Implies <option>-XParallelListComp</option>.</entry>
1118 <entry>dynamic</entry>
1119 <entry><option>-XNoParallelArrays</option></entry>
1120 </row>
1121 <row>
1122 <entry><option>-XParallelListComp</option></entry>
1123 <entry>Enable <link linkend="parallel-list-comprehensions">parallel list comprehensions</link>.
1124 Implied by <option>-XParallelArrays</option>.</entry>
1125 <entry>dynamic</entry>
1126 <entry><option>-XNoParallelListComp</option></entry>
1127 </row>
1128 <row>
1129 <entry><option>-XPartialTypeSignatures</option></entry>
1130 <entry>Enable <link linkend="partial-type-signatures">partial type signatures</link>.</entry>
1131 <entry>dynamic</entry>
1132 <entry><option>-XNoPartialTypeSignatures</option></entry>
1133 </row>
1134 <row>
1135 <entry><option>-XPatternGuards</option></entry>
1136 <entry>Enable <link linkend="pattern-guards">pattern guards</link>.</entry>
1137 <entry>dynamic</entry>
1138 <entry><option>-XNoPatternGuards</option></entry>
1139 </row>
1140 <row>
1141 <entry><option>-XPatternSynonyms</option></entry>
1142 <entry>Enable <link linkend="pattern-synonyms">pattern synonyms</link>.</entry>
1143 <entry>dynamic</entry>
1144 <entry><option>-XNoPatternSynonyms</option></entry>
1145 </row>
1146 <row>
1147 <entry><option>-XPolyKinds</option></entry>
1148 <entry>Enable <link linkend="kind-polymorphism">kind polymorphism</link>.
1149 Implies <option>-XKindSignatures</option>.</entry>
1150 <entry>dynamic</entry>
1151 <entry><option>-XNoPolyKinds</option></entry>
1152 </row>
1153 <row>
1154 <entry><option>-XPolymorphicComponents</option></entry>
1155 <entry>Enable <link linkend="universal-quantification">polymorphic components for data constructors</link>.</entry>
1156 <entry>dynamic, synonym for <option>-XRankNTypes</option></entry>
1157 <entry><option>-XNoPolymorphicComponents</option></entry>
1158 </row>
1159 <row>
1160 <entry><option>-XPostfixOperators</option></entry>
1161 <entry>Enable <link linkend="postfix-operators">postfix operators</link>.</entry>
1162 <entry>dynamic</entry>
1163 <entry><option>-XNoPostfixOperators</option></entry>
1164 </row>
1165 <row>
1166 <entry><option>-XQuasiQuotes</option></entry>
1167 <entry>Enable <link linkend="th-quasiquotation">quasiquotation</link>.</entry>
1168 <entry>dynamic</entry>
1169 <entry><option>-XNoQuasiQuotes</option></entry>
1170 </row>
1171 <row>
1172 <entry><option>-XRank2Types</option></entry>
1173 <entry>Enable <link linkend="universal-quantification">rank-2 types</link>.</entry>
1174 <entry>dynamic, synonym for <option>-XRankNTypes</option></entry>
1175 <entry><option>-XNoRank2Types</option></entry>
1176 </row>
1177 <row>
1178 <entry><option>-XRankNTypes</option></entry>
1179 <entry>Enable <link linkend="universal-quantification">rank-N types</link>.
1180 Implied by <option>-XImpredicativeTypes</option>.</entry>
1181 <entry>dynamic</entry>
1182 <entry><option>-XNoRankNTypes</option></entry>
1183 </row>
1184 <row>
1185 <entry><option>-XRebindableSyntax</option></entry>
1186 <entry>Employ <link linkend="rebindable-syntax">rebindable syntax</link>.
1187 Implies <option>-XNoImplicitPrelude</option>.</entry>
1188 <entry>dynamic</entry>
1189 <entry><option>-XNoRebindableSyntax</option></entry>
1190 </row>
1191 <row>
1192 <entry><option>-XRecordWildCards</option></entry>
1193 <entry>Enable <link linkend="record-wildcards">record wildcards</link>.
1194 Implies <option>-XDisambiguateRecordFields</option>.</entry>
1195 <entry>dynamic</entry>
1196 <entry><option>-XNoRecordWildCards</option></entry>
1197 </row>
1198 <row>
1199 <entry><option>-XRecursiveDo</option></entry>
1200 <entry>Enable <link linkend="recursive-do-notation">recursive do (mdo) notation</link>.</entry>
1201 <entry>dynamic</entry>
1202 <entry><option>-XNoRecursiveDo</option></entry>
1203 </row>
1204 <row>
1205 <entry><option>-XRelaxedPolyRec</option></entry>
1206 <entry><emphasis>(deprecated)</emphasis> Relaxed checking for
1207 <link linkend="typing-binds">mutually-recursive polymorphic functions</link>.</entry>
1208 <entry>dynamic</entry>
1209 <entry><option>-XNoRelaxedPolyRec</option></entry>
1210 </row>
1211 <row>
1212 <entry><option>-XRoleAnnotations</option></entry>
1213 <entry>Enable <link linkend="role-annotations">role annotations</link>.</entry>
1214 <entry>dynamic</entry>
1215 <entry><option>-XNoRoleAnnotations</option></entry>
1216 </row>
1217 <row>
1218 <entry><option>-XSafe</option></entry>
1219 <entry>Enable the <link linkend="safe-haskell">Safe Haskell</link> Safe mode.</entry>
1220 <entry>dynamic</entry>
1221 <entry><option>-</option></entry>
1222 </row>
1223 <row>
1224 <entry><option>-XScopedTypeVariables</option></entry>
1225 <entry>Enable <link linkend="scoped-type-variables">lexically-scoped type variables</link>.
1226 </entry>
1227 <entry>dynamic</entry>
1228 <entry><option>-XNoScopedTypeVariables</option></entry>
1229 </row>
1230 <row>
1231 <entry><option>-XStandaloneDeriving</option></entry>
1232 <entry>Enable <link linkend="stand-alone-deriving">standalone deriving</link>.</entry>
1233 <entry>dynamic</entry>
1234 <entry><option>-XNoStandaloneDeriving</option></entry>
1235 </row>
1236 <row>
1237 <entry><option>-XTemplateHaskell</option></entry>
1238 <entry>Enable <link linkend="template-haskell">Template Haskell</link>.</entry>
1239 <entry>dynamic</entry>
1240 <entry><option>-XNoTemplateHaskell</option></entry>
1241 </row>
1242 <row>
1243 <entry><option>-XNoTraditionalRecordSyntax</option></entry>
1244 <entry>Disable support for traditional record syntax (as supported by Haskell 98) <literal>C {f = x}</literal></entry>
1245 <entry>dynamic</entry>
1246 <entry><option>-XTraditionalRecordSyntax</option></entry>
1247 </row>
1248 <row>
1249 <entry><option>-XTransformListComp</option></entry>
1250 <entry>Enable <link linkend="generalised-list-comprehensions">generalised list comprehensions</link>.</entry>
1251 <entry>dynamic</entry>
1252 <entry><option>-XNoTransformListComp</option></entry>
1253 </row>
1254 <row>
1255 <entry><option>-XTrustworthy</option></entry>
1256 <entry>Enable the <link linkend="safe-haskell">Safe Haskell</link> Trustworthy mode.</entry>
1257 <entry>dynamic</entry>
1258 <entry><option>-</option></entry>
1259 </row>
1260 <row>
1261 <entry><option>-XTupleSections</option></entry>
1262 <entry>Enable <link linkend="tuple-sections">tuple sections</link>.</entry>
1263 <entry>dynamic</entry>
1264 <entry><option>-XNoTupleSections</option></entry>
1265 </row>
1266 <row>
1267 <entry><option>-XTypeFamilies</option></entry>
1268 <entry>Enable <link linkend="type-families">type families</link>.
1269 Implies <option>-XExplicitNamespaces</option>, <option>-XKindSignatures</option>
1270 and <option>-XMonoLocalBinds</option>.</entry>
1271 <entry>dynamic</entry>
1272 <entry><option>-XNoTypeFamilies</option></entry>
1273 </row>
1274 <row>
1275 <entry><option>-XTypeOperators</option></entry>
1276 <entry>Enable <link linkend="type-operators">type operators</link>.
1277 Implies <option>-XExplicitNamespaces</option>.</entry>
1278 <entry>dynamic</entry>
1279 <entry><option>-XNoTypeOperators</option></entry>
1280 </row>
1281 <row>
1282 <entry><option>-XTypeSynonymInstances</option></entry>
1283 <entry>Enable <link linkend="flexible-instance-head">type synonyms in instance heads</link>.
1284 Implied by <option>-XFlexibleInstances</option>.</entry>
1285 <entry>dynamic</entry>
1286 <entry><option>-XNoTypeSynonymInstances</option></entry>
1287 </row>
1288 <row>
1289 <entry><option>-XUnboxedTuples</option></entry>
1290 <entry>Enable <link linkend="unboxed-tuples">unboxed tuples</link>.</entry>
1291 <entry>dynamic</entry>
1292 <entry><option>-XNoUnboxedTuples</option></entry>
1293 </row>
1294 <row>
1295 <entry><option>-XUndecidableInstances</option></entry>
1296 <entry>Enable <link linkend="undecidable-instances">undecidable instances</link>.</entry>
1297 <entry>dynamic</entry>
1298 <entry><option>-XNoUndecidableInstances</option></entry>
1299 </row>
1300 <row>
1301 <entry><option>-XUnicodeSyntax</option></entry>
1302 <entry>Enable <link linkend="unicode-syntax">unicode syntax</link>.</entry>
1303 <entry>dynamic</entry>
1304 <entry><option>-XNoUnicodeSyntax</option></entry>
1305 </row>
1306 <row>
1307 <entry><option>-XUnliftedFFITypes</option></entry>
1308 <entry>Enable unlifted FFI types.</entry>
1309 <entry>dynamic</entry>
1310 <entry><option>-XNoUnliftedFFITypes</option></entry>
1311 </row>
1312 <row>
1313 <entry><option>-XUnsafe</option></entry>
1314 <entry>Enable <link linkend="safe-haskell">Safe Haskell</link> Unsafe mode.</entry>
1315 <entry>dynamic</entry>
1316 <entry><option>-</option></entry>
1317 </row>
1318 <row>
1319 <entry><option>-XViewPatterns</option></entry>
1320 <entry>Enable <link linkend="view-patterns">view patterns</link>.</entry>
1321 <entry>dynamic</entry>
1322 <entry><option>-XNoViewPatterns</option></entry>
1323 </row>
1324 </tbody>
1325 </tgroup>
1326 </informaltable>
1327 </sect2>
1328
1329 <sect2>
1330 <title>Warnings</title>
1331
1332 <para><xref linkend="options-sanity"/></para>
1333
1334 <informaltable>
1335 <tgroup cols="4" align="left" colsep="1" rowsep="1">
1336 <thead>
1337 <row>
1338 <entry>Flag</entry>
1339 <entry>Description</entry>
1340 <entry>Static/Dynamic</entry>
1341 <entry>Reverse</entry>
1342 </row>
1343 </thead>
1344 <tbody>
1345 <row>
1346 <entry><option>-W</option></entry>
1347 <entry>enable normal warnings</entry>
1348 <entry>dynamic</entry>
1349 <entry><option>-w</option></entry>
1350 </row>
1351 <row>
1352 <entry><option>-w</option></entry>
1353 <entry>disable all warnings</entry>
1354 <entry>dynamic</entry>
1355 <entry>-</entry>
1356 </row>
1357 <row>
1358 <entry><option>-Wall</option></entry>
1359 <entry>enable almost all warnings (details in <xref linkend="options-sanity"/>)</entry>
1360 <entry>dynamic</entry>
1361 <entry><option>-w</option></entry>
1362 </row>
1363 <row>
1364 <entry><option>-Werror</option></entry>
1365 <entry>make warnings fatal</entry>
1366 <entry>dynamic</entry>
1367 <entry>-Wwarn</entry>
1368 </row>
1369 <row>
1370 <entry><option>-Wwarn</option></entry>
1371 <entry>make warnings non-fatal</entry>
1372 <entry>dynamic</entry>
1373 <entry>-Werror</entry>
1374 </row>
1375
1376 <row>
1377 <entry><option>-fdefer-type-errors</option></entry>
1378 <entry>
1379 Turn type errors into warnings, <link linkend="defer-type-errors">
1380 deferring the error until runtime</link>. Implies
1381 <option>-fdefer-typed-holes</option>.
1382 </entry>
1383 <entry>dynamic</entry>
1384 <entry><option>-fno-defer-type-errors</option></entry>
1385 </row>
1386
1387 <row>
1388 <entry><option>-fdefer-typed-holes</option></entry>
1389 <entry>
1390 Convert <link linkend="typed-holes">typed hole</link> errors
1391 into warnings, <link linkend="defer-type-errors">deferring the
1392 error until runtime</link>. Implied by
1393 <option>-fdefer-type-errors</option>. See also
1394 <option>-fwarn-typed-holes</option>.
1395 </entry>
1396 <entry>dynamic</entry>
1397 <entry><option>-fno-defer-typed-holes</option></entry>
1398 </row>
1399
1400 <row>
1401 <entry><option>-fhelpful-errors</option></entry>
1402 <entry>Make suggestions for mis-spelled names.</entry>
1403 <entry>dynamic</entry>
1404 <entry><option>-fno-helpful-errors</option></entry>
1405 </row>
1406
1407 <row>
1408 <entry><option>-fwarn-deprecated-flags</option></entry>
1409 <entry>warn about uses of commandline flags that are deprecated</entry>
1410 <entry>dynamic</entry>
1411 <entry><option>-fno-warn-deprecated-flags</option></entry>
1412 </row>
1413
1414 <row>
1415 <entry><option>-fwarn-duplicate-constraints</option></entry>
1416 <entry>warn when a constraint appears duplicated in a type signature</entry>
1417 <entry>dynamic</entry>
1418 <entry><option>-fno-warn-duplicate-constraints</option></entry>
1419 </row>
1420
1421 <row>
1422 <entry><option>-fwarn-duplicate-exports</option></entry>
1423 <entry>warn when an entity is exported multiple times</entry>
1424 <entry>dynamic</entry>
1425 <entry><option>-fno-warn-duplicate-exports</option></entry>
1426 </row>
1427
1428 <row>
1429 <entry><option>-fwarn-hi-shadowing</option></entry>
1430 <entry>warn when a <literal>.hi</literal> file in the
1431 current directory shadows a library</entry>
1432 <entry>dynamic</entry>
1433 <entry><option>-fno-warn-hi-shadowing</option></entry>
1434 </row>
1435
1436 <row>
1437 <entry><option>-fwarn-identities</option></entry>
1438 <entry>warn about uses of Prelude numeric conversions that are probably
1439 the identity (and hence could be omitted)</entry>
1440 <entry>dynamic</entry>
1441 <entry><option>-fno-warn-identities</option></entry>
1442 </row>
1443
1444 <row>
1445 <entry><option>-fwarn-implicit-prelude</option></entry>
1446 <entry>warn when the Prelude is implicitly imported</entry>
1447 <entry>dynamic</entry>
1448 <entry><option>-fno-warn-implicit-prelude</option></entry>
1449 </row>
1450
1451 <row>
1452 <entry><option>-fwarn-incomplete-patterns</option></entry>
1453 <entry>warn when a pattern match could fail</entry>
1454 <entry>dynamic</entry>
1455 <entry><option>-fno-warn-incomplete-patterns</option></entry>
1456 </row>
1457
1458 <row>
1459 <entry><option>-fwarn-incomplete-uni-patterns</option></entry>
1460 <entry>warn when a pattern match in a lambda expression or pattern binding could fail</entry>
1461 <entry>dynamic</entry>
1462 <entry><option>-fno-warn-incomplete-uni-patterns</option></entry>
1463 </row>
1464
1465 <row>
1466 <entry><option>-fwarn-incomplete-record-updates</option></entry>
1467 <entry>warn when a record update could fail</entry>
1468 <entry>dynamic</entry>
1469 <entry><option>-fno-warn-incomplete-record-updates</option></entry>
1470 </row>
1471
1472 <row>
1473 <entry><option>-fwarn-lazy-unlifted-bindings</option></entry>
1474 <entry><emphasis>(deprecated)</emphasis> warn when a pattern binding looks lazy but must be strict</entry>
1475 <entry>dynamic</entry>
1476 <entry><option>-fno-warn-lazy-unlifted-bindings</option></entry>
1477 </row>
1478
1479 <row>
1480 <entry><option>-fwarn-missing-fields</option></entry>
1481 <entry>warn when fields of a record are uninitialised</entry>
1482 <entry>dynamic</entry>
1483 <entry><option>-fno-warn-missing-fields</option></entry>
1484 </row>
1485
1486 <row>
1487 <entry><option>-fwarn-missing-import-lists</option></entry>
1488 <entry>warn when an import declaration does not explicitly
1489 list all the names brought into scope</entry>
1490 <entry>dynamic</entry>
1491 <entry><option>-fnowarn-missing-import-lists</option></entry>
1492 </row>
1493
1494 <row>
1495 <entry><option>-fwarn-missing-methods</option></entry>
1496 <entry>warn when class methods are undefined</entry>
1497 <entry>dynamic</entry>
1498 <entry><option>-fno-warn-missing-methods</option></entry>
1499 </row>
1500
1501 <row>
1502 <entry><option>-fwarn-missing-signatures</option></entry>
1503 <entry>warn about top-level functions without signatures</entry>
1504 <entry>dynamic</entry>
1505 <entry><option>-fno-warn-missing-signatures</option></entry>
1506 </row>
1507
1508 <row>
1509 <entry><option>-fwarn-missing-exported-sigs</option></entry>
1510 <entry>warn about top-level functions without signatures, only if they are exported. takes precedence over -fwarn-missing-signatures</entry>
1511 <entry>dynamic</entry>
1512 <entry><option>-fno-warn-missing-exported-sigs</option></entry>
1513 </row>
1514
1515 <row>
1516 <entry><option>-fwarn-missing-local-sigs</option></entry>
1517 <entry>warn about polymorphic local bindings without signatures</entry>
1518 <entry>dynamic</entry>
1519 <entry><option>-fno-warn-missing-local-sigs</option></entry>
1520 </row>
1521
1522 <row>
1523 <entry><option>-fwarn-monomorphism-restriction</option></entry>
1524 <entry>warn when the Monomorphism Restriction is applied</entry>
1525 <entry>dynamic</entry>
1526 <entry><option>-fno-warn-monomorphism-restriction</option></entry>
1527 </row>
1528
1529 <row>
1530 <entry><option>-fwarn-name-shadowing</option></entry>
1531 <entry>warn when names are shadowed</entry>
1532 <entry>dynamic</entry>
1533 <entry><option>-fno-warn-name-shadowing</option></entry>
1534 </row>
1535
1536 <row>
1537 <entry><option>-fwarn-orphans, -fwarn-auto-orphans</option></entry>
1538 <entry>warn when the module contains <link linkend="orphan-modules">orphan instance declarations
1539 or rewrite rules</link></entry>
1540 <entry>dynamic</entry>
1541 <entry><option>-fno-warn-orphans, -fno-warn-auto-orphans</option></entry>
1542 </row>
1543
1544 <row>
1545 <entry><option>-fwarn-overlapping-patterns</option></entry>
1546 <entry>warn about overlapping patterns</entry>
1547 <entry>dynamic</entry>
1548 <entry><option>-fno-warn-overlapping-patterns</option></entry>
1549 </row>
1550
1551 <row>
1552 <entry><option>-fwarn-tabs</option></entry>
1553 <entry>warn if there are tabs in the source file</entry>
1554 <entry>dynamic</entry>
1555 <entry><option>-fno-warn-tabs</option></entry>
1556 </row>
1557
1558 <row>
1559 <entry><option>-fwarn-type-defaults</option></entry>
1560 <entry>warn when defaulting happens</entry>
1561 <entry>dynamic</entry>
1562 <entry><option>-fno-warn-type-defaults</option></entry>
1563 </row>
1564
1565 <row>
1566 <entry><option>-fwarn-unrecognised-pragmas</option></entry>
1567 <entry>warn about uses of pragmas that GHC doesn't recognise</entry>
1568 <entry>dynamic</entry>
1569 <entry><option>-fno-warn-unrecognised-pragmas</option></entry>
1570 </row>
1571
1572 <row>
1573 <entry><option>-fwarn-unused-binds</option></entry>
1574 <entry>warn about bindings that are unused</entry>
1575 <entry>dynamic</entry>
1576 <entry><option>-fno-warn-unused-binds</option></entry>
1577 </row>
1578
1579 <row>
1580 <entry><option>-fwarn-unused-imports</option></entry>
1581 <entry>warn about unnecessary imports</entry>
1582 <entry>dynamic</entry>
1583 <entry><option>-fno-warn-unused-imports</option></entry>
1584 </row>
1585
1586 <row>
1587 <entry><option>-fwarn-unused-matches</option></entry>
1588 <entry>warn about variables in patterns that aren't used</entry>
1589 <entry>dynamic</entry>
1590 <entry><option>-fno-warn-unused-matches</option></entry>
1591 </row>
1592
1593 <row>
1594 <entry><option>-fwarn-unused-do-bind</option></entry>
1595 <entry>warn about do bindings that appear to throw away values of types other than <literal>()</literal></entry>
1596 <entry>dynamic</entry>
1597 <entry><option>-fno-warn-unused-do-bind</option></entry>
1598 </row>
1599
1600 <row>
1601 <entry><option>-fwarn-wrong-do-bind</option></entry>
1602 <entry>warn about do bindings that appear to throw away monadic values that you should have bound instead</entry>
1603 <entry>dynamic</entry>
1604 <entry><option>-fno-warn-wrong-do-bind</option></entry>
1605 </row>
1606
1607 <row>
1608 <entry><option>-fwarn-unsafe</option></entry>
1609 <entry>warn if the module being compiled is regarded to be unsafe.
1610 Should be used to check the safety status of modules when using safe
1611 inference. Works on all module types, even those using explicit
1612 <link linkend="safe-haskell">Safe Haskell</link> modes (such as
1613 <option>-XTrustworthy</option>) and so can be used to have the
1614 compiler check any assumptions made.</entry>
1615 <entry>dynamic</entry>
1616 <entry><option>-fno-warn-unsafe</option></entry>
1617 </row>
1618
1619 <row>
1620 <entry><option>-fwarn-safe</option></entry>
1621 <entry>warn if the module being compiled is regarded to be safe.
1622 Should be used to check the safety status of modules when using safe
1623 inference. Works on all module types, even those using explicit
1624 <link linkend="safe-haskell">Safe Haskell</link> modes (such as
1625 <option>-XTrustworthy</option>) and so can be used to have the
1626 compiler check any assumptions made.</entry>
1627 <entry>dynamic</entry>
1628 <entry><option>-fno-warn-safe</option></entry>
1629 </row>
1630
1631 <row>
1632 <entry><option>-fwarn-trustworthy-safe</option></entry>
1633 <entry>warn if the module being compiled is marked as
1634 <option>-XTrustworthy</option> but it could instead be marked as
1635 <option>-XSafe</option>, a more informative bound. Can be used to
1636 detect once a Safe Haskell bound can be improved as dependencies
1637 are updated.</entry>
1638 <entry>dynamic</entry>
1639 <entry><option>-fno-warn-safe</option></entry>
1640 </row>
1641
1642 <row>
1643 <entry><option>-fwarn-warnings-deprecations</option></entry>
1644 <entry>warn about uses of functions &amp; types that have warnings or deprecated pragmas</entry>
1645 <entry>dynamic</entry>
1646 <entry><option>-fno-warn-warnings-deprecations</option></entry>
1647 </row>
1648
1649 <row>
1650 <entry><option>-fwarn-amp</option></entry>
1651 <entry><emphasis>(deprecated)</emphasis> warn on definitions conflicting with the Applicative-Monad Proposal (AMP)</entry>
1652 <entry>dynamic</entry>
1653 <entry><option>-fno-warn-amp</option></entry>
1654 </row>
1655
1656 <row>
1657 <entry><option>-fwarn-typed-holes</option></entry>
1658 <entry>
1659 Report warnings when <link linkend="typed-holes">typed hole</link>
1660 errors are <link linkend="defer-type-errors">deferred until
1661 runtime</link>. See <option>-fdefer-typed-holes</option>.
1662 </entry>
1663 <entry>dynamic</entry>
1664 <entry><option>-fno-warn-typed-holes</option></entry>
1665 </row>
1666
1667 <row>
1668 <entry><option>-fwarn-partial-type-signatures</option></entry>
1669 <entry>
1670 warn about holes in partial type signatures when
1671 <option>-XPartialTypesignatures</option> is enabled. Not
1672 applicable when <option>-XPartialTypesignatures</option> is not
1673 enabled, in which case errors are generated for such holes.
1674 See <xref linkend="partial-type-signatures"/>.
1675 </entry>
1676 <entry>dynamic</entry>
1677 <entry><option>-fno-warn-partial-type-signatures</option></entry>
1678 </row>
1679
1680 </tbody>
1681 </tgroup>
1682 </informaltable>
1683
1684 </sect2>
1685 <sect2>
1686 <title>Optimisation levels</title>
1687
1688 <para>These options are described in more detail in <xref linkend="options-optimise"/></para>
1689
1690 <informaltable>
1691 <tgroup cols="4" align="left" colsep="1" rowsep="1">
1692 <thead>
1693 <row>
1694 <entry>Flag</entry>
1695 <entry>Description</entry>
1696 <entry>Static/Dynamic</entry>
1697 <entry>Reverse</entry>
1698 </row>
1699 </thead>
1700 <tbody>
1701 <row>
1702 <entry><option>-O0</option></entry>
1703 <entry>Disable optimisations (default)</entry>
1704 <entry>dynamic</entry>
1705 <entry><option>-O</option></entry>
1706 </row>
1707 <row>
1708 <entry><option>-O</option> or <option>-O1</option></entry>
1709 <entry>Enable level 1 optimisations</entry>
1710 <entry>dynamic</entry>
1711 <entry><option>-O0</option></entry>
1712 </row>
1713 <row>
1714 <entry><option>-O2</option></entry>
1715 <entry>Enable level 2 optimisations</entry>
1716 <entry>dynamic</entry>
1717 <entry><option>-O0</option></entry>
1718 </row>
1719 <row>
1720 <entry><option>-Odph</option></entry>
1721 <entry>Enable level 2 optimisations, set <option>-fmax-simplifier-iterations=20</option>
1722 and <option>-fsimplifier-phases=3</option>.</entry>
1723 <entry>dynamic</entry>
1724 <entry>-</entry>
1725 </row>
1726 </tbody>
1727 </tgroup>
1728 </informaltable>
1729
1730 <para>See <xref linkend="options-f-compact"/> for a list of optimisations enabled on level 1 and level 2.</para>
1731
1732 </sect2>
1733 <sect2 id="options-f-compact">
1734 <title>Individual optimisations</title>
1735
1736 <para>These options are described in more detail in <xref linkend="options-f"/>.
1737 If a flag is implied by <option>-O</option> then it is also implied by
1738 <option>-O2</option> (unless flag description explicitly says otherwise).
1739 If a flag is implied by <option>-O0</option> only then the flag is not
1740 implied by <option>-O</option> and <option>-O2</option>.
1741 </para>
1742
1743 <informaltable>
1744 <tgroup cols="4" align="left" colsep="1" rowsep="1">
1745 <thead>
1746 <row>
1747 <entry>Flag</entry>
1748 <entry>Description</entry>
1749 <entry>Static/Dynamic</entry>
1750 <entry>Reverse</entry>
1751 </row>
1752 </thead>
1753 <tbody>
1754 <row>
1755 <entry><option>-fcall-arity</option></entry>
1756 <entry>Enable call-arity optimisation. Implied by <option>-O</option>.</entry>
1757 <entry>dynamic</entry>
1758 <entry><option>-fno-call-arity</option></entry>
1759 </row>
1760
1761 <row>
1762 <entry><option>-fcase-merge</option></entry>
1763 <entry>Enable case-merging. Implied by <option>-O</option>.</entry>
1764 <entry>dynamic</entry>
1765 <entry><option>-fno-case-merge</option></entry>
1766 </row>
1767
1768 <row>
1769 <entry><option>-fcmm-elim-common-blocks</option></entry>
1770 <entry>Enable Cmm common block elimination. Implied by <option>-O</option>.</entry>
1771 <entry>dynamic</entry>
1772 <entry><option>-fno-cmm-elim-common-blocks</option></entry>
1773 </row>
1774
1775 <row>
1776 <entry><option>-fcmm-sink</option></entry>
1777 <entry>Enable Cmm sinking. Implied by <option>-O</option>.</entry>
1778 <entry>dynamic</entry>
1779 <entry><option>-fno-cmm-sink</option></entry>
1780 </row>
1781
1782 <row>
1783 <entry><option>-fcpr-off</option></entry>
1784 <entry>Switch off CPR analysis in the demand analyser.</entry>
1785 <entry>static</entry>
1786 <entry>-</entry>
1787 </row>
1788
1789 <row>
1790 <entry><option>-fcse</option></entry>
1791 <entry>Enable common sub-expression elimination. Implied by <option>-O</option>.</entry>
1792 <entry>dynamic</entry>
1793 <entry><option>-fno-cse</option></entry>
1794 </row>
1795
1796 <row>
1797 <entry><option>-fdicts-cheap</option></entry>
1798 <entry>Make dictionary-valued expressions seem cheap to the optimiser.</entry>
1799 <entry>dynamic</entry>
1800 <entry><option>-fno-dicts-cheap</option></entry>
1801 </row>
1802
1803 <row>
1804 <entry><option>-fdicts-strict</option></entry>
1805 <entry>Make dictionaries strict</entry>
1806 <entry>dynamic</entry>
1807 <entry><option>-fno-dicts-strict</option></entry>
1808 </row>
1809
1810 <row>
1811 <entry><option>-fdmd-tx-dict-sel</option>
1812 </entry>
1813 <entry>Use a special demand transformer for dictionary selectors.
1814 Always enabled by default.
1815 </entry>
1816 <entry>dynamic</entry>
1817 <entry><option>-fno-dmd-tx-dict-sel</option></entry>
1818 </row>
1819
1820 <row>
1821 <entry><option>-fdo-eta-reduction</option></entry>
1822 <entry>Enable eta-reduction. Implied by <option>-O</option>.</entry>
1823 <entry>dynamic</entry>
1824 <entry><option>-fno-do-eta-reduction</option></entry>
1825 </row>
1826
1827 <row>
1828 <entry><option>-fdo-lambda-eta-expansion</option></entry>
1829 <entry>Enable lambda eta-expansion. Always enabled by default.</entry>
1830 <entry>dynamic</entry>
1831 <entry><option>-fno-do-lambda-eta-expansion</option></entry>
1832 </row>
1833
1834 <row>
1835 <entry><option>-feager-blackholing</option></entry>
1836 <entry>Turn on <link linkend="parallel-compile-options">eager blackholing</link></entry>
1837 <entry>dynamic</entry>
1838 <entry>-</entry>
1839 </row>
1840
1841 <row>
1842 <entry><option>-fenable-rewrite-rules</option></entry>
1843 <entry>Switch on all rewrite rules (including rules
1844 generated by automatic specialisation of overloaded functions).
1845 Implied by <option>-O</option>. </entry>
1846 <entry>dynamic</entry>
1847 <entry><option>-fno-enable-rewrite-rules</option></entry>
1848 </row>
1849
1850 <row>
1851 <entry><option>-fexcess-precision</option></entry>
1852 <entry>Enable excess intermediate precision</entry>
1853 <entry>dynamic</entry>
1854 <entry><option>-fno-excess-precision</option></entry>
1855 </row>
1856
1857 <row>
1858 <entry><option>-fexpose-all-unfoldings</option></entry>
1859 <entry>Expose all unfoldings, even for very large or recursive functions.</entry>
1860 <entry>dynamic</entry>
1861 <entry><option>-fno-expose-all-unfoldings</option></entry>
1862 </row>
1863
1864 <row>
1865 <entry><option>-ffloat-in</option></entry>
1866 <entry>Turn on the float-in transformation. Implied by <option>-O</option>.</entry>
1867 <entry>dynamic</entry>
1868 <entry><option>-fno-float-in</option></entry>
1869 </row>
1870
1871 <row>
1872 <entry><option>-ffull-laziness</option></entry>
1873 <entry>Turn on full laziness (floating bindings outwards). Implied by <option>-O</option>.</entry>
1874 <entry>dynamic</entry>
1875 <entry><option>-fno-full-laziness</option></entry>
1876 </row>
1877
1878 <row>
1879 <entry><option>-ffun-to-thunk</option></entry>
1880 <entry>Allow worker-wrapper to convert a function closure into a
1881 thunk if the function does not use any of its arguments. Off by
1882 default.</entry>
1883 <entry>dynamic</entry>
1884 <entry><option>-fno-fun-to-thunk</option></entry>
1885 </row>
1886
1887 <row>
1888 <entry><option>-fignore-asserts</option></entry>
1889 <entry>Ignore assertions in the source. Implied by <option>-O</option>.</entry>
1890 <entry>dynamic</entry>
1891 <entry><option>-fno-ignore-asserts</option></entry>
1892 </row>
1893
1894 <row>
1895 <entry><option>-fignore-interface-pragmas</option></entry>
1896 <entry>Ignore pragmas in interface files. Implied by <option>-O0</option> only.</entry>
1897 <entry>dynamic</entry>
1898 <entry><option>-fno-ignore-interface-pragmas</option></entry>
1899 </row>
1900
1901 <row>
1902 <entry><option>-flate-dmd-anal</option></entry>
1903 <entry>Run demand analysis again, at the end of the simplification
1904 pipeline</entry>
1905 <entry>dynamic</entry>
1906 <entry><option>-fno-late-dmd-anal</option></entry>
1907 </row>
1908
1909 <row>
1910 <entry><option>-fliberate-case</option></entry>
1911 <entry>Turn on the liberate-case transformation. Implied by <option>-O2</option>.</entry>
1912 <entry>dynamic</entry>
1913 <entry>-fno-liberate-case</entry>
1914 </row>
1915
1916 <row>
1917 <entry><option>-fliberate-case-threshold</option>=<replaceable>n</replaceable></entry>
1918 <entry>Set the size threshold for the liberate-case transformation to <replaceable>n</replaceable> (default: 2000)</entry>
1919 <entry>dynamis</entry>
1920 <entry><option>-fno-liberate-case-threshold</option></entry>
1921 </row>
1922
1923 <row>
1924 <entry><option>-floopification</option></entry>
1925 <entry>Turn saturated self-recursive tail-calls into local jumps in the generated assembly.
1926 Implied by <option>-O</option>.</entry>
1927 <entry>dynamic</entry>
1928 <entry><option>-fno-loopification</option></entry>
1929 </row>
1930
1931 <row>
1932 <entry><option>-fmax-inline-alloc-size</option>=<replaceable>n</replaceable></entry>
1933 <entry>Set the maximum size of inline array allocations to
1934 <replaceable>n</replaceable> bytes (default: 128). GHC
1935 will allocate non-pinned arrays of statically known size
1936 in the current nursery block if they're no bigger than
1937 <replaceable>n</replaceable> bytes, ignoring GC overheap.
1938 This value should be quite a bit smaller than the block
1939 size (typically: 4096).</entry>
1940 <entry>dynamic</entry>
1941 <entry>-</entry>
1942 </row>
1943
1944 <row>
1945 <entry>
1946 <option>-fmax-inline-memcpy-insns</option>=<replaceable>n</replaceable>
1947 </entry>
1948 <entry>Inline memcpy calls if they would generate no more
1949 than <replaceable>n</replaceable> pseudo instructions
1950 (default: 32).
1951 </entry>
1952 <entry>dynamic</entry>
1953 <entry>-</entry>
1954 </row>
1955
1956 <row>
1957 <entry>
1958 <option>-fmax-inline-memset-insns</option>=<replaceable>n</replaceable>
1959 </entry>
1960 <entry>Inline memset calls if they would generate no more
1961 than <replaceable>n</replaceable> pseudo instructions
1962 (default: 32).
1963 </entry>
1964 <entry>dynamic</entry>
1965 <entry>-</entry>
1966 </row>
1967
1968 <row>
1969 <entry><option>-fmax-relevant-binds=<replaceable>n</replaceable></option></entry>
1970 <entry>Set the maximum number of bindings to display in type error messages (default 6).</entry>
1971 <entry>dynamic</entry>
1972 <entry><option>-fno-max-relevant-bindings</option></entry>
1973 </row>
1974
1975 <row>
1976 <entry><option>-fmax-simplifier-iterations=<replaceable>n</replaceable></option></entry>
1977 <entry>Set the max iterations for the simplifier (default 4).</entry>
1978 <entry>dynamic</entry>
1979 <entry>-</entry>
1980 </row>
1981
1982 <row>
1983 <entry><option>-fmax-worker-args=<replaceable>n</replaceable></option></entry>
1984 <entry>If a worker has that many arguments, none will be
1985 unpacked anymore (default: 10)</entry>
1986 <entry>dynamic</entry>
1987 <entry>-</entry>
1988 </row>
1989
1990 <row>
1991 <entry><option>-fno-opt-coercion</option></entry>
1992 <entry>Turn off the coercion optimiser</entry>
1993 <entry>static</entry>
1994 <entry>-</entry>
1995 </row>
1996
1997 <row>
1998 <entry><option>-fno-pre-inlining</option></entry>
1999 <entry>Turn off pre-inlining</entry>
2000 <entry>dynamic</entry>
2001 <entry>-</entry>
2002 </row>
2003
2004 <row>
2005 <entry><option>-fno-state-hack</option></entry>
2006 <entry>Turn off the "state hack" whereby any lambda with a real-world state token
2007 as argument is considered to be single-entry. Hence OK to inline things inside it.</entry>
2008 <entry>static</entry>
2009 <entry>-</entry>
2010 </row>
2011
2012 <row>
2013 <entry><option>-fomit-interface-pragmas</option></entry>
2014 <entry>Don't generate interface pragmas. Implied by <option>-O0</option> only.</entry>
2015 <entry>dynamic</entry>
2016 <entry><option>-fno-omit-interface-pragmas</option></entry>
2017 </row>
2018
2019 <row>
2020 <entry><option>-fomit-yields</option></entry>
2021 <entry>Omit heap checks when no allocation is being performed.</entry>
2022 <entry>dynamic</entry>
2023 <entry><option>-fno-omit-yields</option></entry>
2024 </row>
2025
2026 <row>
2027 <entry><option>-fpedantic-bottoms</option></entry>
2028 <entry>Make GHC be more precise about its treatment of bottom (but see also
2029 <option>-fno-state-hack</option>). In particular, GHC will not
2030 eta-expand through a case expression.</entry>
2031 <entry>dynamic</entry>
2032 <entry><option>-fno-pedantic-bottoms</option></entry>
2033 </row>
2034
2035 <row>
2036 <entry><option>-fregs-graph</option></entry>
2037 <entry>Use the graph colouring register allocator for register allocation
2038 in the native code generator. Implied by <option>-O2</option>.</entry>
2039 <entry>dynamic</entry>
2040 <entry><option>-fno-regs-graph</option></entry>
2041 </row>
2042
2043 <row>
2044 <entry><option>-fregs-iterative</option></entry>
2045 <entry>Use the iterative coalescing graph colouring register allocator
2046 in the native code generator.</entry>
2047 <entry>dynamic</entry>
2048 <entry><option>-fno-regs-iterative</option></entry>
2049 </row>
2050
2051 <row>
2052 <entry><option>-fsimplifier-phases=<replaceable>n</replaceable></option></entry>
2053 <entry>Set the number of phases for the simplifier (default 2).
2054 Ignored with <option>-O0</option>.</entry>
2055 <entry>dynamic</entry>
2056 <entry>-</entry>
2057 </row>
2058
2059 <row>
2060 <entry><option>-fsimpl-tick-factor=<replaceable>n</replaceable></option></entry>
2061 <entry>Set the percentage factor for simplifier ticks (default 100)</entry>
2062 <entry>dynamic</entry>
2063 <entry>-</entry>
2064 </row>
2065
2066 <row>
2067 <entry><option>-fspec-constr</option></entry>
2068 <entry>Turn on the SpecConstr transformation. Implied by <option>-O2</option>.</entry>
2069 <entry>dynamic</entry>
2070 <entry><option>-fno-spec-constr</option></entry>
2071 </row>
2072
2073 <row>
2074 <entry><option>-fspec-constr-count</option>=<replaceable>n</replaceable></entry>
2075 <entry>Set to <replaceable>n</replaceable> (default: 3) the maximum number of
2076 specialisations that will be created for any one function
2077 by the SpecConstr transformation</entry>
2078 <entry>dynamic</entry>
2079 <entry><option>-fno-spec-constr-count</option></entry>
2080 </row>
2081
2082 <row>
2083 <entry><option>-fspec-constr-threshold</option>=<replaceable>n</replaceable></entry>
2084 <entry>Set the size threshold for the SpecConstr transformation
2085 to <replaceable>n</replaceable> (default: 2000)</entry>
2086 <entry>dynamic</entry>
2087 <entry><option>-fno-spec-constr-threshold</option></entry>
2088 </row>
2089
2090 <row>
2091 <entry><option>-fspecialise</option></entry>
2092 <entry>Turn on specialisation of overloaded functions. Implied by <option>-O</option>.</entry>
2093 <entry>dynamic</entry>
2094 <entry><option>-fno-specialise</option></entry>
2095 </row>
2096
2097 <row>
2098 <entry><option>-fstatic-argument-transformation</option></entry>
2099 <entry>Turn on the static argument transformation.</entry>
2100 <entry>dynamic</entry>
2101 <entry><option>-fno-static-argument-transformation</option></entry>
2102 </row>
2103
2104 <row>
2105 <entry><option>-fstrictness</option></entry>
2106 <entry>Turn on strictness analysis. Implied by <option>-O</option>.</entry>
2107 <entry>dynamic</entry>
2108 <entry><option>-fno-strictness</option></entry>
2109 </row>
2110
2111 <row>
2112 <entry><option>-fstrictness-before</option>=<replaceable>n</replaceable></entry>
2113 <entry>Run an additional strictness analysis before simplifier
2114 phase <replaceable>n</replaceable></entry>
2115 <entry>dynamic</entry>
2116 <entry>-</entry>
2117 </row>
2118
2119 <row>
2120 <entry><option>-funbox-small-strict-fields</option></entry>
2121 <entry>Flatten strict constructor fields with a
2122 pointer-sized representation. Implied by <option>-O</option>.</entry>
2123 <entry>dynamic</entry>
2124 <entry><option>-fno-unbox-small-strict-fields</option></entry>
2125 </row>
2126
2127 <row>
2128 <entry><option>-funbox-strict-fields</option></entry>
2129 <entry>Flatten strict constructor fields</entry>
2130 <entry>dynamic</entry>
2131 <entry><option>-fno-unbox-strict-fields</option></entry>
2132 </row>
2133
2134 <row>
2135 <entry><option>-funfolding-creation-threshold=<replaceable>n</replaceable></option></entry>
2136 <entry>Tweak unfolding settings. Default: 750</entry>
2137 <entry>dynamic</entry>
2138 <entry>-</entry>
2139 </row>
2140
2141 <row>
2142 <entry><option>-funfolding-dict-discount=<replaceable>n</replaceable></option></entry>
2143 <entry>Tweak unfolding settings. Default: 30</entry>
2144 <entry>dynamic</entry>
2145 <entry>-</entry>
2146 </row>
2147
2148 <row>
2149 <entry><option>-funfolding-fun-discount=<replaceable>n</replaceable></option></entry>
2150 <entry>Tweak unfolding settings. Default: 60</entry>
2151 <entry>dynamic</entry>
2152 <entry>-</entry>
2153 </row>
2154
2155 <row>
2156 <entry><option>-funfolding-keeness-factor=<replaceable>n</replaceable></option></entry>
2157 <entry>Tweak unfolding settings. Default: 1.5</entry>
2158 <entry>dynamic</entry>
2159 <entry>-</entry>
2160 </row>
2161
2162 <row>
2163 <entry><option>-funfolding-use-threshold=<replaceable>n</replaceable></option></entry>
2164 <entry>Tweak unfolding settings. Default: 60</entry>
2165 <entry>dynamic</entry>
2166 <entry>-</entry>
2167 </row>
2168
2169 <row>
2170 <entry><option>-fvectorisation-avoidance</option></entry>
2171 <entry>Enable vectorisation avoidance. Always enabled by default.</entry>
2172 <entry>dynamic</entry>
2173 <entry><option>-fno-vectorisation-avoidance</option></entry>
2174 </row>
2175
2176 <row>
2177 <entry><option>-fvectorise</option></entry>
2178 <entry>Enable vectorisation of nested data parallelism</entry>
2179 <entry>dynamic</entry>
2180 <entry><option>-fno-vectorise</option></entry>
2181 </row>
2182
2183 </tbody>
2184 </tgroup>
2185 </informaltable>
2186 </sect2>
2187
2188 <sect2>
2189 <title>Profiling options</title>
2190
2191 <para><xref linkend="profiling"/></para>
2192
2193 <informaltable>
2194 <tgroup cols="4" align="left" colsep="1" rowsep="1">
2195 <thead>
2196 <row>
2197 <entry>Flag</entry>
2198 <entry>Description</entry>
2199 <entry>Static/Dynamic</entry>
2200 <entry>Reverse</entry>
2201 </row>
2202 </thead>
2203 <tbody>
2204 <row>
2205 <entry><option>-prof</option></entry>
2206 <entry>Turn on profiling</entry>
2207 <entry>dynamic</entry>
2208 <entry>-</entry>
2209 </row>
2210 <row>
2211 <entry><option>-fprof-auto</option></entry>
2212 <entry>Auto-add <literal>SCC</literal>s to all bindings
2213 not marked INLINE</entry>
2214 <entry>dynamic</entry>
2215 <entry><option>-fno-prof-auto</option></entry>
2216 </row>
2217 <row>
2218 <entry><option>-fprof-auto-top</option></entry>
2219 <entry>Auto-add <literal>SCC</literal>s to all top-level
2220 bindings not marked INLINE</entry>
2221 <entry>dynamic</entry>
2222 <entry><option>-fno-prof-auto</option></entry>
2223 </row>
2224 <row>
2225 <entry><option>-fprof-auto-exported</option></entry>
2226 <entry>Auto-add <literal>SCC</literal>s to all exported
2227 bindings not marked INLINE</entry>
2228 <entry>dynamic</entry>
2229 <entry><option>-fno-prof-auto</option></entry>
2230 </row>
2231 <row>
2232 <entry><option>-fprof-cafs</option></entry>
2233 <entry>Auto-add <literal>SCC</literal>s to all CAFs</entry>
2234 <entry>dynamic</entry>
2235 <entry><option>-fno-prof-cafs</option></entry>
2236 </row>
2237 <row>
2238 <entry><option>-fno-prof-count-entries</option></entry>
2239 <entry>Do not collect entry counts</entry>
2240 <entry>dynamic</entry>
2241 <entry><option>-fprof-count-entries</option></entry>
2242 </row>
2243 <row>
2244 <entry><option>-ticky</option></entry>
2245 <entry><link linkend="ticky-ticky">Turn on ticky-ticky profiling</link></entry>
2246 <entry>dynamic</entry>
2247 <entry>-</entry>
2248 </row>
2249 </tbody>
2250 </tgroup>
2251 </informaltable>
2252 </sect2>
2253
2254 <sect2>
2255 <title>Program coverage options</title>
2256
2257 <para><xref linkend="hpc"/></para>
2258
2259 <informaltable>
2260 <tgroup cols="4" align="left" colsep="1" rowsep="1">
2261 <thead>
2262 <row>
2263 <entry>Flag</entry>
2264 <entry>Description</entry>
2265 <entry>Static/Dynamic</entry>
2266 <entry>Reverse</entry>
2267 </row>
2268 </thead>
2269 <tbody>
2270 <row>
2271 <entry><option>-fhpc</option></entry>
2272 <entry>Turn on Haskell program coverage instrumentation</entry>
2273 <entry>dynamic</entry>
2274 <entry><option>-</option></entry>
2275 </row>
2276 <row>
2277 <entry><option>-hpcdir dir</option></entry>
2278 <entry>Directory to deposit .mix files during compilation (default is .hpc)</entry>
2279 <entry>dynamic</entry>
2280 <entry><option>-</option></entry>
2281 </row>
2282 </tbody>
2283 </tgroup>
2284 </informaltable>
2285 </sect2>
2286
2287 <sect2>
2288 <title>Haskell pre-processor options</title>
2289
2290 <para><xref linkend="pre-processor"/></para>
2291
2292 <informaltable>
2293 <tgroup cols="4" align="left" colsep="1" rowsep="1">
2294 <thead>
2295 <row>
2296 <entry>Flag</entry>
2297 <entry>Description</entry>
2298 <entry>Static/Dynamic</entry>
2299 <entry>Reverse</entry>
2300 </row>
2301 </thead>
2302 <tbody>
2303 <row>
2304 <entry><option>-F</option></entry>
2305 <entry>
2306 Enable the use of a pre-processor
2307 (set with <option>-pgmF</option>)
2308 </entry>
2309 <entry>dynamic</entry>
2310 <entry>-</entry>
2311 </row>
2312 </tbody>
2313 </tgroup>
2314 </informaltable>
2315 </sect2>
2316
2317 <sect2>
2318 <title>C pre-processor options</title>
2319
2320 <para><xref linkend="c-pre-processor"/></para>
2321
2322 <informaltable>
2323 <tgroup cols="4" align="left" colsep="1" rowsep="1">
2324 <thead>
2325 <row>
2326 <entry>Flag</entry>
2327 <entry>Description</entry>
2328 <entry>Static/Dynamic</entry>
2329 <entry>Reverse</entry>
2330 </row>
2331 </thead>
2332 <tbody>
2333 <row>
2334 <entry><option>-cpp</option></entry>
2335 <entry>Run the C pre-processor on Haskell source files</entry>
2336 <entry>dynamic</entry>
2337 <entry>-</entry>
2338 </row>
2339 <row>
2340 <entry><option>-D</option><replaceable>symbol</replaceable><optional>=<replaceable>value</replaceable></optional></entry>
2341 <entry>Define a symbol in the C pre-processor</entry>
2342 <entry>dynamic</entry>
2343 <entry><option>-U</option><replaceable>symbol</replaceable></entry>
2344 </row>
2345 <row>
2346 <entry><option>-U</option><replaceable>symbol</replaceable></entry>
2347 <entry>Undefine a symbol in the C pre-processor</entry>
2348 <entry>dynamic</entry>
2349 <entry>-</entry>
2350 </row>
2351 <row>
2352 <entry><option>-I</option><replaceable>dir</replaceable></entry>
2353 <entry>Add <replaceable>dir</replaceable> to the
2354 directory search list for <literal>#include</literal> files</entry>
2355 <entry>dynamic</entry>
2356 <entry>-</entry>
2357 </row>
2358 </tbody>
2359 </tgroup>
2360 </informaltable>
2361 </sect2>
2362
2363 <sect2>
2364 <title>Code generation options</title>
2365
2366 <para><xref linkend="options-codegen"/></para>
2367
2368 <informaltable>
2369 <tgroup cols="4" align="left" colsep="1" rowsep="1">
2370 <thead>
2371 <row>
2372 <entry>Flag</entry>
2373 <entry>Description</entry>
2374 <entry>Static/Dynamic</entry>
2375 <entry>Reverse</entry>
2376 </row>
2377 </thead>
2378 <tbody>
2379 <row>
2380 <entry><option>-fasm</option></entry>
2381 <entry>Use the <link linkend="native-code-gen">native code
2382 generator</link></entry>
2383 <entry>dynamic</entry>
2384 <entry>-fllvm</entry>
2385 </row>
2386 <row>
2387 <entry><option>-fllvm</option></entry>
2388 <entry>Compile using the <link linkend="llvm-code-gen">LLVM code
2389 generator</link></entry>
2390 <entry>dynamic</entry>
2391 <entry>-fasm</entry>
2392 </row>
2393 <row>
2394 <entry><option>-fno-code</option></entry>
2395 <entry>Omit code generation</entry>
2396 <entry>dynamic</entry>
2397 <entry>-</entry>
2398 </row>
2399 <row>
2400 <entry><option>-fwrite-interface</option></entry>
2401 <entry>Always write interface files</entry>
2402 <entry>dynamic</entry>
2403 <entry>-</entry>
2404 </row>
2405 <row>
2406 <entry><option>-fbyte-code</option></entry>
2407 <entry>Generate byte-code</entry>
2408 <entry>dynamic</entry>
2409 <entry>-</entry>
2410 </row>
2411 <row>
2412 <entry><option>-fobject-code</option></entry>
2413 <entry>Generate object code</entry>
2414 <entry>dynamic</entry>
2415 <entry>-</entry>
2416 </row>
2417 </tbody>
2418 </tgroup>
2419 </informaltable>
2420 </sect2>
2421
2422 <sect2>
2423 <title>Linking options</title>
2424
2425 <para><xref linkend="options-linker"/></para>
2426
2427 <informaltable>
2428 <tgroup cols="4" align="left" colsep="1" rowsep="1">
2429 <thead>
2430 <row>
2431 <entry>Flag</entry>
2432 <entry>Description</entry>
2433 <entry>Static/Dynamic</entry>
2434 <entry>Reverse</entry>
2435 </row>
2436 </thead>
2437 <tbody>
2438 <row>
2439 <entry><option>-shared</option></entry>
2440 <entry>Generate a shared library (as opposed to an executable)</entry>
2441 <entry>dynamic</entry>
2442 <entry>-</entry>
2443 </row>
2444 <row>
2445 <entry><option>-staticlib</option></entry>
2446 <entry>On Darwin/OS X/iOS only, generate a standalone static library
2447 (as opposed to an executable).
2448 This is the usual way to compile for iOS.
2449 </entry>
2450 <entry>dynamic</entry>
2451 <entry>-</entry>
2452 </row>
2453 <row>
2454 <entry><option>-fPIC</option></entry>
2455 <entry>Generate position-independent code (where available)</entry>
2456 <entry>dynamic</entry>
2457 <entry>-</entry>
2458 </row>
2459 <row>
2460 <entry><option>-dynamic</option></entry>
2461 <entry>Use dynamic Haskell libraries (if available)</entry>
2462 <entry>dynamic</entry>
2463 <entry>-</entry>
2464 </row>
2465 <row>
2466 <entry><option>-dynamic-too</option></entry>
2467 <entry>Build dynamic object files <emphasis>as well as</emphasis> static object files during compilation</entry>
2468 <entry>dynamic</entry>
2469 <entry>-</entry>
2470 </row>
2471 <row>
2472 <entry><option>-dyno</option></entry>
2473 <entry>Set the output path for the <emphasis>dynamically</emphasis> linked objects</entry>
2474 <entry>dynamic</entry>
2475 <entry>-</entry>
2476 </row>
2477 <row>
2478 <entry><option>-dynosuf</option></entry>
2479 <entry>Set the output suffix for dynamic object files</entry>
2480 <entry>dynamic</entry>
2481 <entry>-</entry>
2482 </row>
2483 <row>
2484 <entry><option>-dynload</option></entry>
2485 <entry>Selects one of a number of modes for finding shared
2486 libraries at runtime.</entry>
2487 <entry>dynamic</entry>
2488 <entry>-</entry>
2489 </row>
2490 <row>
2491 <entry><option>-framework</option> <replaceable>name</replaceable></entry>
2492 <entry>On Darwin/OS X/iOS only, link in the framework <replaceable>name</replaceable>.
2493 This option corresponds to the <option>-framework</option> option for Apple's Linker.</entry>
2494 <entry>dynamic</entry>
2495 <entry>-</entry>
2496 </row>
2497 <row>
2498 <entry><option>-framework-path</option> <replaceable>name</replaceable></entry>
2499 <entry>On Darwin/OS X/iOS only, add <replaceable>dir</replaceable> to the list of
2500 directories searched for frameworks.
2501 This option corresponds to the <option>-F</option> option for Apple's Linker.</entry>
2502 <entry>dynamic</entry>
2503 <entry>-</entry>
2504 </row>
2505 <row>
2506 <entry><option>-l</option><replaceable>lib</replaceable></entry>
2507 <entry>Link in library <replaceable>lib</replaceable></entry>
2508 <entry>dynamic</entry>
2509 <entry>-</entry>
2510 </row>
2511 <row>
2512 <entry><option>-L</option><replaceable>dir</replaceable></entry>
2513 <entry>Add <replaceable>dir</replaceable> to the list of
2514 directories searched for libraries</entry>
2515 <entry>dynamic</entry>
2516 <entry>-</entry>
2517 </row>
2518 <row>
2519 <entry><option>-main-is</option></entry>
2520 <entry>Set main module and function</entry>
2521 <entry>dynamic</entry>
2522 <entry>-</entry>
2523 </row>
2524 <row>
2525 <entry><option>--mk-dll</option></entry>
2526 <entry>DLL-creation mode (Windows only)</entry>
2527 <entry>dynamic</entry>
2528 <entry>-</entry>
2529 </row>
2530 <row>
2531 <entry><option>-no-hs-main</option></entry>
2532 <entry>Don't assume this program contains <literal>main</literal></entry>
2533 <entry>dynamic</entry>
2534 <entry>-</entry>
2535 </row>
2536 <row>
2537 <entry><option>-rtsopts</option>, <option>-rtsopts={none,some,all}</option></entry>
2538 <entry>Control whether the RTS behaviour can be tweaked via command-line
2539 flags and the <literal>GHCRTS</literal> environment
2540 variable. Using <literal>none</literal> means no RTS flags can be given; <literal>some</literal> means only a minimum of safe options can be given (the default), and <literal>all</literal> (or no argument at all) means that all RTS flags are permitted.</entry>
2541 <entry>dynamic</entry>
2542 <entry>-</entry>
2543 </row>
2544 <row>
2545 <entry><option>-with-rtsopts=<replaceable>opts</replaceable></option></entry>
2546 <entry>Set the default RTS options to
2547 <replaceable>opts</replaceable>.</entry>
2548 <entry>dynamic</entry>
2549 <entry>-</entry>
2550 </row>
2551 <row>
2552 <entry><option>-no-link</option></entry>
2553 <entry>Omit linking</entry>
2554 <entry>dynamic</entry>
2555 <entry>-</entry>
2556 </row>
2557 <row>
2558 <entry><option>-split-objs</option></entry>
2559 <entry>Split objects (for libraries)</entry>
2560 <entry>dynamic</entry>
2561 <entry>-</entry>
2562 </row>
2563 <row>
2564 <entry><option>-static</option></entry>
2565 <entry>Use static Haskell libraries</entry>
2566 <entry>dynamic</entry>
2567 <entry>-</entry>
2568 </row>
2569 <row>
2570 <entry><option>-threaded</option></entry>
2571 <entry>Use the threaded runtime</entry>
2572 <entry>dynamic</entry>
2573 <entry>-</entry>
2574 </row>
2575 <row>
2576 <entry><option>-debug</option></entry>
2577 <entry>Use the debugging runtime</entry>
2578 <entry>dynamic</entry>
2579 <entry>-</entry>
2580 </row>
2581 <row>
2582 <entry><option>-ticky</option></entry>
2583 <entry>For linking, this simply implies <option>-debug</option>;
2584 see <xref linkend="ticky-ticky"/>.</entry>
2585 <entry>dynamic</entry>
2586 <entry>-</entry>
2587 </row>
2588 <row>
2589 <entry><option>-eventlog</option></entry>
2590 <entry>Enable runtime event tracing</entry>
2591 <entry>dynamic</entry>
2592 <entry>-</entry>
2593 </row>
2594 <row>
2595 <entry><option>-fno-gen-manifest</option></entry>
2596 <entry>Do not generate a manifest file (Windows only)</entry>
2597 <entry>dynamic</entry>
2598 <entry>-</entry>
2599 </row>
2600 <row>
2601 <entry><option>-fno-embed-manifest</option></entry>
2602 <entry>Do not embed the manifest in the executable (Windows only)</entry>
2603 <entry>dynamic</entry>
2604 <entry>-</entry>
2605 </row>
2606 <row>
2607 <entry><option>-fno-shared-implib</option></entry>
2608 <entry>Don't generate an import library for a DLL (Windows only)</entry>
2609 <entry>dynamic</entry>
2610 <entry>-</entry>
2611 </row>
2612 <row>
2613 <entry><option>-dylib-install-name</option> <replaceable>path</replaceable></entry>
2614 <entry>Set the install name (via <literal>-install_name</literal> passed to Apple's
2615 linker), specifying the full install path of the library file. Any libraries
2616 or executables that link with it later will pick up that path as their
2617 runtime search location for it. (Darwin/OS X only)</entry>
2618 <entry>dynamic</entry>
2619 <entry>-</entry>
2620 </row>
2621 <row>
2622 <entry><option>-rdynamic</option></entry>
2623 <entry>This instructs the linker to add all symbols, not only used ones, to the
2624 dynamic symbol table. Currently Linux and Windows/MinGW32 only.
2625 This is equivalent to using <literal>-optl -rdynamic</literal> on Linux,
2626 and <literal>-optl -export-all-symbols</literal> on Windows.</entry>
2627 <entry>dynamic</entry>
2628 <entry>-</entry>
2629 </row>
2630 </tbody>
2631 </tgroup>
2632 </informaltable>
2633 </sect2>
2634
2635 <sect2>
2636 <title>Plugin options</title>
2637
2638 <para><xref linkend="compiler-plugins"/></para>
2639
2640 <informaltable>
2641 <tgroup cols="4" align="left" colsep="1" rowsep="1">
2642 <thead>
2643 <row>
2644 <entry>Flag</entry>
2645 <entry>Description</entry>
2646 <entry>Static/Dynamic</entry>
2647 <entry>Reverse</entry>
2648 </row>
2649 </thead>
2650 <tbody>
2651 <row>
2652 <entry><option>-fplugin</option>=<replaceable>module</replaceable></entry>
2653 <entry>Load a plugin exported by a given module</entry>
2654 <entry>dynamic</entry>
2655 <entry>-</entry>
2656 </row>
2657 <row>
2658 <entry><option>-fplugin-opt</option>=<replaceable>module:args</replaceable></entry>
2659 <entry>Give arguments to a plugin module; module must be specified with <option>-fplugin</option></entry>
2660 <entry>dynamic</entry>
2661 <entry>-</entry>
2662 </row>
2663 </tbody>
2664 </tgroup>
2665 </informaltable>
2666 </sect2>
2667
2668
2669 <sect2>
2670 <title>Replacing phases</title>
2671
2672 <para><xref linkend="replacing-phases"/></para>
2673
2674 <informaltable>
2675 <tgroup cols="4" align="left" colsep="1" rowsep="1">
2676 <thead>
2677 <row>
2678 <entry>Flag</entry>
2679 <entry>Description</entry>
2680 <entry>Static/Dynamic</entry>
2681 <entry>Reverse</entry>
2682 </row>
2683 </thead>
2684 <tbody>
2685 <row>
2686 <entry><option>-pgmL</option> <replaceable>cmd</replaceable></entry>
2687 <entry>Use <replaceable>cmd</replaceable> as the literate pre-processor</entry>
2688 <entry>dynamic</entry>
2689 <entry>-</entry>
2690 </row>
2691 <row>
2692 <entry><option>-pgmP</option> <replaceable>cmd</replaceable></entry>
2693 <entry>Use <replaceable>cmd</replaceable> as the C
2694 pre-processor (with <option>-cpp</option> only)</entry>
2695 <entry>dynamic</entry>
2696 <entry>-</entry>
2697 </row>
2698 <row>
2699 <entry><option>-pgmc</option> <replaceable>cmd</replaceable></entry>
2700 <entry>Use <replaceable>cmd</replaceable> as the C compiler</entry>
2701 <entry>dynamic</entry>
2702 <entry>-</entry>
2703 <row>
2704 <entry><option>-pgmlo</option> <replaceable>cmd</replaceable></entry>
2705 <entry>Use <replaceable>cmd</replaceable> as the LLVM optimiser</entry>
2706 <entry>dynamic</entry>
2707 <entry>-</entry>
2708 </row>
2709 <row>
2710 <entry><option>-pgmlc</option> <replaceable>cmd</replaceable></entry>
2711 <entry>Use <replaceable>cmd</replaceable> as the LLVM compiler</entry>
2712 <entry>dynamic</entry>
2713 <entry>-</entry>
2714 </row>
2715 </row>
2716 <row>
2717 <entry><option>-pgms</option> <replaceable>cmd</replaceable></entry>
2718 <entry>Use <replaceable>cmd</replaceable> as the splitter</entry>
2719 <entry>dynamic</entry>
2720 <entry>-</entry>
2721 </row>
2722 <row>
2723 <entry><option>-pgma</option> <replaceable>cmd</replaceable></entry>
2724 <entry>Use <replaceable>cmd</replaceable> as the assembler</entry>
2725 <entry>dynamic</entry>
2726 <entry>-</entry>
2727 </row>
2728 <row>
2729 <entry><option>-pgml</option> <replaceable>cmd</replaceable></entry>
2730 <entry>Use <replaceable>cmd</replaceable> as the linker</entry>
2731 <entry>dynamic</entry>
2732 <entry>-</entry>
2733 </row>
2734 <row>
2735 <entry><option>-pgmdll</option> <replaceable>cmd</replaceable></entry>
2736 <entry>Use <replaceable>cmd</replaceable> as the DLL generator</entry>
2737 <entry>dynamic</entry>
2738 <entry>-</entry>
2739 </row>
2740 <row>
2741 <entry><option>-pgmF</option> <replaceable>cmd</replaceable></entry>
2742 <entry>Use <replaceable>cmd</replaceable> as the pre-processor
2743 (with <option>-F</option> only)</entry>
2744 <entry>dynamic</entry>
2745 <entry>-</entry>
2746 </row>
2747 <row>
2748 <entry><option>-pgmwindres</option> <replaceable>cmd</replaceable></entry>
2749 <entry>Use <replaceable>cmd</replaceable> as the program for
2750 embedding manifests on Windows.</entry>
2751 <entry>dynamic</entry>
2752 <entry>-</entry>
2753 </row>
2754 <row>
2755 <entry><option>-pgmlibtool</option> <replaceable>cmd</replaceable></entry>
2756 <entry>Use <replaceable>cmd</replaceable> as the command for libtool
2757 (with <option>-staticlib</option> only).</entry>
2758 <entry>dynamic</entry>
2759 <entry>-</entry>
2760 </row>
2761 </tbody>
2762 </tgroup>
2763 </informaltable>
2764 <indexterm><primary><option>-pgmL</option></primary></indexterm>
2765 <indexterm><primary><option>-pgmP</option></primary></indexterm>
2766 <indexterm><primary><option>-pgmc</option></primary></indexterm>
2767 <indexterm><primary><option>-pgmlo</option></primary></indexterm>
2768 <indexterm><primary><option>-pgmlc</option></primary></indexterm>
2769 <indexterm><primary><option>-pgma</option></primary></indexterm>
2770 <indexterm><primary><option>-pgml</option></primary></indexterm>
2771 <indexterm><primary><option>-pgmdll</option></primary></indexterm>
2772 <indexterm><primary><option>-pgmF</option></primary></indexterm>
2773
2774 </sect2>
2775
2776 <sect2>
2777 <title>Forcing options to particular phases</title>
2778
2779 <para><xref linkend="forcing-options-through"/></para>
2780
2781 <informaltable>
2782 <tgroup cols="4" align="left" colsep="1" rowsep="1">
2783 <thead>
2784 <row>
2785 <entry>Flag</entry>
2786 <entry>Description</entry>
2787 <entry>Static/Dynamic</entry>
2788 <entry>Reverse</entry>
2789 </row>
2790 </thead>
2791 <tbody>
2792 <row>
2793 <entry><option>-optL</option> <replaceable>option</replaceable></entry>
2794 <entry>pass <replaceable>option</replaceable> to the literate pre-processor</entry>
2795 <entry>dynamic</entry>
2796 <entry>-</entry>
2797 </row>
2798 <row>
2799 <entry><option>-optP</option> <replaceable>option</replaceable></entry>
2800 <entry>pass <replaceable>option</replaceable> to cpp (with
2801 <option>-cpp</option> only)</entry>
2802 <entry>dynamic</entry>
2803 <entry>-</entry>
2804 </row>
2805 <row>
2806 <entry><option>-optF</option> <replaceable>option</replaceable></entry>
2807 <entry>pass <replaceable>option</replaceable> to the
2808 custom pre-processor</entry>
2809 <entry>dynamic</entry>
2810 <entry>-</entry>
2811 </row>
2812 <row>
2813 <entry><option>-optc</option> <replaceable>option</replaceable></entry>
2814 <entry>pass <replaceable>option</replaceable> to the C compiler</entry>
2815 <entry>dynamic</entry>
2816 <entry>-</entry>
2817 </row>
2818 <row>
2819 <entry><option>-optlo</option> <replaceable>option</replaceable></entry>
2820 <entry>pass <replaceable>option</replaceable> to the LLVM optimiser</entry>
2821 <entry>dynamic</entry>
2822 <entry>-</entry>
2823 </row>
2824 <row>
2825 <entry><option>-optlc</option> <replaceable>option</replaceable></entry>
2826 <entry>pass <replaceable>option</replaceable> to the LLVM compiler</entry>
2827 <entry>dynamic</entry>
2828 <entry>-</entry>
2829 </row>
2830 <row>
2831 <entry><option>-opta</option> <replaceable>option</replaceable></entry>
2832 <entry>pass <replaceable>option</replaceable> to the assembler</entry>
2833 <entry>dynamic</entry>
2834 <entry>-</entry>
2835 </row>
2836 <row>
2837 <entry><option>-optl</option> <replaceable>option</replaceable></entry>
2838 <entry>pass <replaceable>option</replaceable> to the linker</entry>
2839 <entry>dynamic</entry>
2840 <entry>-</entry>
2841 </row>
2842 <row>
2843 <entry><option>-optdll</option> <replaceable>option</replaceable></entry>
2844 <entry>pass <replaceable>option</replaceable> to the DLL generator</entry>
2845 <entry>dynamic</entry>
2846 <entry>-</entry>
2847 </row>
2848 <row>
2849 <entry><option>-optwindres</option> <replaceable>option</replaceable></entry>
2850 <entry>pass <replaceable>option</replaceable> to <literal>windres</literal>.</entry>
2851 <entry>dynamic</entry>
2852 <entry>-</entry>
2853 </row>
2854 </tbody>
2855 </tgroup>
2856 </informaltable>
2857 </sect2>
2858
2859 <sect2>
2860 <title>Platform-specific options</title>
2861
2862 <para><xref linkend="options-platform"/></para>
2863
2864 <informaltable>
2865 <tgroup cols="4" align="left" colsep="1" rowsep="1">
2866 <thead>
2867 <row>
2868 <entry>Flag</entry>
2869 <entry>Description</entry>
2870 <entry>Static/Dynamic</entry>
2871 <entry>Reverse</entry>
2872 </row>
2873 </thead>
2874 <tbody>
2875 <row>
2876 <entry><option>-msse2</option></entry>
2877 <entry>(x86 only) Use SSE2 for floating point</entry>
2878 <entry>dynamic</entry>
2879 <entry>-</entry>
2880 </row>
2881 </tbody>
2882 </tgroup>
2883 </informaltable>
2884 </sect2>
2885
2886
2887 <sect2>
2888 <title>Compiler debugging options</title>
2889
2890 <para><xref linkend="options-debugging"/></para>
2891
2892 <informaltable>
2893 <tgroup cols="4" align="left" colsep="1" rowsep="1">
2894 <thead>
2895 <row>
2896 <entry>Flag</entry>
2897 <entry>Description</entry>
2898 <entry>Static/Dynamic</entry>
2899 <entry>Reverse</entry>
2900 </row>
2901 </thead>
2902 <tbody>
2903 <row>
2904 <entry><option>-dcore-lint</option></entry>
2905 <entry>Turn on internal sanity checking</entry>
2906 <entry>dynamic</entry>
2907 <entry>-</entry>
2908 </row>
2909 <row>
2910 <entry><option>-ddump-to-file</option></entry>
2911 <entry>Dump to files instead of stdout</entry>
2912 <entry>dynamic</entry>
2913 <entry>-</entry>
2914 </row>
2915 <row>
2916 <entry><option>-ddump-asm</option></entry>
2917 <entry>Dump assembly</entry>
2918 <entry>dynamic</entry>
2919 <entry>-</entry>
2920 </row>
2921 <row>
2922 <entry><option>-ddump-bcos</option></entry>
2923 <entry>Dump interpreter byte code</entry>
2924 <entry>dynamic</entry>
2925 <entry>-</entry>
2926 </row>
2927 <row>
2928 <entry><option>-ddump-cmm</option></entry>
2929 <entry>Dump C-- output</entry>
2930 <entry>dynamic</entry>
2931 <entry>-</entry>
2932 </row>
2933 <row>
2934 <entry><option>-ddump-core-stats</option></entry>
2935 <entry>Print a one-line summary of the size of the Core program
2936 at the end of the optimisation pipeline </entry>
2937 <entry>dynamic</entry>
2938 <entry>-</entry>
2939 </row>
2940 <row>
2941 <entry><option>-ddump-cpranal</option></entry>
2942 <entry>Dump output from CPR analysis</entry>
2943 <entry>dynamic</entry>
2944 <entry>-</entry>
2945 </row>
2946 <row>
2947 <entry><option>-ddump-cse</option></entry>
2948 <entry>Dump CSE output</entry>
2949 <entry>dynamic</entry>
2950 <entry>-</entry>
2951 </row>
2952 <row>
2953 <entry><option>-ddump-deriv</option></entry>
2954 <entry>Dump deriving output</entry>
2955 <entry>dynamic</entry>
2956 <entry>-</entry>
2957 </row>
2958 <row>
2959 <entry><option>-ddump-ds</option></entry>
2960 <entry>Dump desugarer output</entry>
2961 <entry>dynamic</entry>
2962 <entry>-</entry>
2963 </row>
2964 <row>
2965 <entry><option>-ddump-flatC</option></entry>
2966 <entry>Dump &ldquo;flat&rdquo; C</entry>
2967 <entry>dynamic</entry>
2968 <entry>-</entry>
2969 </row>
2970 <row>
2971 <entry><option>-ddump-foreign</option></entry>
2972 <entry>Dump <literal>foreign export</literal> stubs</entry>
2973 <entry>dynamic</entry>
2974 <entry>-</entry>
2975 </row>
2976 <row>
2977 <entry><option>-ddump-hpc</option></entry>
2978 <entry>Dump after instrumentation for program coverage</entry>
2979 <entry>dynamic</entry>
2980 <entry>-</entry>
2981 </row>
2982 <row>
2983 <entry><option>-ddump-inlinings</option></entry>
2984 <entry>Dump inlining info</entry>
2985 <entry>dynamic</entry>
2986 <entry>-</entry>
2987 </row>
2988 <row>
2989 <entry><option>-ddump-llvm</option></entry>
2990 <entry>Dump LLVM intermediate code</entry>
2991 <entry>dynamic</entry>
2992 <entry>-</entry>
2993 </row>
2994 <row>
2995 <entry><option>-ddump-occur-anal</option></entry>
2996 <entry>Dump occurrence analysis output</entry>
2997 <entry>dynamic</entry>
2998 <entry>-</entry>
2999 </row>
3000 <row>
3001 <entry><option>-ddump-opt-cmm</option></entry>
3002 <entry>Dump the results of C-- to C-- optimising passes</entry>
3003 <entry>dynamic</entry>
3004 <entry>-</entry>
3005 </row>
3006 <row>
3007 <entry><option>-ddump-parsed</option></entry>
3008 <entry>Dump parse tree</entry>
3009 <entry>dynamic</entry>
3010 <entry>-</entry>
3011 </row>
3012 <row>
3013 <entry><option>-ddump-prep</option></entry>
3014 <entry>Dump prepared core</entry>
3015 <entry>dynamic</entry>
3016 <entry>-</entry>
3017 </row>
3018 <row>
3019 <entry><option>-ddump-rn</option></entry>
3020 <entry>Dump renamer output</entry>
3021 <entry>dynamic</entry>
3022 <entry>-</entry>
3023 </row>
3024 <row>
3025 <entry><option>-ddump-rule-firings</option></entry>
3026 <entry>Dump rule firing info</entry>
3027 <entry>dynamic</entry>
3028 <entry>-</entry>
3029 </row>
3030 <row>
3031 <entry><option>-ddump-rule-rewrites</option></entry>
3032 <entry>Dump detailed rule firing info</entry>
3033 <entry>dynamic</entry>
3034 <entry>-</entry>
3035 </row>
3036 <row>
3037 <entry><option>-ddump-rules</option></entry>
3038 <entry>Dump rules</entry>
3039 <entry>dynamic</entry>
3040 <entry>-</entry>
3041 </row>
3042 <row>
3043 <entry><option>-ddump-vect</option></entry>
3044 <entry>Dump vectoriser input and output</entry>
3045 <entry>dynamic</entry>
3046 <entry>-</entry>
3047 </row>
3048 <row>
3049 <entry><option>-ddump-simpl</option></entry>
3050 <entry>Dump final simplifier output</entry>
3051 <entry>dynamic</entry>
3052 <entry>-</entry>
3053 </row>
3054 <row>
3055 <entry><option>-ddump-simpl-iterations</option></entry>
3056 <entry>Dump output from each simplifier iteration</entry>
3057 <entry>dynamic</entry>
3058 <entry>-</entry>
3059 </row>
3060 <row>
3061 <entry><option>-ddump-spec</option></entry>
3062 <entry>Dump specialiser output</entry>
3063 <entry>dynamic</entry>
3064 <entry>-</entry>
3065 </row>
3066 <row>
3067 <entry><option>-ddump-splices</option></entry>
3068 <entry>Dump TH spliced expressions, and what they evaluate to</entry>
3069 <entry>dynamic</entry>
3070 <entry>-</entry>
3071 </row>
3072 <row>
3073 <entry><option>-ddump-stg</option></entry>
3074 <entry>Dump final STG</entry>
3075 <entry>dynamic</entry>
3076 <entry>-</entry>
3077 </row>
3078 <row>
3079 <entry><option>-ddump-stranal</option></entry>
3080 <entry>Dump strictness analyser output</entry>
3081 <entry>dynamic</entry>
3082 <entry>-</entry>
3083 </row>
3084 <row>
3085 <entry><option>-ddump-strsigs</option></entry>
3086 <entry>Dump strictness signatures</entry>
3087 <entry>dynamic</entry>
3088 <entry>-</entry>
3089 </row>
3090 <row>
3091 <entry><option>-ddump-tc</option></entry>
3092 <entry>Dump typechecker output</entry>
3093 <entry>dynamic</entry>
3094 <entry>-</entry>
3095 </row>
3096 <row>
3097 <entry><option>-ddump-types</option></entry>
3098 <entry>Dump type signatures</entry>
3099 <entry>dynamic</entry>
3100 <entry>-</entry>
3101 </row>
3102 <row>
3103 <entry><option>-ddump-worker-wrapper</option></entry>
3104 <entry>Dump worker-wrapper output</entry>
3105 <entry>dynamic</entry>
3106 <entry>-</entry>
3107 </row>
3108 <row>
3109 <entry><option>-ddump-if-trace</option></entry>
3110 <entry>Trace interface files</entry>
3111 <entry>dynamic</entry>
3112 <entry>-</entry>
3113 </row>
3114 <row>
3115 <entry><option>-ddump-tc-trace</option></entry>
3116 <entry>Trace typechecker</entry>
3117 <entry>dynamic</entry>
3118 <entry>-</entry>
3119 </row>
3120 <row>
3121 <entry><option>-ddump-vt-trace</option></entry>
3122 <entry>Trace vectoriser</entry>
3123 <entry>dynamic</entry>
3124 <entry>-</entry>
3125 </row>
3126 <row>
3127 <entry><option>-ddump-rn-trace</option></entry>
3128 <entry>Trace renamer</entry>
3129 <entry>dynamic</entry>
3130 <entry>-</entry>
3131 </row>
3132 <row>
3133 <entry><option>-ddump-rn-stats</option></entry>
3134 <entry>Renamer stats</entry>
3135 <entry>dynamic</entry>
3136 <entry>-</entry>
3137 </row>
3138 <row>
3139 <entry><option>-ddump-simpl-stats</option></entry>
3140 <entry>Dump simplifier stats</entry>
3141 <entry>dynamic</entry>
3142 <entry>-</entry>
3143 </row>
3144 <row>
3145 <entry><option>-dno-debug-output</option></entry>
3146 <entry>Suppress unsolicited debugging output</entry>
3147 <entry>static</entry>
3148 <entry>-</entry>
3149 </row>
3150 <row>
3151 <entry><option>-dppr-debug</option></entry>
3152 <entry>Turn on debug printing (more verbose)</entry>
3153 <entry>static</entry>
3154 <entry>-</entry>
3155 </row>
3156 <row>
3157 <entry><option>-dppr-user-length</option></entry>
3158 <entry>Set the depth for printing expressions in error msgs</entry>
3159 <entry>dynamic</entry>
3160 <entry>-</entry>
3161 </row>
3162 <row>
3163 <entry><option>-dppr-colsNNN</option></entry>
3164 <entry>Set the width of debugging output. For example <option>-dppr-cols200</option></entry>
3165 <entry>dynamic</entry>
3166 <entry>-</entry>
3167 </row>
3168 <row>
3169 <entry><option>-dppr-case-as-let</option></entry>
3170 <entry>Print single alternative case expressions as strict lets.</entry>
3171 <entry>dynamic</entry>
3172 <entry>-</entry>
3173 </row>
3174 <row>
3175 <entry><option>-dsuppress-all</option></entry>
3176 <entry>In core dumps, suppress everything (except for uniques) that is suppressible.</entry>
3177 <entry>dynamic</entry>
3178 <entry>-</entry>
3179 </row>
3180 <row>
3181 <entry><option>-dsuppress-uniques</option></entry>
3182 <entry>Suppress the printing of uniques in debug output (easier to use <command>diff</command>)</entry>
3183 <entry>dynamic</entry>
3184 <entry>-</entry>
3185 </row>
3186 <row>
3187 <entry><option>-dsuppress-idinfo</option></entry>
3188 <entry>Suppress extended information about identifiers where they are bound</entry>
3189 <entry>dynamic</entry>
3190 <entry>-</entry>
3191 </row>
3192 <row>
3193 <entry><option>-dsuppress-module-prefixes</option></entry>
3194 <entry>Suppress the printing of module qualification prefixes</entry>
3195 <entry>dynamic</entry>
3196 <entry>-</entry>
3197 </row>
3198 <row>
3199 <entry><option>-dsuppress-type-signatures</option></entry>
3200 <entry>Suppress type signatures</entry>
3201 <entry>dynamic</entry>
3202 <entry>-</entry>
3203 </row>
3204 <row>
3205 <entry><option>-dsuppress-type-applications</option></entry>
3206 <entry>Suppress type applications</entry>
3207 <entry>dynamic</entry>
3208 <entry>-</entry>
3209 </row>
3210 <row>
3211 <entry><option>-dsuppress-coercions</option></entry>
3212 <entry>Suppress the printing of coercions in Core dumps to make them shorter</entry>
3213 <entry>dynamic</entry>
3214 <entry>-</entry>
3215 </row>
3216 <row>
3217 <entry><option>-dsource-stats</option></entry>
3218 <entry>Dump haskell source stats</entry>
3219 <entry>dynamic</entry>
3220 <entry>-</entry>
3221 </row>
3222 <row>
3223 <entry><option>-dcmm-lint</option></entry>
3224 <entry>C-- pass sanity checking</entry>
3225 <entry>dynamic</entry>
3226 <entry>-</entry>
3227 </row>
3228 <row>
3229 <entry><option>-dstg-lint</option></entry>
3230 <entry>STG pass sanity checking</entry>
3231 <entry>dynamic</entry>
3232 <entry>-</entry>
3233 </row>
3234 <row>
3235 <entry><option>-dstg-stats</option></entry>
3236 <entry>Dump STG stats</entry>
3237 <entry>dynamic</entry>
3238 <entry>-</entry>
3239 </row>
3240 <row>
3241 <entry><option>-dverbose-core2core</option></entry>
3242 <entry>Show output from each core-to-core pass</entry>
3243 <entry>dynamic</entry>
3244 <entry>-</entry>
3245 </row>
3246 <row>
3247 <entry><option>-dverbose-stg2stg</option></entry>
3248 <entry>Show output from each STG-to-STG pass</entry>
3249 <entry>dynamic</entry>
3250 <entry>-</entry>
3251 </row>
3252 <row>
3253 <entry><option>-dshow-passes</option></entry>
3254 <entry>Print out each pass name as it happens</entry>
3255 <entry>dynamic</entry>
3256 <entry>-</entry>
3257 </row>
3258 <row>
3259 <entry><option>-dfaststring-stats</option></entry>
3260 <entry>Show statistics for fast string usage when finished</entry>
3261 <entry>dynamic</entry>
3262 <entry>-</entry>
3263 </row>
3264 <row>
3265 <entry><option>-frule-check</option></entry>
3266 <entry>Report sites with rules that could have fired but didn't.
3267 Takes a string argument.</entry>
3268 <entry>dynamic</entry>
3269 <entry>-</entry>
3270 </row>
3271 </tbody>
3272 </tgroup>
3273 </informaltable>
3274 </sect2>
3275
3276 <sect2>
3277 <title>Misc compiler options</title>
3278
3279 <informaltable>
3280 <tgroup cols="4" align="left" colsep="1" rowsep="1">
3281 <thead>
3282 <row>
3283 <entry>Flag</entry>
3284 <entry>Description</entry>
3285 <entry>Static/Dynamic</entry>
3286 <entry>Reverse</entry>
3287 </row>
3288 </thead>
3289 <tbody>
3290 <row>
3291 <entry><option>-j<replaceable>N</replaceable></option></entry>
3292 <entry>When compiling with <literal>--make</literal>, compile <replaceable>N</replaceable> modules in parallel.</entry>
3293 <entry>dynamic</entry>
3294 <entry>-</entry>
3295 </row>
3296 <row>
3297 <entry><option>-fno-hi-version-check</option></entry>
3298 <entry>Don't complain about <literal>.hi</literal> file mismatches</entry>
3299 <entry>dynamic</entry>
3300 <entry>-</entry>
3301 </row>
3302 <row>
3303 <entry><option>-fhistory-size</option></entry>
3304 <entry>Set simplification history size</entry>
3305 <entry>dynamic</entry>
3306 <entry>-</entry>
3307 </row>
3308 <row>
3309 <entry><option>-fno-ghci-history</option></entry>
3310 <entry>Do not use the load/store the GHCi command history from/to <literal>ghci_history</literal>.</entry>
3311 <entry>dynamic</entry>
3312 <entry>-</entry>
3313 </row>
3314 <row>
3315 <entry><option>-fno-ghci-sandbox</option></entry>
3316 <entry>Turn off the GHCi sandbox. Means computations are run in the main thread, rather than a forked thread.</entry>
3317 <entry>dynamic</entry>
3318 <entry>-</entry>
3319 </row>
3320 </tbody>
3321 </tgroup>
3322 </informaltable>
3323 </sect2>
3324 </sect1>
3325
3326
3327 <!--
3328 Still to document:
3329
3330 Misc:
3331 , ( "H" , HasArg (setHeapSize . fromIntegral . decodeSize) )
3332
3333 -Bdir
3334 -->
3335
3336 <!-- Emacs stuff:
3337 ;;; Local Variables: ***
3338 ;;; sgml-parent-document: ("users_guide.xml" "book" "chapter") ***
3339 ;;; End: ***
3340 -->