X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fusing.xml;h=20bb687b4f8b10dd0ff8048e783ad29ddde84f6b;hb=43e0bca04009902c16f8f764dcb9a78c8da277c9;hp=b2ac5012c1a08bb46689d7a807e849ad768a1335;hpb=0db68e1cf9b83d2d18ba427ec28712de4c9a043f;p=ghc-hetmet.git
diff --git a/docs/users_guide/using.xml b/docs/users_guide/using.xml
index b2ac501..20bb687 100644
--- a/docs/users_guide/using.xml
+++ b/docs/users_guide/using.xml
@@ -46,26 +46,25 @@ ghc [argument...]
Sometimes it is useful to make the connection between a
source file and the command-line options it requires quite
- tight. For instance, if a Haskell source file uses GHC
- extensions, it will always need to be compiled with the
- option. Rather than maintaining
+ tight. For instance, if a Haskell source file deliberately
+ uses name shadowing, it should be compiled with the
+ option. Rather than maintaining
the list of per-file options in a Makefile,
it is possible to do this directly in the source file using the
OPTIONS_GHC pragma OPTIONS_GHC
pragma:
-{-# OPTIONS_GHC -fglasgow-exts #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
module X where
...
- OPTIONS_GHC pragmas are only looked for at
- the top of your source files, upto the first
- (non-literate,non-empty) line not containing
- OPTIONS_GHC. Multiple OPTIONS_GHC
- pragmas are recognised. Do not put comments before, or on the same line
- as, the OPTIONS_GHC pragma.
+ OPTIONS_GHC is a file-header pragma
+ (see ).
+
+ Only dynamic flags can be used in an OPTIONS_GHC pragma
+ (see ).Note that your command shell does not
get to the source file options, they are just included literally
@@ -919,6 +918,23 @@ ghc -c Foo.hs
+ :
+
+
+
+ warnings
+ pragmas
+ Causes a warning to be emitted when a
+ pragma that GHC doesn't recognise is used. As well as pragmas
+ that GHC itself uses, GHC also recognises pragmas known to be used
+ by other tools, e.g. OPTIONS_HUGS and
+ DERIVE.
+
+ This option is on by default.
+
+
+
+ :
@@ -1765,15 +1781,58 @@ f "2" = 2
linkend="lang-parallel" /> we describe the language features that affect
parallelism.
-
- Options for SMP parallelism
+
+ Compile-time options for SMP parallelismIn order to make use of multiple CPUs, your program must be
linked with the option (see ). Then, to run a program on multiple
- CPUs, use the RTS option:
+ linkend="options-linker" />). Additionally, the following
+ compiler options affect parallelism:
+
+
+
+
+
+ Blackholing is the act of marking a thunk (lazy
+ computuation) as being under evaluation. It is useful for
+ three reasons: firstly it lets us detect certain kinds of
+ infinite loop (the NonTermination
+ exception), secondly it avoids certain kinds of space
+ leak, and thirdly it avoids repeating a computation in a
+ parallel program, because we can tell when a computation
+ is already in progress.
+
+
+ The option causes
+ each thunk to be blackholed as soon as evaluation begins.
+ The default is "lazy blackholing", whereby thunks are only
+ marked as being under evaluation when a thread is paused
+ for some reason. Lazy blackholing is typically more
+ efficient (by 1-2% or so), because most thunks don't
+ need to be blackholed. However, eager blackholing can
+ avoid more repeated computation in a parallel program, and
+ this often turns out to be important for parallelism.
+
+
+
+ We recommend compiling any code that is intended to be run
+ in parallel with the
+ flag.
+
+
+
+
+
+
+
+ RTS options for SMP parallelism
+
+ To run a program on multiple CPUs, use the
+ RTS option:
+
+
@@ -1906,7 +1965,7 @@ statements or clauses.
GHC can dump its optimized intermediate code (said to be in “Core” format)
to a file as a side-effect of compilation. Non-GHC back-end tools can read and process Core files; these files have the suffix
- .hcr. The Core format is described in
+ .hcr. The Core format is described in An External Representation for the GHC Core Language,
and sample tools
for manipulating Core files (in Haskell) are in the GHC source distribution