darcs patch: fix parallel make and make install DESTDIR=
Duncan Coutts
duncan at well-typed.com
Thu Apr 30 11:01:53 EDT 2009
A couple more build system patches, two for ghc and one for hsc2hs (but
needed for ghc's build too). Passes validate (CPUS=4).
Duncan
Thu Apr 30 14:56:37 BST 2009 Duncan Coutts <duncan at well-typed.com>
* Fix parallel make for libffi.
I didn't realise make can invoke the same action multiple
times in parallel if the rule has multiple targets. So go
back to using a build stamp file.
Thu Apr 30 13:37:53 BST 2009 Duncan Coutts <duncan at well-typed.com>
* Fix linking shared libs with parallel make
Unlike with static libs, when linking shared libs the dependencies
have to already exist. Add a dependency $1_$2_$3_LIBS : $1_$2_
$3_DEPS_LIBS
This one is is a hsc2hs patch:
Tue Apr 28 19:12:35 BST 2009 Duncan Coutts <duncan at well-typed.com>
* Fix make install DESTDIR=
It was installing the template data file directly
to $(datadir) rather than to $(DESTDIR)$(datadir)
-------------- next part --------------
Thu Apr 30 13:37:53 BST 2009 Duncan Coutts <duncan at well-typed.com>
* Fix linking shared libs with parallel make
Unlike with static libs, when linking shared libs the dependencies
have to already exist. Add a dependency $1_$2_$3_LIBS : $1_$2_$3_DEPS_LIBS
Thu Apr 30 14:56:37 BST 2009 Duncan Coutts <duncan at well-typed.com>
* Fix parallel make for libffi.
I didn't realise make can invoke the same action multiple
times in parallel if the rule has multiple targets. So go
back to using a build stamp file.
New patches:
[Fix linking shared libs with parallel make
Duncan Coutts <duncan at well-typed.com>**20090430123753
Unlike with static libs, when linking shared libs the dependencies
have to already exist. Add a dependency $1_$2_$3_LIBS : $1_$2_$3_DEPS_LIBS
] {
hunk ./rules/build-package-way.mk 23
+# The .a/.so library file, indexed by two different sets of vars:
+# the first is indexed by the dir, distdir and way
+# the second is indexed by the package id, distdir and way
hunk ./rules/build-package-way.mk 27
+$$($1_PACKAGE)-$($1_$2_VERSION)_$2_$3_LIB = $$($1_$2_$3_LIB)
+
+# All the .a/.so library file dependencies for this library
+$1_$2_$3_DEPS_LIBS=$$(foreach dep,$$($1_$2_DEPS),$$($$(dep)_$2_$3_LIB))
hunk ./rules/build-package-way.mk 38
-$$($1_$2_$3_LIB) : $$($1_$2_$3_HS_OBJS) $$($1_$2_dyn_C_OBJS) $$($1_$2_dyn_S_OBJS) $$(ALL_RTS_LIBS)
+$$($1_$2_$3_LIB) : $$($1_$2_$3_HS_OBJS) $$($1_$2_dyn_C_OBJS) $$($1_$2_dyn_S_OBJS) $$(ALL_RTS_LIBS) $$($1_$2_$3_DEPS_LIBS)
}
[Fix parallel make for libffi.
Duncan Coutts <duncan at well-typed.com>**20090430135637
I didn't realise make can invoke the same action multiple
times in parallel if the rule has multiple targets. So go
back to using a build stamp file.
] {
hunk ./libffi/ghc.mk 61
+libffi_STAMP_BUILD = libffi/stamp.ffi.build-shared
hunk ./libffi/ghc.mk 64
+libffi_STAMP_BUILD = libffi/stamp.ffi.build
hunk ./libffi/ghc.mk 144
-# All the libs that libffi's own build will generate
-libffi_ALL_LIBS = $(libffi_STATIC_LIB)
-ifeq "$(BuildSharedLibs)" "YES"
-libffi_ALL_LIBS += $(libffi_DYNAMIC_LIBS)
-endif
-ifeq "$(Windows)" "YES"
-libffi_ALL_LIBS += libffi/libffi.dll.a $(libffi_HS_DYN_LIB).a
-endif
-
-$(libffi_ALL_LIBS): $(libffi_STAMP_CONFIGURE)
+$(libffi_STAMP_BUILD): $(libffi_STAMP_CONFIGURE)
hunk ./libffi/ghc.mk 149
+$(libffi_STATIC_LIB): $(libffi_STAMP_BUILD)
hunk ./libffi/ghc.mk 171
+libffi/libffi.dll.a $(libffi_HS_DYN_LIB): $(libffi_STAMP_BUILD)
hunk ./libffi/ghc.mk 182
+$(libffi_DYNAMIC_LIBS): $(libffi_STAMP_BUILD)
}
Context:
[FIX build: add dependencies on ghc_boot_platform.h
Simon Marlow <marlowsd at gmail.com>**20090430100245
Ignore-this: b9bd4f40f4b6789eee500626b9ef6e2c
]
[Tweak ghc-cabal
Ian Lynagh <igloo at earth.li>**20090429183728]
[Add special support for haskeline
Ian Lynagh <igloo at earth.li>**20090429181909
The library uses stuff in Setup.hs to determine whether or not it needs
to use -liconv. This patch replicates that logic in ghc-cabal. This
isn't pretty, and we should find a better way to do it, but it works
for now.
]
[In mkdependC.prl, create temp files properly
Ian Lynagh <igloo at earth.li>**20090429151215
Avoids a race condition, where one run deletes/overwrites the temp file
of another.
]
[Use haskeline, rather than editline, for line editing in ghci
Ian Lynagh <igloo at earth.li>**20090429005838]
[Fix error handling
Ian Lynagh <igloo at earth.li>**20090428232848
After the fix to #2500, we could get "Failing due to -Werror." but no
warnings printed. Now we don't fail in that case.
]
[move nofib settings here from ghc's config.mk
Simon Marlow <marlowsd at gmail.com>**20090428125551
Ignore-this: a2eb9d0094fe10446b74987af44a6005
]
[add missing eventlog subdir
Simon Marlow <marlowsd at gmail.com>**20090428125528
Ignore-this: 127bc2a6bc9fa29871a19ad99ddb346e
]
[move runstdtest into nofib
Simon Marlow <marlowsd at gmail.com>**20090428124505
Ignore-this: 98eae5d994693ed8235e8693f3615899
]
[Prevent haddock docs being built when HADDOCK_DOCS=NO
Duncan Coutts <duncan at well-typed.com>**20090429160230]
[Clean up building of libffi for dynamic lib way
Duncan Coutts <duncan at well-typed.com>**20090429153002
And depend on it at the top level when we're using dynamic libs.
]
[Build library packages as shared libs
Duncan Coutts <duncan at well-typed.com>**20090429151553
when we configure ghc with --enable-shared
]
[Build the rts as a shared lib correctly
Duncan Coutts <duncan at well-typed.com>**20090429143131
That is, build it as a .so/.dll rather than as libHSrts_dyn.a
]
[Don't actually build ghc itself with -dynamic
Duncan Coutts <duncan at well-typed.com>**20090429142940
For now, with --enable-shared we'll build the libs shared,
but ghc itself will still be statically linked.
In any case, we would want to be able to build it both
ways so it's easy to test both.
]
[Add a new $way_libsuf variable for library suffix+extension
Duncan Coutts <duncan at well-typed.com>**20090428123529
This allows the library file type to depend on the way. This is needed
to use .so/.dll libs for the "dyn" way rather than always using .a libs.
For example: thr_debug_dyn_libsuf="_thr_debug-ghc6.11.20090426.so"
]
[extend the rules/c-objs macro to take the way as a parameter
Duncan Coutts <duncan at well-typed.com>**20090428123452
Previously we only built library package "cbits" the vanilla way, afterall
C code does not need to be built differently for profiling builds. However
for dynamic libs the C code needs to be built with -fPIC, so we do need
to be able to build package .c (and .s?) files multiple ways.
]
[improve the finalizer callback error message
Simon Marlow <marlowsd at gmail.com>**20090428085345
Ignore-this: 3255e17c98b3c9cf591b71d6023592b8
]
[Add a header to all build system files:
Simon Marlow <marlowsd at gmail.com>**20090428085233
Ignore-this: 49aa394badd4f17dc17aa3a26085ddba
# -----------------------------------------------------------------------------
#
# (c) 2009 The University of Glasgow
#
# This file is part of the GHC build system.
#
# To understand how the build system works and how to modify it, see
# http://hackage.haskell.org/trac/ghc/wiki/Building/Architecture
# http://hackage.haskell.org/trac/ghc/wiki/Building/Modifying
#
# -----------------------------------------------------------------------------
]
[more cleaning
Simon Marlow <marlowsd at gmail.com>**20090428084919
Ignore-this: e41e0dcbef3d410ca5d6a2ff8e433cc8
]
[todo updates
Simon Marlow <marlowsd at gmail.com>**20090427152529
Ignore-this: b476fdb991b7b229d4aa837aa6d45216
]
[remove commentary that is now in the wiki
Simon Marlow <marlowsd at gmail.com>**20090427144743
Ignore-this: e9f6bec77aa99a3c1b49ada0bf4ca9ad
]
[remove ticket todos
Simon Marlow <marlowsd at gmail.com>**20090427144406
Ignore-this: 7de6ea0d0ecfc1ca51d75090074dcdd9
]
[require gcc 3.0+ (see #2770)
Simon Marlow <marlowsd at gmail.com>**20090427134322
Ignore-this: 4844e99c80bdd0f9a6bdd34bae46748b
]
[update build order comment
Simon Marlow <marlowsd at gmail.com>**20090427124711
Ignore-this: 96be57ee425cb4d5a916960273aefe87
]
[Equality constraint solver is now externally pure
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090427140316
Ignore-this: bd7c31a7d9e62437e4d83f70b48220af
- This patch changes the equality constraint solver such that it does not
instantiate any type variables that occur in the constraints that are to be
solved (or in the environment). Instead, it returns a bag of type bindings.
- If these type bindings (together with the other results of the solver) are
discarded, solver invocation has no effect (outside the solver) and can be
repeated (that's imported for TcSimplifyRestricted).
- For the type bindings to take effect, the caller of the solver needs to
execute them.
- The solver will still instantiate type variables thet were created during
solving (e.g., skolem flexibles used during type flattening).
See also http://hackage.haskell.org/trac/ghc/wiki/TypeFunctionsSolving
]
[Do not link ghc stage1 using -threaded, only for stage2 or 3
Duncan Coutts <duncan at well-typed.com>**20090428104924
We link stage1 using the bootstrapping compiler and there's
no guarantee that it has working support for threaded
]
[Improve the error message when we find a module in 2 places; trac #3183
Ian Lynagh <igloo at earth.li>**20090426160204]
[Remove a comment (a bug to close, that has now been closed)
Ian Lynagh <igloo at earth.li>**20090426151942]
[GHC new build system megapatch
Ian Lynagh <igloo at earth.li>**20090426114215]
[Fix SPARC build, missing #include
Ben.Lippmeier at anu.edu.au**20090425083345]
[Fix a lint failure when we have a ! (# ... #) pattern in a where clause
Ian Lynagh <igloo at earth.li>**20090424173313
This showed up when converting ds057 to follow the new bang pattern rules,
in #2806.
]
[Do the second part of #2806: Disallow unlifted types in ~ patterns
Ian Lynagh <igloo at earth.li>**20090424150519]
[Tiny refactor
Ian Lynagh <igloo at earth.li>**20090424140227]
[Require a bang pattern when unlifted types are where/let bound; #3182
Ian Lynagh <igloo at earth.li>**20090424124754
For now we only get a warning, rather than an error, because the alex
and happy templates don't follow the new rules yet.
]
[Don't short out top-level indirections if there's a INLINE/NOINLINE pragma
simonpj at microsoft.com**20090424123238
Ignore-this: 422a4256a63c93a0bf806cbfa564ec69
The top-level indirection-shorting, done in SimplCore.shortOutIndirections,
was accidentally nuking a NOINLINE pragma. This patch adopts a slightly
more conservative approach to indirection-shorting, only doing so if
we do not thereby overwrite or lose some user-supplied pragmas.
]
[Fix #3182: 64 bit FP value returned by C calls was getting trashed
Ben.Lippmeier at anu.edu.au**20090424065053
Ignore-this: 529bfd2bfb663a70e1345a0089737496
movss instruction was being used to move the result into the
destination register instead of movsd
]
[add missing files (part of #3171 fix)
Simon Marlow <marlowsd at gmail.com>**20090424091610
Ignore-this: 3d11fe878c873529906f67e930c46c2c
]
[Tiny optimisation to mkInlineMe
simonpj at microsoft.com**20090424074733
Ignore-this: be1e8ed22a82f1dc348b1e047a986d8b
]
[Add EVENT_CREATE_SPARK_THREAD to replace EVENT_SPARK_TO_THREAD
Simon Marlow <marlowsd at gmail.com>**20090423141940
Ignore-this: 173128c92c20e6a85d6611355fb5273a
Also some tidyups and renaming
]
[add getOrSetSignalHandlerStore, much like getOrSetTypeableStore
Simon Marlow <marlowsd at gmail.com>**20090423113002
Ignore-this: d9dcb835444cae366aa8f6bcf68fd191
Part of the fix for #3171
]
[don't overwrite io_manager_pipe if it is already set
Simon Marlow <marlowsd at gmail.com>**20090423112939
Ignore-this: 8e7d94a051b4b3daec89ea3103678550
Part of the fix for #3171
]
[Simplify the placeholder binding for naughty record selectors
simonpj at microsoft.com**20090423094401
Ignore-this: 50dca18eeaa60e24319ed75dabf55bab
]
[Fix Trac #3176: intercept naughty record selectors
simonpj at microsoft.com**20090423094237
Ignore-this: 1aab5295a20191d8a56364f1fbf2e765
When making record selectors into ordinary functions (rather than
magial implicit Ids) I forgot that they could therefore show up in
the *local* TcEnv, not the global one. This fixes that problem,
and thereby Trac #3176.
]
[Better pretty-printing for IdDetails
simonpj at microsoft.com**20090423093945
Ignore-this: 34721cec14f1ad33838f12bfc7851a48
]
[FIX #3166: include the fixity of classes and type synonyms in their fingerprints
Simon Marlow <marlowsd at gmail.com>**20090421135624
Ignore-this: 5390a8fb76bf1f3133f08277a978cb2
]
[FIX #2682: banish silly cases of the "module Foo is not loaded" error
Simon Marlow <marlowsd at gmail.com>**20090421131038
Ignore-this: 15298691a63e13c63a68673202b1fc18
In GHCi if you say 'import Foo' meaning to load a package module Foo,
and Foo.hs is found on the search path, then GHCi replies "module Foo
is not loaded", because it knows Foo refers to the source file rather
than the package module, and you haven't loaded that module with
:load.
This is consistent with the usual module-finding semantics. However,
it isn't particularly useful. And it leads to silly problems like not
being able to start GHCi when you happen to be sitting in
libraries/base, because GHCi thinks the Prelude hasn't been loaded.
So now I've made a slight change to the way that 'import M' works: if
M is loaded, then it refers to the loaded module, otherwise it looks
for a package module M. This does what the reporter of #2682 wanted,
and since it turns an error condition into meaningful behaviour it
can't break anything.
The only undesirable consequence is that 'import M' might refer to a
different M than ':load M'. Hopefully that won't lead to confusion.
]
[FIX #2500: Don't log warnings in getHeader
Simon Marlow <marlowsd at gmail.com>**20090421100039
Ignore-this: 24a8e8c2dca64dcd592d53fd7468eed5
]
[add a DO NOT EDIT comment
Simon Marlow <marlowsd at gmail.com>**20090421094606
Ignore-this: d0e81a968fe38918d2830dcf1186f61c
]
[FIX #3153: we lost an EOF sentinel in the event of a lexical error
Simon Marlow <marlowsd at gmail.com>**20090421094558
Ignore-this: e30401ca719605a6991e9c8a31821eba
]
[FIX #2845: Allow breakpoints on expressions with unlifted type
Simon Marlow <marlowsd at gmail.com>**20090420142525
Ignore-this: 8d1b2624a4635b421032463219af604e
It turns out we can easily support breakpoints on expressions with
unlifted types, by translating
case tick# of _ -> e
into
let f = \s . case tick# of _ -> e
in f realWorld#
instead of just a plain let-binding. This is the same trick that GHC
uses for abstracting join points of unlifted type.
In #2845, GHC has eta-expanded the tick expression, changing the
result type from IO a to (# State#, a #), which was the reason the
tick was suddenly being ignored. By supporting ticks on unlifted
expressions we can make it work again, although some confusion might
arise because _result will no longer be available (it now has
unboxed-tuple type, so we can't bind it in the environment). The
underlying problem here is that GHC does transformations like
eta-expanding the tick expressions, and there's nothing we can do to
prevent that.
]
[remove now-unused atomic_modify_mutvar_mutex
Simon Marlow <marlowsd at gmail.com>**20090403132731
Ignore-this: d27c29bdd8a4c43b384e278fb192138e
]
[SPARC NCG: Add a comment explaining why we can't used a pinned reg for gct
Ben.Lippmeier at anu.edu.au**20090420074335
Can't use windowed regs because the window moves during a function
call. Can't use the global regs because they're reserved for other purposes.
]
[SPARC NCG: validate fixes
Ben.Lippmeier at anu.edu.au**20090420032120
Ignore-this: 4df988a6b3c005de741a300313104408
]
[SPARC NCG: Base freeRegs on includes/MachRegs.h again
Ben.Lippmeier at anu.edu.au**20090420020700]
[Really fix Trac #2611 this time
pepe iborra <mnislaih at gmail.com>**20090419142241
My previous patch didn't completely solve the problem.
I believe I got it right this time.
]
[Fix Trac #2611
pepe iborra <mnislaih at gmail.com>**20090418214115
Fix a bug in :print affecting data types with unboxed components
]
[Fix #3170: Allow coalescing of the same node during register allocation.
Ben.Lippmeier at anu.edu.au**20090418082253
Ignore-this: b3a14959d7616fd53c3334a4f0b30f48
The x86 code generator sometimes generates nop moves like
movl %vI_a %vI_a, but we'll just ignore them for coalescing
purposes instead of emitting an error. It shouldn't hurt anything.
]
[Fix my previous patch about type parsing
David Waern <david.waern at gmail.com>**20090418082927
I forgot to record some additional changes.
]
[Simplify the type grammar
David Waern <david.waern at gmail.com>**20090417145855
Simon P-J suggested the following simplifications in #3097:
* Allow nested foralls in `ctype` just like in `ctypedoc`.
* Use `gentype` rather than `type` in the LHS of type declarations.
* Inline `type` in `ctype`.
* Rename `gentype` to `type`.
This patch does this. Also, the equivalent thing is done for documented types.
]
[Removed unused function postEventTypeID.
donnie at darthik.com**20090413011745
Ignore-this: cbab58da40e0d3b6d124347b9fda8e4
postEventTypeID was used to post event marker IDs, but instead we just
call postWord16 directly; thus, this function is unused.
]
[For consistency, changed access of thread id to be through capability instead of directly from StgRegTable.
donnie at darthik.com**20090413011701
Ignore-this: dd38adce264aa882be0a4daf7c8c7378
]
[Added new EventLog event: Spark to Thread.
donnie at darthik.com**20090413011444
Ignore-this: d38be4d01d76297953d6ed075896cb97
]
[Changed postEvent last argument from "nat from" to "StgWord64 other".
donnie at darthik.com**20090413011140
Ignore-this: b7991c781c09d7a631230740cd8b1fe6
StgWord64 other better represents this argument since it can be used as
any particular data, thus "other" and not the "from" capability as it was
previously strictly used. Also, StgWord64 is normally larger than type
nat to allow for larger data to be passed through the "other" argument.
]
[Fixed ThreadID to be defined as StgThreadID, not StgWord64. Changed CapabilityNum to CapNo. Added helper functions postCapNo() and postThreadID().
donnie at darthik.com**20090413010705
Ignore-this: dde2f442f9d5e43f20f52069dee4f8c0
ThreadID was StgWord64, but should have been StgThreadID, which is
currently StgWord32. Changed name from CapabilityNum to CapNo to better
reflect naming in Capability struct where "no" is the capability number.
Modified EventLog.c to use the helper functions postCapNo() and
postThreadID () for CapNo and ThreadID.
]
[Fixed error in order of EventTypeDescriptions -- seq and par GC come after start and finish GC.
donnie at darthik.com**20090403034322
Ignore-this: 98c0367103ab7892980d9a17d442584e
EventTypeDescriptions order must be synchronized with the event type
definitions in includes/EventLogFormat.h for the definitions to correctly
index with the matching description.
]
[Eventlog support for new event type: create spark.
donnie at darthik.com**20090403033025
Ignore-this: 1da2a5eb13c7c64132234323e2acb514
]
[Tweak a Show instance
Ian Lynagh <igloo at earth.li>**20090407143057]
[Fix Trac #3155: better error message when -XRankNTypes is omitted
simonpj at microsoft.com**20090409144004
Ignore-this: fc9d3035cd461c8a892332facd86c7da
This patch sligtly re-adjusts the way in which the syntax of types
is handled:
* In the lexer, '.' and '*' are always accepted in types
(previously it was conditional). This things can't mean
anything else in H98, which is the only reason for doing things
conditionally in the lexer.
* As a result '.' in types is never treated as an operator.
Instead, lacking a 'forall' keyword, it turns into a plain parse error.
* Test for -XKindSignatures in the renamer when processing
a) type variable bindings
b) types with sigs (ty :: kind-sig)
* Make -XKindSignatures be implied by -XTypeFamilies
Previously this was buried in the conditonal lexing of '*'
]
[Use return instead of returnM, and similar tidy-ups
simonpj at microsoft.com**20090409140959
Ignore-this: 987baeb20a3ff9f07c7a103ca5258c70
]
[Don't use thread local storage on x86/not-Linux
Ian Lynagh <igloo at earth.li>**20090404003445
With the
On x86, use thread-local storage instead of stealing a reg for gct
patch, on Windows and OS X:
error: thread-local storage not supported for this target
]
[Make some showSDoc's use OneLineMode rather than PageMode
Ian Lynagh <igloo at earth.li>**20090331181948]
[Make the showSDoc definition more explicit
Ian Lynagh <igloo at earth.li>**20090331174103]
[eliminate warnings
dias at eecs.tufts.edu**20090403203429]
[Debugging by Sesame Street:
dias at eecs.tufts.edu**20090403201504
One of these things is not like the others:
stdPattern :: [LRep] -> Maybe StgHalfWord
stdPattern reps
= case reps of
[] -> Just ARG_NONE -- just void args, probably
[N] -> Just ARG_N
[P] -> Just ARG_N
[F] -> Just ARG_F
[D] -> Just ARG_D
[L] -> Just ARG_L
Today's debugging session was brought to you by the letter P.
]
[Buggy optimizations caused function-call return to share the function's entry point
dias at eecs.tufts.edu**20090331144639
- Block concat and branch-chain elimination were allowing a function call
to return to the caller's entry point. But that doesn't leave anywhere
for the infotable on the stack, since the SP on return must be the same
as the SP on entry to the procedure.
]
[Better handling of node parameter in calling conventions
dias at eecs.tufts.edu**20090325163815
- Previously, the node was taken as a parameter, then ignored,
for static closures. Goofy. Now, the vestigial node parameters
are gone.
]
[When calling gc, avoid saving node in static closures
dias at eecs.tufts.edu**20090323204744]
[Code simplifications due to call/return separation; some improvements to how node argument is managed
dias at eecs.tufts.edu**20090323201140]
[Code simplification due to separate call/return conventions
dias at eecs.tufts.edu**20090323182214]
[Calls with and without passing node arguments more clearly separated
dias at eecs.tufts.edu**20090323174700]
[Another small step: call and return conventions specified separately when making calls
dias at eecs.tufts.edu**20090323172837]
[Small step toward call-conv improvement: separate out calls and returns
dias at eecs.tufts.edu**20090323170706]
[On x86, use thread-local storage instead of stealing a reg for gct
Simon Marlow <marlowsd at gmail.com>**20090403121816
Ignore-this: b132a4c2f56a955adb8537442ca8eb0f
Benchmarks show that using TLS instead of stealing a register is
better by a few percent on x86, due to the lack of registers.
This only affects -threaded; without -threaded we're (now) using
static storage for the GC data.
]
[in the non-threaded RTS, use a static gc_thread structure
Simon Marlow <marlowsd at gmail.com>**20090403121443
Ignore-this: 631365db4f9ec7c87f71e0ac851cdfc
]
[small GC optimisation
Simon Marlow <marlowsd at gmail.com>**20090403083708]
[add -funroll-loops when compiling the parallel version of Evac.c too
Simon Marlow <marlowsd at gmail.com>**20090402105643
Ignore-this: c120d5f5ea961e10acad457fd871ba53
]
[PACKAGE_CPP_OPTS += -DPAPI_INCLUDE_DIR=""
Simon Marlow <marlowsd at gmail.com>**20090402105540
Ignore-this: 4136707371784c791c435ae4f562a500
unbreaks ghc-pkg check in an installed GHC
]
[Adjust inlining heursitics
simonpj at microsoft.com**20090403084634
Ignore-this: a2d6849726f6705e06941c74137bfe7e
This patch is the result of a long series of nofib-based experiments
to improve GHC's inlining heuristics.
In the end, I'm not sure how worthwhile it all was: I only got a
1% decrease in code size
1% decrease in allocation
and I don't trust the runtime statistics enough to quote.
Still, in doing all this I tidied up the code quite a bit, and
I understand it much better now, so I'm going to commit it.
The main changes are in CoreUnfold, which has lots of new comments.
Other changes:
- litSize moves from Literal to CoreUnfold
- interestingArg moves from SimplUtils to CoreUnfold
- the default unfolding threshold (in StaticFlags)
reduces from 8 to 6 (since the size calculation
has changed a bit)
]
[Worker/wrapper should make INLINE if it doesn't w/w
simonpj at microsoft.com**20090403084333
Ignore-this: 5ef3c02c272ad59616fa7dfaa0dc0381
If worker/wrapper decides not to w/w something on the grounds that
it's too small, it should add an INLINE pragma. Otherwise, later
in the day that small thing might now be big, and we'd wish we'd
done the w/w after all. This only made a difference in one nofib
program (bspt), but it's an easy change.
See Note [Don't w/w inline things (a) and (b)]
]
[Rewrite a good chunk of CoreArity
simonpj at microsoft.com**20090403083655
Ignore-this: 314d26ad8f2d4437e11148b58e35d731
I found a couple of shortcomings in arity computation, and did
quite a bit of refactoring as a result. Regrettably, I have
forgotten the details, but I do remember that one part was to
do with the infamous "state hack". If we're going to use the
state-hack at all, we'd better do it right.
Anyway I think this is an improvement. The comments are more
up to date too, and more voluminous.
]
[Comments only; record remarks about removing 'type' nonterminal
simonpj at microsoft.com**20090402165226
Ignore-this: 82f93bd161ee48c0a745fb58247afec0
]
[Don't float case expressions in full laziness
simonpj at microsoft.com**20090402165101
Ignore-this: 356f0fc77301283116a669ed76478c4
See Note [Case MFEs]; don't float case expressions from
a strict context.
]
[Fix Trac #3118: missing alternative
simonpj at microsoft.com**20090402152834
Ignore-this: 9a9866ad88eae871cb98c6795c12349b
This patch fixes a rather obscure bug, whereby it's possible
for (case C a b of <alts>) to have altenatives that do not inclue
(C a b)! See Note [Unreachable code] in CoreUtils.
]
[Use a local interestingDict function instead of importing SimplUtils.interestingArg
simonpj at microsoft.com**20090402152246
Ignore-this: d01d1a42067c2f907a1f2fb2ddec4ada
I'm changing the details of SimplUtils.interstingArg, and don't want to
mess up the way Specialise works, so this patch makes a specilialised
(ha) function, Specialise.interestingDict, that is used locally.
]
[Better panic reporting
simonpj at microsoft.com**20090402151846
Ignore-this: abbd0ab8e2e8771012c17e0fc66fed41
Make idDetails and idInfo into proper functions, rather than record
fields, so that we can report more informatively if you use thenm on
a non-Id.
]
[Fix pragmas in binder-swapping
simonpj at microsoft.com**20090402151616
Ignore-this: 422672152247c7732c56e850f3317546
In the case binder-swap operation (which is done in OccurAnal),
we deliberately use shadowing. But the new shadowing binder should
not inherit any fancy INLINE or NOINLINE pragmas from its parent.
]
[Float constants to top-level even in first full laziness pass
simonpj at microsoft.com**20090402151406
Ignore-this: c81a6d62b760d50348aaa5de0276d7c6
This patch changes the compilation pipeline flags so that constants
are floated to the top level even in the first full laziness pass.
For some reason this was not done before. Fixing this makes a big
improvement in 'spectral/rewrite', and has zero effect on any other
nofib benchmark.
]
[update the intro section
Simon Marlow <marlowsd at gmail.com>**20090401105256
Ignore-this: 90aba333b501ecdedca5116d7204e47f
]
[Remove the "Installing GHC" section
Simon Marlow <marlowsd at gmail.com>**20090401103418
Ignore-this: 94b8c9bcb8a93442ae19f9547f545f74
1. it was out of date in various ways
2. this is not the place people look for installation instructions
3. we have installation instructions elsewhere (e.g. the INSTALL
file in a binary distribution)
4. the section "layout of installed files" is now on the wiki under
Building/Installing.
]
[SPARC: Fix ffi019 split load/store of HsInt64 into two parts to respect alignment constraints
Ben.Lippmeier at anu.edu.au**20090331045145]
[SPARC NCG: Fix 64 bit addition, carry bit wasn't getting set.
Ben.Lippmeier at anu.edu.au**20090330051732]
[SPARC NCG: When getting a 64 bit word, promote halves to 64 bit before shifting
Ben.Lippmeier at anu.edu.au**20090330050346]
[SPARC NCG: HpLim is now always stored on the stack, not in a register
Ben.Lippmeier at anu.edu.au**20090331051900
This fixes the out of memory errors we were getting on sparc
after the following patch:
Fri Mar 13 03:45:16 PDT 2009 Simon Marlow <marlowsd at gmail.com>
* Instead of a separate context-switch flag, set HpLim to zero
Ignore-this: 6c5bbe1ce2c5ef551efe98f288483b0
This reduces the latency between a context-switch being triggered and
the thread returning to the scheduler, which in turn should reduce the
cost of the GC barrier when there are many cores.
]
[Allow Haddock comments in type synonyms
David Waern <david.waern at gmail.com>**20090331212306
Ignore-this: 11f1bad22d25d8d0017580d020c1aa5d
We now use `ctypedoc` instead of `ctype` for type synonyms. `ctypedoc` was
previously only used for top-level type signatures. This change means that type
synonyms now can contain comments, just like top-level type signatures.
Note:
* I've modified `ctypedoc` so it allows implicit parameters and equational
constraints, just like ctype.
* Since `ctypedoc` allows nested foralls, we now allow that in type synonyms.
* I have inlined some productions into gentypedoc so that there is now a
non-doc version of every production with a 'doc' suffix. (Stylistic change
only, which should make the code easier to follow).
* It would have been nice to simplify the grammar by unifying `ctype` and
ctypedoc` into one production, allowing comments on types everywhere (and
rejecting them after parsing, where necessary). This is however not possible
since it leads to ambiguity. The reason is the support for comments on record
fields:
> data R = R { field :: Int -- ^ comment on the field }
If we allow comments on types here, it's not clear if the comment applies
to 'field' or to 'Int'. So we must use `ctype` to describe the type.
]
[mkErrorAppDs now takes an SDoc rather than a String
Ian Lynagh <igloo at earth.li>**20090331134058
This avoids some showSDoc's where the String then gets converted back
into an SDoc.
]
[FIX #1779 and qq005: export hs_hpc_module
Simon Marlow <marlowsd at gmail.com>**20090330084414
Ignore-this: cacd10985619c25505f0e48400187ccc
]
[go back to using $CPUS + 1 for the number of threads to use
Simon Marlow <marlowsd at gmail.com>**20090330083032
Ignore-this: 2c1915e2c13b953513a2c16cc86a7073
]
[use a UniqSet for is MathFun, this list is getting quite large
Simon Marlow <marlowsd at gmail.com>**20090330082957
Ignore-this: ceaf912ed4ec0d778178e2391715c689
]
[Fix an nasty black hole, concerning computation of isRecursiveTyCon
simonpj at microsoft.com**20090330084912
Ignore-this: 3bf163be6629cb933a3be1564ac2b0cc
Fixing #246 (pattern-match order in record patterns) made GHC go into
a black hole, by changing the order of patterm matching in
TyCon.isProductTyCon! It turned out that GHC had been avoiding the
black hole only by the narrowest of margins up to now!
The black hole concerned the computation of which type constructors
are recursive, in TcTyDecls.calcRecFlags. We now refrain from using
isProductTyCon there, since it triggers the black hole (very
indirectly). See the "YUK YUK" comment in the body of calcRecFlags.
As it turns out, the fact that TyCon.isProductTyCon matched on the
algTcRec field was quite redundant, so I removed that too. However,
without the fix to calcRecFlags, this wouldn't fix the black hole
because of the use of isRecursiveTyCon in BuildTyCl.mkNewTyConRhs.
Anyway, it's fine now.
]
[Add an extra print to -ddump-tc-trace
simonpj at microsoft.com**20090330084835
Ignore-this: 4197fee2974d94a30af97549a858a44
]
[Remove dead code (dataConsStupidTheta)
simonpj at microsoft.com**20090330084739
Ignore-this: 56a6f274aa7194f614a34f664c6e80af
]
[Fix Trac #246: order of matching in record patterns
simonpj at microsoft.com**20090330083736
Ignore-this: 2f0a008e0086cfe7ac5100d4253f4fb1
While I was looking at the desugaring of pattern matching (fixing
Trac #3126) I finally got around to fixing another long-standing bug:
when matching in a record pattern, GHC should match left-to-right in
the programmer-specfied order, *not* left-to-right positionally in
the original record declaration.
Needless to say, that requires a little more code.
See Note [Record patterns] in MatchCon.lhs
]
[Fix Trac #3126: matching overloaded literals
simonpj at microsoft.com**20090330083435
Ignore-this: 560c5e7dba95400bef4a73569ea26b82
Claus Reinke uncovered a long-standing bug in GHC, whereby we were
combining the pattern-match on overloaded literals, missing the fact
that an intervening pattern (for a different literal) might also
match. (If someone had a very odd implementation of fromInteger!)
See Note [Grouping overloaded literal patterns] in Match.lhs
If this merges smoothly to 6.10, go for it, but it's very much
a corner case.
Thank you Claus!
]
[White space cosmetics only
simonpj at microsoft.com**20090330083103
Ignore-this: c52ebfa8f85e81abcd8694b3a30c6a63
]
[Improve mkDupableCont; and fix Trac #3116
simonpj at microsoft.com**20090325095205
It turns out that, as a result of a change I made a few months ago to
the representation of SimplCont, it's easy to solve the optimisation
challenge posed by Trac #3116. Hurrah.
Extensive comments in Note [Duplicating StrictArg].
]
[Avoid quadratic complexity in occurrence analysis (fix Trac #1969)
simonpj at microsoft.com**20090323103826
The occurrence analyser could go out to lunch in bad cases, because
of its clever loop-breaking algorithm. This patch makes it bale out
in bad cases. Somewhat ad-hoc: a nicer solution would be welcome.
See Note [Complexity of loop breaking] for the details.
]
[Improve arity propagation in the specialiser
simonpj at microsoft.com**20090323101614
This patch makes the specialiser propagate arities a bit more
eagerly, which avoids a spurious warning in the simplifier.
See Note [Arity decrease] in Simplify.lhs
]
[check for ThreadRelocated in checkBlackHoles()
Simon Marlow <marlowsd at gmail.com>**20090326140343
Ignore-this: 5d63f26567030cf0ccfa33da82702f86
]
[syb no longer needs to be wired in
Ian Lynagh <igloo at earth.li>**20090326130517]
[Template Haskell: added bang patterns
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090326100208
Ignore-this: f15890cd7ee7fee664af342796780443
]
[Template Haskell: support for kind annotations
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090326085520
Ignore-this: 722c23eac614089d24a8e8373a13de3b
]
[update list of C math functions
Bertram Felgenhauer <int-e at gmx.de>**20090323183630
Ignore-this: af5fa15d957d853d27a0c4b465c2419e
Fix via C compilation of modules that import, say, log1p from math.h (#3117)
The list is based on preprocessing Stg.h with glibc 2.6.1 headers, and
cross-checked with the ISO C 99 standard (draft).
]
[Template Haskell: make reify aware of type families
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090325033447
Ignore-this: 4b9c2d626e7c506a74331bb91d0fcff7
- Reifying a type family returns a TH family declaration
- Reifying a data constructor from a data instance attributes that
constructor to the family (not the representation tycon)
- Ideally, we should have facilities to reify all type/data instances of a
given family (and the same for instances of a class). I haven't added that
here as it involves some API design.
]
[Template Haskell: support for INLINE and SPECIALISE pragmas
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090324232940
Ignore-this: 1f6c2e0de01842da7c9384d3ccafcb63
]
[fix an fprintf that should be fputs (quiets gcc)
Simon Marlow <marlowsd at gmail.com>**20090322195441]
[check return value of write (quiets gcc)
Simon Marlow <marlowsd at gmail.com>**20090322195319]
[Fix locking in evacuate_large() (FIX openfile008(threaded2))
Simon Marlow <marlowsd at gmail.com>**20090323092953
Ignore-this: 2c6c2790676c3bcd40f0a0b6030d31dc
]
[Please the -Wall police by moving a variable declaration; really FIX getNumberOfProcessors() for MacOS X
Austin Seipp <mad.one at gmail.com>**20090320124846
Ignore-this: fcd0015e0923855df814f55d88770db2
]
[wibble in setExecutable
Austin Seipp <mad.one at gmail.com>**20090320120043
Ignore-this: 968aa9856a5494e4e58ca8a20106298f
]
[FIX getNumberOfProcessors() on MacOS X
Austin Seipp <mad.one at gmail.com>**20090318023127
Ignore-this: 8df07f3353a8e12be9becf4b855d5fdf
This checks if darwin_HOST_OS is defined and, if so, we call
sysctlbyname() on the "hw.ncpu" property to get the processor count.
]
[Work around Solaris's grep not supporting -q
Ian Lynagh <igloo at earth.li>**20090319171501]
[Some wording wibbles from Thorkil
Ian Lynagh <igloo at earth.li>**20090319165916]
[Fix bug in setThreadAffinity() (Linux)
Simon Marlow <marlowsd at gmail.com>**20090320100446
Ignore-this: 6e8b430fe03959f7e7f8c641d5a589f6
]
[Implement setThreadAffinity for Mac OS X (from 10.5)
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090320071347
Ignore-this: d5e2104b4a011fc98500527741c5e7a7
]
[Fix warnings with older versions of gcc (3.4.5)
Simon Marlow <marlowsd at gmail.com>**20090319124932]
[wibble for getNumberOfProcessors
Simon Marlow <marlowsd at gmail.com>**20090318165936
Ignore-this: 60a776b8250590f72e45c941b810f14a
]
[Set thread affinity with +RTS -qa (only on Linux so far)
Simon Marlow <marlowsd at gmail.com>**20090318154719
Ignore-this: a799d276f29dd24c655e1f423eb6743e
]
[Template Haskell support for equality constraints
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090319132347
Ignore-this: 2a0150d9466b0552c5094cdcdc08dbe5
]
[add missing case in ENTER() (fixes readwrite002(profasm) crash)
Simon Marlow <marlowsd at gmail.com>**20090319102126
Ignore-this: 5599d4df888e830a8865e57e6745e094
]
[FIX unregisterised build
Simon Marlow <marlowsd at gmail.com>**20090319100954
Ignore-this: 97f15b77b030f1f26b0827e6335a8251
]
[Template Haskell: support for type family declarations
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090319084306
Ignore-this: b9f5f5af61a5da53dc4326f380fdb72e
]
[Comment explaining use of seq in DFMonad
dias at eecs.tufts.edu**20090318210138]
[FIX unregisterised target by #ifdefing targetPlatform stuff
Simon Marlow <marlowsd at gmail.com>**20090318151255
Ignore-this: 916b3929d0edcd18951591a35e0cc99
I'm not sure if this is the correct fix. If targetPlatform is really
NCG-specific, then maybe we should call it asmTargetPlatform or
something.
]
[Removed a trace
dias at eecs.tufts.edu**20090318151343]
[Calling convention bug and cleanup
dias at eecs.tufts.edu**20090317204238
- yet another wrong calling convention; this one was a special case for returning one
value.
]
[Inconsistent type and arguments in safe foreign calls...
dias at eecs.tufts.edu**20090316214654
- The function argument was stripped from the argument list but not from the type.
Now they're both stripped.
]
[stack overflows and out of memory's
dias at eecs.tufts.edu**20090316213506
1. Stack overflow fixed by making dataflow monad strict in the state.
2. Out of memory fixed by "forgetting" lastoutfacts in the dataflow monad
where we should. We were creating an unnecessarily long list that grew
exponentially...
]
[Add the notion of "constructor-like" Ids for rule-matching
simonpj at microsoft.com**20090318105911
Ignore-this: 9249b00a2292563e68d5d715376b216c
This patch adds an optional CONLIKE modifier to INLINE/NOINLINE pragmas,
{-# NOINLINE CONLIKE [1] f #-}
The effect is to allow applications of 'f' to be expanded in a potential
rule match. Example
{-# RULE "r/f" forall v. r (f v) = f (v+1) #-}
Consider the term
let x = f v in ..x...x...(r x)...
Normally the (r x) would not match the rule, because GHC would be scared
about duplicating the redex (f v). However the CONLIKE modifier says to
treat 'f' like a constructor in this situation, and "look through" the
unfolding for x. So (r x) fires, yielding (f (v+1)).
The main changes are:
- Syntax
- The inlinePragInfo field of an IdInfo has a RuleMatchInfo
component, which records whether or not the Id is CONLIKE.
Of course, this needs to be serialised in interface files too.
- The occurrence analyser (OccAnal) and simplifier (Simplify) treat
CONLIKE thing like constructors, by ANF-ing them
- New function coreUtils.exprIsExpandable is like exprIsCheap, but
additionally spots applications of CONLIKE functions
- A CoreUnfolding has a field that caches exprIsExpandable
- The rule matcher consults this field. See
Note [Expanding variables] in Rules.lhs.
On the way I fixed a lurking variable bug in the way variables are
expanded. See Note [Do not expand locally-bound variables] in
Rule.lhs. I also did a bit of reformatting and refactoring in
Rules.lhs, so the module has more lines changed than are really
different.
]
[Fixes to "Retract Hp *before* checking for HpLim==0"
Simon Marlow <marlowsd at gmail.com>**20090318111847
Ignore-this: 154a41eeb18a775465db29c818d1ec3a
]
[Add fast event logging
Simon Marlow <marlowsd at gmail.com>**20090317164214
Ignore-this: c470164a5e66dca06fddc2fe172025de
Generate binary log files from the RTS containing a log of runtime
events with timestamps. The log file can be visualised in various
ways, for investigating runtime behaviour and debugging performance
problems. See for example the forthcoming ThreadScope viewer.
New GHC option:
-eventlog (link-time option) Enables event logging.
+RTS -l (runtime option) Generates <prog>.eventlog with
the binary event information.
This replaces some of the tracing machinery we already had in the RTS:
e.g. +RTS -vg for GC tracing (we should do this using the new event
logging instead).
Event logging has almost no runtime cost when it isn't enabled, though
in the future we might add more fine-grained events and this might
change; hence having a link-time option and compiling a separate
version of the RTS for event logging. There's a small runtime cost
for enabling event-logging, for most programs it shouldn't make much
difference.
(Todo: docs)
]
[FIX biographical profiling (#3039, probably #2297)
Simon Marlow <marlowsd at gmail.com>**20090317144939
Ignore-this: 3b1d53fdf0f99c04e7d0055534baf52f
Since we introduced pointer tagging, we no longer always enter a
closure to evaluate it. However, the biographical profiler relies on
closures being entered in order to mark them as "used", so we were
getting spurious amounts of data attributed to VOID. It turns out
there are various places that need to be fixed, and I think at least
one of them was also wrong before pointer tagging (CgCon.cgReturnDataCon).
]
[Add getNumberOfProcessors(), FIX MacOS X build problem (hopefully)
Simon Marlow <marlowsd at gmail.com>**20090317093309
Ignore-this: 3de51351864f7276f3f887cca5385294
Somebody needs to implement getNumberOfProcessors() for MacOS X,
currently it will return 1.
]
[FIX #3093: stub filenames when using -osuf
Simon Marlow <marlowsd at gmail.com>**20090316203437
Ignore-this: 999de35952804c760462ae32cfdd04d5
Also remove some unused cruft
]
[Don't call processHeapClosureForDead on pinned blocks
Simon Marlow <marlowsd at gmail.com>**20090316160534
Ignore-this: 33a60e4ce78db6cc5bab399ec673ad0a
Fixes heapprof001(prof_hp) after fix for #2917
]
[Retract Hp *before* checking for HpLim==0
Simon Marlow <marlowsd at gmail.com>**20090316160500
Ignore-this: f8fdb26c724f766cfae016321be101c4
Fixes heapprof001(prof_hp) following the recent HpLim patch, which
depended on the lack of slop in the heap.
]
[eliminate some not-quite-duplicate code
Simon Marlow <marlowsd at gmail.com>**20090313155619
Ignore-this: 2edadf2f966bf37868b355da1faa211c
]
[start finalizers on the current Capability rather than last_free_capability
Simon Marlow <marlowsd at gmail.com>**20090313155602
Ignore-this: b3e7bc2a7966cd5778e55a0e5dc83553
]
[cope with ThreadRelocated on the sleeping_queue
Simon Marlow <marlowsd at gmail.com>**20090217132757
Ignore-this: 6b73d2b2e4142d7db4e7db4570f644ff
]
[Fix Trac #3095, and make RdrHsSyn warning-clean
simonpj at microsoft.com**20090316174706
Ignore-this: db47522307c92d93e0037143dee74375
]
[Layout only
simonpj at microsoft.com**20090316164619
Ignore-this: af7c9018e873b1618bfe4a2f3102a0c7
]
[Reject foralls in constructor args in 'deriving', except for Functor etc
simonpj at microsoft.com**20090316164502
Ignore-this: 2538aee2634fb587d74a8dc1a064cb5b
]
[Fix Trac #3092
simonpj at microsoft.com**20090316164049
Ignore-this: 9502fdd84b7b1849f6c37afe12d46d64
We were't checking that a 'data/type instance' was extending a family
type constructor.
Merge to 6.10 if we ever release 6.10.3 (or do it for 6.10.2).
]
[Ensure the orientation of var-var equalities is correct for instatiation
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090315065709
Ignore-this: 95cf805dde74e0b9ff36a7fe7556ed1a
- During fianlisation we use to occasionally swivel variable-variable equalities
- Now, normalisation ensures that they are always oriented as appropriate for
instantation.
- Also fixed #1899 properly; the previous fix fixed a symptom, not the cause.
]
[Use work-stealing for load-balancing in the GC
Simon Marlow <marlowsd at gmail.com>**20090313135116
Ignore-this: d05027217c516de3d75f4d1844c860fd
New flag: "+RTS -qb" disables load-balancing in the parallel GC
(though this is subject to change, I think we will probably want to do
something more automatic before releasing this).
To get the "PARGC3" configuration described in the "Runtime support
for Multicore Haskell" paper, use "+RTS -qg0 -qb -RTS".
The main advantage of this is that it allows us to easily disable
load-balancing altogether, which turns out to be important in parallel
programs. Maintaining locality is sometimes more important that
spreading the work out in parallel GC. There is a side benefit in
that the parallel GC should have improved locality even when
load-balancing, because each processor prefers to take work from its
own queue before stealing from others.
]
[Fix Trac #3087: derived Data now defines dataCast1/2
simonpj at microsoft.com**20090313134436
Ignore-this: df43405a2ef5adef20f9eb3675e7411f
This patch generates code in deriving(Data) for dataCast1 or 2 as
appropriate.
While I was there I did some refactoring (of course), pulling out
the TcDeriv.inferConstraints as a separate function.
I don't think it's worth merging this to 6.10.2, even though it's a bugfix,
because it modifies code that I added in the HEAD only (for deriving Functor)
so the merge will be sligtly awkward. And there's an easy workaround.
]
[Adjust error message slightly to make it clearer
simonpj at microsoft.com**20090313134402
Ignore-this: 46b0abb88c1fe11cd4ff059955b81561
]
[just comment formatting
Simon Marlow <marlowsd at gmail.com>**20090313132339
Ignore-this: f53b0dca0896134dd704fc3aca3ea93f
]
[Add "+RTS -N" to determine the -N value automatically (see #1741)
Simon Marlow <marlowsd at gmail.com>**20090313114646
Ignore-this: b5dd21278e02f4a161093466ca97dce
]
[tidy up "missing symbol" error message
Simon Marlow <marlowsd at gmail.com>**20090313101334]
[Fix sanity checking after fix to #2917
Simon Marlow <marlowsd at gmail.com>**20090312093855]
[Instead of a separate context-switch flag, set HpLim to zero
Simon Marlow <marlowsd at gmail.com>**20090313104516
Ignore-this: 6c5bbe1ce2c5ef551efe98f288483b0
This reduces the latency between a context-switch being triggered and
the thread returning to the scheduler, which in turn should reduce the
cost of the GC barrier when there are many cores.
We still retain the old context_switch flag which is checked at the
end of each block of allocation. The idea is that setting HpLim may
fail if the the target thread is modifying HpLim at the same time; the
context_switch flag is a fallback. It also allows us to "context
switch soon" without forcing an immediate switch, which can be costly.
]
[TAG 2009-03-13
Ian Lynagh <igloo at earth.li>**20090313021251]
[FIX #3079, dodgy parsing of LANGUAGE pragmas
Simon Marlow <marlowsd at gmail.com>**20090312141103
Ignore-this: f490bd047421c8aff6c493e79178594e
I ended up rewriting this horrible bit of code, using (yikes) lazy I/O
to slurp in the source file a chunk at a time. The old code tried to
read the file a chunk at a time, but failed with LANGUAGE pragmas
because the parser for LANGUAGE has state and the state wasn't being
saved between chunks. We're still closing the Handle eagerly, so
there shouldn't be any problems here.
]
[avoid a crash: don't return unless the run queue has some threads in it
Simon Marlow <marlowsd at gmail.com>**20090311154559]
[Allocate the right number of words in new*PinnedByteArrayzh_fast
Ian Lynagh <igloo at earth.li>**20090311160615]
[FIX #2816 (correct unicode output for :type/:kind)
Simon Marlow <marlowsd at gmail.com>**20090311112311
Ignore-this: 7f6a7ac6e2fe4f4242df586ef2391506
This is just a hack, since we don't have correct unicode output for
Handles in general, I just fixed a couple of places where we were not
converting to UTF-8 for output.
]
[Fix #2992: don't create a named event
Simon Marlow <marlowsd at gmail.com>**20090311094208
Evidently I misread the docs for CreateEvent: if you pass a name to
CreateEvent, then it creates a single shared system-wide Event with
that name. So all Haskell processes on the machine were sharing the
same Event object. duh.
]
[FIX #2832: Setting SplitObjs=NO doesn't disable -split-objs in GHC
Simon Marlow <marlowsd at gmail.com>**20090311110058
Ignore-this: d5f55ecea5803c1ae745a03d051cfa3f
Now ghc --info reports whether-split-objs is supported, rather than
whether the libraries were built using -split-objs.
]
[FIX #2976: fix buggy implementation of shadowing in GHC.getBindings
Simon Marlow <marlowsd at gmail.com>**20090311102007
Ignore-this: b8320d35defa11b29632bd402a3eef4e
]
[Don't put a trailing / on the mingw include path
Ian Lynagh <igloo at earth.li>**20090310172242]
[Fix a bug which sometimes caused extra major GCs to be performed
Simon Marlow <marlowsd at gmail.com>**20090309140004
Ignore-this: 5127ff02153781823abb21fbb6f233f5
A long-running GC would cause the timer signal to declare the system
to be idle, which would cause a major GC immediately following the
current GC. This only happened with +RTS -N2 or greater.
]
[Redesign 64-bit HEAP_ALLOCED (FIX #2934 at the same time)
Simon Marlow <marlowsd at gmail.com>**20090309121300
Ignore-this: 4018145c528e52995d1feb7636e34384
After much experimentation, I've found a formulation for HEAP_ALLOCED
that (a) improves performance, and (b) doesn't have any race
conditions when used concurrently. GC performance on x86_64 should be
improved slightly. See extensive comments in MBlock.h for the
details.
]
[Partial fix for #2917
Simon Marlow <marlowsd at gmail.com>**20090306100018
Ignore-this: d62309f9a2b682cc2b5ef0bb4376ea54
- add newAlignedPinnedByteArray# for allocating pinned BAs with
arbitrary alignment
- the old newPinnedByteArray# now aligns to 16 bytes
Foreign.alloca will use newAlignedPinnedByteArray#, and so might end
up wasting less space than before (we used to align to 8 by default).
Foreign.allocaBytes and Foreign.mallocForeignPtrBytes will get 16-byte
aligned memory, which is enough to avoid problems with SSE
instructions on x86, for example.
There was a bug in the old newPinnedByteArray#: it aligned to 8 bytes,
but would have failed if the header was not a multiple of 8
(fortunately it always was, even with profiling). Also we
occasionally wasted some space unnecessarily due to alignment in
allocatePinned().
I haven't done anything about Foreign.malloc/mallocBytes, which will
give you the same alignment guarantees as malloc() (8 bytes on
Linux/x86 here).
]
[Don't force HSCOLOUR_SRCS = YES when validating
Ian Lynagh <igloo at earth.li>**20090308171633
This removes a burden from developers, and I can't remember an
occasion where it would have caught a regression.
]
[Add CONTRACT to the pragmas that we recognise.
Ian Lynagh <igloo at earth.li>**20090306194826
It's used by ESC/Haskell.
]
[Generate lots of __inline_me during vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20090307135652]
[Special-case desugaring of simple parallel array comprehensions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20090307134049]
[Make LDV_FILL_SLOP use a forwards loop rather than a backwards loop
Ian Lynagh <igloo at earth.li>**20090306155124]
[Fix warning
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20090306123645]
[Try not to avoid vectorising purely scalar functions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20090306115508]
[Package dph needs to be cleaned in stage=1, too
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090306031628
Ignore-this: b67f993abfbbe47c6bd417049955b9be
]
[Add --version to runghc. Trac #2757.
Ian Lynagh <igloo at earth.li>**20090305162045
We use the GHC version number, as the old runghc one doesn't seem very
useful.
]
[add final newlines
Simon Marlow <marlowsd at gmail.com>**20090305140014
My Windows build has started complaining about lacking final newlines,
I'm not entirely sure why.
]
[remove foo.exe.manifest when --embed-manifest is on
Simon Marlow <marlowsd at gmail.com>**20090305112726]
[add --with-ld=c:/mingw/bin/ld
Simon Marlow <marlowsd at gmail.com>**20090305112618]
[Document -fwarn-unrecognised-pragmas; fixes trac #3031
Ian Lynagh <igloo at earth.li>**20090305143128]
[On OS X/x86, tell gcc to generate instructions for i686. Fixes trac #2983.
Ian Lynagh <igloo at earth.li>**20090305142050
By default, gcc on OS X will generate SSE instructions, which need
things 16-byte aligned, but we don't 16-byte align things. Thus drop
back to generic i686 compatibility.
]
[By default, only HsColour the docs if we find HsColour. Fixes trac #3004.
Ian Lynagh <igloo at earth.li>**20090305132723
If you manually set HSCOLOUR_SRCS=YES then the build will fail if
HsColour wasn't found.
]
[Make -fdicts-cheap cope with implication constraints
simonpj at microsoft.com**20090305134447
Ignore-this: 5fe66cc26e4dc6f233c73350cef7a110
See the Note [Dictionary-like types] in TcType for the full story here
Should only affect programs that use -fdicts-cheap, for
which you'll get better arities
]
[Finally fix Trac #3066
simonpj at microsoft.com**20090305090935
Ignore-this: 8734c1799f854d9da6be76a9c134335e
This is a fix to
Tue Mar 3 17:42:58 GMT 2009 simonpj at microsoft.com
* Fix Trac #3066: checking argument types in foreign calls
which I embarassingly got wrong.
Have to be careful when expanding recursive newtypes.
Pls merge.
]
[Fix a broken link. Spotted by Norman Ramsey in trac #3068.
Ian Lynagh <igloo at earth.li>**20090304165351]
[Fix spelling (Trac#3069)
simonpj at microsoft.com**20090304092232
Ignore-this: fee0f1d060c6c1c7a875943fe543c4fa
]
[Layout only
simonpj at microsoft.com**20090304091956
Ignore-this: 4410b2b26227263b24fd5aa7d2144ea0
]
[Fix a long-standing latent bug (and the build): check res_ty not sig_ty
simonpj at microsoft.com**20090304091913
Ignore-this: 3494ed3f342b63840eef791a5200695
]
[Fix #3067: GHCi panics with 'initTc:LIE' while :stepping on code with funny types
pepe iborra <mnislaih at gmail.com>**20090303193706
The problem is that calls to boxyUnify would panic if the types involved
contained type functions.
It looks like one should wrap these calls with getLIE, although I don't
really know what I am doing here
]
[Fix Trac #3066: checking argument types in foreign calls
simonpj at microsoft.com**20090303174258
Ignore-this: c07b0df24b9965b190dc0e0797401c51
When checking argument types in a foreign call we were stupidly
looking through foralls. The fix is easy.
Merge to 6.10.2
]
[Fix Trac #3057 in deriving Functor
simonpj at microsoft.com**20090303170612
Ignore-this: 7d7783868e4684930f75c3b35c18c586
The universal type variables of a data constructor are not necessarily
identical to those of its parent type constructor, especially if the
data type is imported.
While I was at it, I did a significant refactoring to make all this
traversal of types more comprehensible, by adding the data type
FFoldType.
]
[fix assertion failure with -debug non-threaded RTS (by deleting code!)
Simon Marlow <marlowsd at gmail.com>**20090303143942
Ignore-this: 352f3c57979529f44ea92edbf1acbf07
]
[improvements: generate LaTeX tables for more than one run
Simon Marlow <marlowsd at gmail.com>**20090303141346
Ignore-this: 47588f0c4d046f2b5ff0dc7be38777c0
]
[A few bug fixes; some improvements spurred by paper writing
dias at eecs.harvard.edu**20090303150228
Among others:
- Fixed Stg->C-- translation of let-no-escapes -- it's important to use the
right continuation...
- Fixed infinite recursion in X86 backend (shortcutJump mishandled infinite loops)
- Fixed yet another wrong calling convention -- primops take args only in vanilla regs,
but they may return results on the stack!
- Removed StackInfo from LGraph and Block -- now in LastCall and CmmZ
- Updated avail-variable and liveness code
]
[Comments only
simonpj at microsoft.com**20090303111513
Ignore-this: 5c2a7c2a8116fb05e0e035baea9566fa
]
[Filter out carriage returns in doc strings
David Waern <david.waern at gmail.com>**20090228145351
We want the internal format to contain LFs only. This makes it easier to work
with the doc strings for clients of the GHC API.
]
[z-encode digits at the start of a symbol name; fixes trac #2997
Ian Lynagh <igloo at earth.li>**20090227180029
Digits already have a couple of meanings in z-encoding (Z3T is a tuple,
and z123U is a unicode character), so we encode digits as unicode
characters to avoid trying to squeeze in another meaning.
Also removed a little GHC < 6.2 compatibility hack.
]
[Whitespace only
Ian Lynagh <igloo at earth.li>**20090227163435]
[Improve documentation of bang patterns
simonpj at microsoft.com**20090227101503
Ignore-this: fa7bf72db82a612d16d44a93f1537351
]
[Use 'nonIOok' instead of 'True'; cosmetics only
simonpj at microsoft.com**20090223101659
Ignore-this: 80200cf3aec5abb95c6b23ef37fb590a
]
[Tweak +RTS --info docs
Ian Lynagh <igloo at earth.li>**20090227020758]
[In +RTS --info output, use YES rather than Yes
Ian Lynagh <igloo at earth.li>**20090227010230]
[FIX #1891 (describe +RTS --info output in GHC user guide)
Andrew Coppin <andrewcoppin at btinternet.com>**20090214150234]
[If we are given -Werror, then pass -Werror to cpp
Ian Lynagh <igloo at earth.li>**20090226001606]
[Strip tag bits from closure pointers before trying to deference them.
Ben.Lippmeier at anu.edu.au**20090224101346]
[SPARC NCG: Split out sanity checking into its own module
Ben.Lippmeier at anu.edu.au**20090223071207]
[SPARC NCG: Add jumps to end of blocks when working out condition codes
Ben.Lippmeier at anu.edu.au**20090223062135]
[SPARC NCG: Enforce the invariant that each block ends with a jump.
Ben.Lippmeier at anu.edu.au**20090223060707
- If each basic block doesn't end with a jump then the register
liveness determinator will get the cross-block liveness info
wrong, resulting in a bad allocation.
]
[Add targets clean.library.dph and remake.library.dph
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20090224112037
Ignore-this: bc561099d9e32b6c7416bd60e5516733
- Package dph ist a meta package that contains a number of subpackages inside.
- This patch adds two targets to clean and remake all subpackages with a
single command.
]
[:steplocal and :stepmodule should not polute trace history
Peter Hercek <phercek at gmail.com>**20090222201002]
[Do not print anything to stdout when stopping at a breakpoint with custom code attached
Peter Hercek <phercek at gmail.com>**20090222195551
]
[newPinnedByteArray#: align the result to 16-bytes (part of #2917)
Simon Marlow <marlowsd at gmail.com>*-20090219103245
Ignore-this: 1aa4cd40aef9690760b3bf65e284efcb
]
[Only use STAGE3_PACKAGE_CONF for building GHC itself
Ian Lynagh <igloo at earth.li>**20090221151530
In particular, when building dph with the stage2 compiler, we want to
register it in the main package.conf.
]
[Export blockUserSignals and unblockUserSignals (needed for #2870)
Simon Marlow <marlowsd at gmail.com>**20090219113418
Ignore-this: b7c26c801e515c6848f1f8fca024198f
]
[#2860: remove redundant unblocking of signals
Simon Marlow <marlowsd at gmail.com>**20090219103258
Ignore-this: c603e23fbdc7f7f7de7fcd9a7aa28f0b
]
[newPinnedByteArray#: align the result to 16-bytes (part of #2917)
Simon Marlow <marlowsd at gmail.com>**20090219103245
Ignore-this: 1aa4cd40aef9690760b3bf65e284efcb
]
[Rewrite of signal-handling (ghc patch; see also base and unix patches)
Simon Marlow <marlowsd at gmail.com>**20090219103142
Ignore-this: aca7c3e258224fadc6f0f2fee86b2971
The API is the same (for now). The new implementation has the
capability to define signal handlers that have access to the siginfo
of the signal (#592), but this functionality is not exposed in this
patch.
#2451 is the ticket for the new API.
The main purpose of bringing this in now is to fix race conditions in
the old signal handling code (#2858). Later we can enable the new
API in the HEAD.
Implementation differences:
- More of the signal-handling is moved into Haskell. We store the
table of signal handlers in an MVar, rather than having a table of
StablePtrs in the RTS.
- In the threaded RTS, the siginfo of the signal is passed down the
pipe to the IO manager thread, which manages the business of
starting up new signal handler threads. In the non-threaded RTS,
the siginfo of caught signals is stored in the RTS, and the
scheduler starts new signal handler threads.
]
[Fix an off-by-one; fixes the second bug in trac #3001
Ian Lynagh <igloo at earth.li>**20090218235620]
[Install libHSffi_p.a
Ian Lynagh <igloo at earth.li>**20090218165913]
[Fix ghc and ghci wrappers on Windows
Ian Lynagh <igloo at earth.li>**20090218005034]
[Make versioned ghc and ghci programs on Windows; fixes trac #2827
Ian Lynagh <igloo at earth.li>**20090217215048]
[SPARC NCG: Unsigned comparisons are unsigned
Ben.Lippmeier at anu.edu.au**20090217035200]
[SPARC NCG: Fix word size conversions
Ben.Lippmeier at anu.edu.au**20090217023322]
[SPARC NCG: Split up into chunks, and fix warnings.
Ben.Lippmeier at anu.edu.au**20090216020038]
[SPARC NCG: Reorganise Reg and RegInfo
Ben.Lippmeier at anu.edu.au**20090216000945]
[NCG: Cleanup old file
Ben.Lippmeier at anu.edu.au**20090216000847]
[NCG: validate fixes for ppc-darwin
Ben.Lippmeier at anu.edu.au**20090215083601]
[NCG: validate fixes for ghc-6.6
Ben.Lippmeier at anu.edu.au**20090215071334]
[NCG: validate fixes for i386-darwin
Ben.Lippmeier at anu.edu.au**20090215073234]
[NCG: validate fixes for x86_64-linux
Ben.Lippmeier at anu.edu.au**20090215072325
Ignore-this: 1b81b402e6f7ef0c76656a15c3a9f139
]
[NCG: Haddock validate fix
Ben.Lippmeier at anu.edu.au**20090215063710]
[NCG: Validate fixes for x86-linux
Ben.Lippmeier at anu.edu.au**20090215062321]
[SPARC NCG: Don't release top half of f6 and f8
Ben.Lippmeier at anu.edu.au**20090215061940]
[NCG: Split up the native code generator into arch specific modules
Ben.Lippmeier at anu.edu.au**20090215055158
- nativeGen/Instruction defines a type class for a generic
instruction set. Each of the instruction sets we have,
X86, PPC and SPARC are instances of it.
- The register alloctors use this type class when they need
info about a certain register or instruction, such as
regUsage, mkSpillInstr, mkJumpInstr, patchRegs..
- nativeGen/Platform defines some data types enumerating
the architectures and operating systems supported by the
native code generator.
- DynFlags now keeps track of the current build platform, and
the PositionIndependentCode module uses this to decide what
to do instead of relying of #ifdefs.
- It's not totally retargetable yet. Some info info about the
build target is still hardwired, but I've tried to contain
most of it to a single module, TargetRegs.
- Moved the SPILL and RELOAD instructions into LiveInstr.
- Reg and RegClass now have their own modules, and are shared
across all architectures.
]
[SPARC NCG: Make linear allocator use info in SPARC.Regs again
Ben.Lippmeier at anu.edu.au**20090211054021]
[SPARC NCG: Enumerate freeRegs / globalRegMaybe instead of using #ifdefery
Ben.Lippmeier at anu.edu.au**20090211025330]
[NCG: Split PprMach into arch specific modules
Ben.Lippmeier at anu.edu.au**20090205081242
- There are still some #ifdefs for choosing between i386, x86_64,
linux, darwin and other OS's.
- Also reformat SPARC.RegInfo to remove some of the visual noise.
]
[Put RelaxedPolyRec in the cabal file rather than a pragma
Ian Lynagh <igloo at earth.li>**20090213185635
This should fix the build with GHC 6.6
]
[update Sparc store/load barrier (#3019), and fix comments
Simon Marlow <marlowsd at gmail.com>**20090212092340
Ignore-this: 9d993cb743a0c015f0fc974000a7c7d7
]
[comment wibbles
Simon Marlow <marlowsd at gmail.com>**20090211152844
Ignore-this: b95f30df3aa53295a6dc8fd011cdfdaa
]
[NCG: Use sync instead of msync for a memory barrier for powerpc
Ben.Lippmeier at anu.edu.au**20090213004910
Darwin 9.6.0 + GCC 4.0.1 doesn't understand "msync".
I think "sync" means the same thing.
]
[NCG: Split block reorder thing in linear allocator into separate fn
Ben.Lippmeier at anu.edu.au**20090213004819]
[NCG: Validate fixes for powerpc
Ben.Lippmeier at anu.edu.au**20090213004725]
[NCG: Add missing ops to powerpc isJumpish
Ben.Lippmeier at anu.edu.au**20090213004647]
[Only pass --with-hscolour to cabal-bin once
Ian Lynagh <igloo at earth.li>**20090212141023]
[Quote some more arguments to cabal-bin
Ian Lynagh <igloo at earth.li>**20090212141120]
[Add more targets to the list that we need to include all libraries for
Ian Lynagh <igloo at earth.li>**20090211173333]
[Fix Trac #3017: ensure that we quantify over enough type variables when equalities are involved
simonpj at microsoft.com**20090211174733
Ignore-this: 92838c0a556240a8fb7744e3f29aa0f9
The function FunDeps.grow was not doing the right thing when type equality
constraints were involved. That wasn't really its fault: its input was
being filtered by fdPredsOfInsts.
To fix this I did a bit of refactoring, so that the (revolting) fdPredsOfInsts
is now less important (maybe we can get rid of it in due course). The 'grow'
function moves from FunDeps to
Inst.growInstsTyVars
TcMTType.growThetaTyVars
TcMType.growTyVars
The main comments are with the first of these, in
Note [Growing the tau-tvs using constraints] in Inst.
Push to the branch if conflict free.
]
[general tidy up
Simon Marlow <marlowsd at gmail.com>**20090211152429
Ignore-this: 9b6bbb08749b372bdd387a25405570f4
]
[one more bugfix: a load/load memory barrier is required in stealWSDeque_()
Simon Marlow <marlowsd at gmail.com>**20090211152421
Ignore-this: d89fff02d6b8c63272c9171e64d3510b
]
[Fix trac #3001: Biographical profiling segfaults
Ian Lynagh <igloo at earth.li>**20090211153457
We were zeroing the wrong memory
]
[Tweak the mangler; fixes trac #2871
Ian Lynagh <igloo at earth.li>**20090211150340
It was getting confused by lines like:
# 9 "C:\Temp\/ghc620_0/ghc620_0.hc" 1
]
[On sparc, pass -mcpu=v9 when assembling with object splitting enabled
Ian Lynagh <igloo at earth.li>**20090211141600
Fixes trac #2872.
]
[Turn another ASSERT into a WARN (temproraily)
simonpj at microsoft.com**20090211094028
Ignore-this: 8982802501f7966ce482ef360aac6ec0
Fix Trac #3011 by temporarily making it only a WARN if we assign twice
to the same unification variable.
]
[Improve documentation for LANGUAGE pragma (esp wrt cpp)
simonpj at microsoft.com**20090211093939
Ignore-this: 2c690e39766bb9c49c0e7bf8faecad47
]
[Don't use the absolute path to the bindist tarball
Ian Lynagh <igloo at earth.li>**20090210215215
On Windows, we end up doing something like
rsync c:/build/ghc-6.10.1-unknown-mingw32.tar.bz2 haskell.org:dist
and it thinks that it is meant to get the file from the host called "c".
Now we just do
rsync ghc-6.10.1-unknown-mingw32.tar.bz2 haskell.org:dist
so rsync understand what we mean.
]
[Fix cleaning and installing the libraries
Ian Lynagh <igloo at earth.li>**20090210225538
When cleaning or installing, we need to ignore what $stage is, and
just clean/install all the libraries.
]
[scheduleYield(): check the wakeup queue before yielding
Simon Marlow <marlowsd at gmail.com>**20090209112536
Ignore-this: d4aaf83d79ad8ca3ac2d904234eef599
]
[Improvements to the "can't find module" error message (#2980)
Simon Marlow <marlowsd at gmail.com>**20090206165743
Ignore-this: 2de565e20f68ebdc3865df7391c81437
If the module was found in multiple hidden packages, we list them all.
Could not find module `Data.Generics':
it is a member of the hidden package `base-3.0.3.0'
it is a member of the hidden package `syb'
Use -v to see a list of the files searched for.
]
[build fix: add -I../rts/parallel
Simon Marlow <marlowsd at gmail.com>**20090206145921
Ignore-this: b4ab2760dd111b790421cf451289681f
]
[crucial bugfix: add a store/load memory barrier to popWSDeque()
Simon Marlow <marlowsd at gmail.com>**20090206130804
Ignore-this: 57d044afb7c635af2948d24d9c43a23f
]
[bugfix: an unsigned comparison should be signed
Simon Marlow <marlowsd at gmail.com>**20090206130745
Ignore-this: 981510f94dcb81e5896703f610b933e5
]
[tiny cleanup
Simon Marlow <marlowsd at gmail.com>**20090206130715
Ignore-this: 9497f8f6fbce2d0c23fd1d0eee4cdeda
]
[add debugging code and comments
Simon Marlow <marlowsd at gmail.com>**20090206130609
Ignore-this: 5f0e1e3fa0148da079f13eb07430c09b
]
[add an assertion
Simon Marlow <marlowsd at gmail.com>**20090206130338
Ignore-this: f4c0f539142c0dfdc57c70d1c6136f10
]
[add a single-threaded version of cas()
Simon Marlow <marlowsd at gmail.com>**20090206130130
Ignore-this: 80d5e7a3c35182d7d87e95c5c4096821
]
[add a store/load memory barrier
Simon Marlow <marlowsd at gmail.com>**20090206130115
Ignore-this: e0bc8f61877868ec8c2ccd9dee8f956d
]
[Refactor the spark queue implementation into a generic work-stealing deque
Simon Marlow <marlowsd at gmail.com>**20090205124648
Ignore-this: 1a7ee74388f30301d154d050d853a7a9
So we can use this abstraction elsewhere in the RTS
]
[Handle the case where setitimer(ITIMER_VIRTUAL) is not always available
Ian Lynagh <igloo at earth.li>**20090208191431
Patch from sthibaul. Fixes trac #2883.
]
[Correct an IsFunction that should be IsData
Ian Lynagh <igloo at earth.li>**20090207005834]
[Fix calling maths functions when compiling via C
Ian Lynagh <igloo at earth.li>**20090206223119]
[Add a panic to fix the build on amd64/Linux; to be fixed properly later
Ian Lynagh <igloo at earth.li>**20090206153135]
[Fix the build on OS X: only understands .space, not .skip
Ian Lynagh <igloo at earth.li>**20090206151203]
[Fix building with GHC 6.8
Ian Lynagh <igloo at earth.li>**20090206143432]
[Fix the build on amd64/Linux
Ian Lynagh <igloo at earth.li>**20090206143420]
[When generating C, don't pretend functions are data
Ian Lynagh <igloo at earth.li>**20090206140249
We used to generated things like:
extern StgWordArray (newCAF) __attribute__((aligned (8)));
((void (*)(void *))(W_)&newCAF)((void *)R1.w);
(which is to say, pretend that newCAF is some data, then cast it to a
function and call it).
This goes wrong on at least IA64, where:
A function pointer on the ia64 does not point to the first byte of
code. Intsead, it points to a structure that describes the function.
The first quadword in the structure is the address of the first byte
of code
so we end up dereferencing function pointers one time too many, and
segfaulting.
]
[NCG: Validate fixes
Ben.Lippmeier at anu.edu.au**20090205080624]
[NCG: Split RegAllocInfo into arch specific modules
Ben.Lippmeier at anu.edu.au**20090204055126]
[NCG: Move RegLiveness -> RegAlloc.Liveness
Ben.Lippmeier at anu.edu.au**20090204035250]
[NCG: Rename MachRegs, MachInstrs -> Regs, Instrs to reflect arch specific naming
Ben.Lippmeier at anu.edu.au**20090204034107]
[NCG: Split MachRegs.hs into arch specific modules
Ben.Lippmeier at anu.edu.au**20090204030729]
[NCG: Fix validate
Ben.Lippmeier at anu.edu.au**20090205030642]
[SPARC NCG: Fix some haddock problems.
Ben.Lippmeier at anu.edu.au**20090204043802]
[SPARC NCG: Add Pwr callish mach op
Ben.Lippmeier at anu.edu.au**20090204000905]
[NCG: Split MachInstrs into arch specific modules
Ben.Lippmeier at anu.edu.au**20090203081327]
[NCG: Move the graph allocator into its own dir
Ben.Lippmeier at anu.edu.au**20090203071411]
[SPARC NCG: Update cabal file
Ben.Lippmeier at anu.edu.au**20090203062746]
[SPARC NCG: Give regs o0-o5 back to the allocator
Ben.Lippmeier at anu.edu.au**20090203062433]
[NCG: Split out joinToTargets from linear alloctor into its own module.
Ben.Lippmeier at anu.edu.au**20090203040540
* Also fix a nasty bug when creating fixup code that has a cyclic
register movement graph.
]
[NCG: Split linear allocator into separate modules.
Ben.Lippmeier at anu.edu.au**20090202055301]
[SPARC NCG: Keep track of destinations when doing a tabled jump
Ben.Lippmeier at anu.edu.au**20090123052247]
[SPARC NCG: Do general 64 bit addition and conversion
Ben.Lippmeier at anu.edu.au**20090123035152]
[SPARC NCG: Don't need a write barrier for store synchronisation on SPARC under TSO.
Ben.Lippmeier at anu.edu.au**20090123005051]
[SPARC NCG: Use .skip instead of .space in assembler
Ben.Lippmeier at anu.edu.au**20090122225150
- In the GNU assembler they mean the same thing
- The Solaris assembler only has .skip
]
[Check -XGADTs in (a) type family decls (b) pattern matches
simonpj at microsoft.com**20090204150919
Ignore-this: 19a6268814440493eea436c48daa8414
Following Trac #2905, we now require -XGADTs for *pattern matches* on
GADTs, not just on *definitions*.
Also I found that -XGADTs wasn't being checked when declaring type families,
so I fixed that too.
]
[Improve error reports for kind checking (Trac #2994)
simonpj at microsoft.com**20090204150736
Ignore-this: 402fe9f025abf8e2a3088383c23a89f6
I followed the suggestion in Trac #2994, which took longer than I
expected. As usual I did a bit of tidying up at the same time,
and improved a few other error reports.
]
[Further wibbles to 'deriving' for functor-like things
simonpj at microsoft.com**20090204150625
Ignore-this: 1a69dfc25f741148b5b817aa66803d5c
]
[leave out rts/ from include-dirs in the inplace rts package
Simon Marlow <marlowsd at gmail.com>**20090204104748
Ignore-this: 3a5c7e53121421600aa21a53b57cc9fb
it shouldn't be there, and might hide bugs
]
[Fix Trac #2999: change an ASSERT to a WARN
simonpj at microsoft.com**20090204083800
Ignore-this: db6fdc200a06ba5f067d567ea64f89e1
A bug in the constraint simplifier means that an equality can be solved
twice. It's harmless, and will go away with the new constraint simplifier.
Hence warning, to avoid unnecessary outright failure on eg Trac #2999.
]
[Improve transferPolyIdInfo for value-arg abstraction
simonpj at microsoft.com**20090204082534
Ignore-this: 687def702522c3516050de1e14e5219f
If we float a binding out of a *value* lambda, the fixing-up of IdInfo
is a bit more complicated than before. Since in principle FloatOut
can do this (and thus can do full lambda lifting), it's imporrtant
that transferPolyIdInfo does the Right Thing.
This doensn't matter unless you use FloatOut's abilty to lambda-lift,
which GHC mostly doesn't, yet. But Max used it and tripped over this bug.
]
[Two small improvements to LiberateCase
simonpj at microsoft.com**20090204081919
Ignore-this: ca41d8d9ef1b409b32761b1a69bd1400
Max Bolingbroke suggested these two small improvements to LiberateCase
(most of the size increase is comments :-)):
a) Do LiberateCase on small functions even if they are mutually recursive
See Note [Small enough]
b) Don't do LiberateCase on functions for which it'd be fruitless,
namely when a free varible is scrutinised *outside* the function
See Note [Avoiding fruitless liberate-case]
There is virtually no effect on nofib, but Max tripped over cases
where it mattered slightly.
]
[Robustify lookupFamInstEnv, plus some refactoring
simonpj at microsoft.com**20090115134818
Ignore-this: 493fdbd370a714bf9677b16d2ba533d7
This patch deals with the following remark
Suppose we have
type family T a :: * -> *
type instance T Int = []
and now we encounter the type (T Int Bool). If we call
lookupFamInstEnv on (T Int Bool) we'll fail, because T has arity 1.
Indeed, I *think* it's a precondition of lookupFamInstEnv that the
supplied types exactly match the arity of the type function. But
that precondition is neither stated, nor is there an assertion to
check it.
With this patch, lookupFamInstEnv can take "extra" type arguments in
the over-saturated case, and does the Right Thing.
There was a nearly-identical function lookupFamInstEnvUnify, which
required the precisely analogous change, so I took the opportunity
to combine the two into one function, so that bugs can be fixed in one
place. This was a bit harder than I expected, but I think the result
is ok. The conflict-decision function moves from FamInst to FamInstEnv.
Net lines code decreases, although there are more comments.
]
[Robustify lookupFamInstEnv
simonpj at microsoft.com**20090114140117
Ignore-this: ee312b2b59155102d88397a33c591ad2
Suppose we have
type family T a :: * -> *
type instance T Int = []
and now we encounter the type (T Int Bool). That is perfectly
fine, even though T is over-saturated here.
This patch makes lookupFamInstEnv robust to such over-saturation.
Previously one caller (TcTyFuns.tcUnfoldSynFamInst) dealt with
the over-saturation case, but the others did not. It's better
to desl with the issue at the root, in lookupFamInstEnv itself.
]
[Improve trace message
simonpj at microsoft.com**20090113175806
Ignore-this: 2276ebc89246553cbb6a1a4cd7c76fd9
]
[Build dph with the stage2 compiler
Ian Lynagh <igloo at earth.li>**20090203213613
It will use TH, so needs to be built with stage2.
]
[Optimise writing out the .s file
Simon Marlow <marlowsd at gmail.com>**20090202145013
I noticed while working on the new IO library that GHC was writing out
the .s file in lots of little chunks. It turns out that this is a
result of using multiple printDocs to avoid space leaks in the NCG,
where each printDoc is finishing up with an hFlush.
What's worse, is that this makes poor use of the optimisation inside
printDoc that uses its own buffering to avoid hitting the Handle all
the time.
So I hacked around this by making the buffering optimisation inside
Pretty visible from the outside, for use in the NCG. The changes are
quite small.
]
[better error message for missing package-qualified modules in ghc -M
Simon Marlow <marlowsd at gmail.com>**20090123142001]
[add wiki commentary links
Simon Marlow <marlowsd at gmail.com>**20090130110844
Ignore-this: 3f27b426bc5ad54157edc06a421e28bf
]
[Force the result of user-defined commands
Simon Marlow <marlowsd at gmail.com>**20090130091919
Ignore-this: f756d00cc062072e1945d63cfbbeb98
so that exceptions are reported with "*** Exception" instead of as a panic.
]
[Improve error reporting for precedence errors
simonpj at microsoft.com**20090202164450
Ignore-this: 493643a40c119ba6ad54d0f220dc4606
Adopt the suggestion of Trac #2993, and tidy up the reporting of
precedence parsing errors somewhat.
]
[Add the ability to derive instances of Functor, Foldable, Traversable
simonpj at microsoft.com**20090202134829
Ignore-this: f3013fefdd65f75fb5060ef0e002f40e
This patch is a straightforward extension of the 'deriving' mechanism.
The ability to derive classes Functor, Foldable, Traverable is controlled
by a single flag -XDeriveFunctor. (Maybe that's a poor name.)
Still to come: documentation
Thanks to twanvl for developing the patch
]
[Comments about injecting implicit bindings
simonpj at microsoft.com**20090130175403
Ignore-this: 7aa1a69f5a16811272bed0683234aca3
]
[Warn in configure if it looks like make 3.80 is about to be used
Ian Lynagh <igloo at earth.li>**20090201203505
We get caught by
http://savannah.gnu.org/bugs/index.php?1516
$(eval ...) inside conditionals causes errors
with make 3.80, so warn the user if it looks like they're about to
try to use it.
]
[Fix Trac #2985: generating superclasses and recursive dictionaries
simonpj at microsoft.com**20090130152738
Ignore-this: 921ab14e850085ddbe545b078e02120b
The Note [Recursive instances and superclases] explains the subtle
issues to do with generating the bindings for superclasses when
we compile an instance declaration, at least if we want to do the
clever "recursive superclass" idea from the SYB3 paper.
The old implementation of tcSimplifySuperClasses stumbled when
type equalities entered the picture (details in the Note); this
patch fixes the problem using a slightly hacky trick. When we
re-engineer the constraint solver we'll want to keep an eye on
this.
Probably worth merging to the 6.10 branch.
]
[White space only
simonpj at microsoft.com**20090130152705
Ignore-this: fdc9c862fa91a57bdb81b7370eb482bd
]
[Two more wibbles to CorePrep (fixes HTTP package and DPH)
simonpj at microsoft.com**20090129131954
Ignore-this: ee42b5f5a73a5277b5fd0e8c679e8fbe
Ensuring that
a) lambdas show up only on the RHSs of binding after CorePrep
b) the arity of a binding exactly matches the maifest lambdas
is surprisingly tricky.
I got it wrong (again) in my recent CorePrep shuffling, which broke
packages HTTP and DPH. This patch fixes both.
]
[Remove the doc/ contents from the GMP tarball
Ian Lynagh <igloo at earth.li>**20090128200749
They are GFDLed, which causes problems for Debian
]
[#2973: we should virtualise the CWD inside the GHC API, not in the client
Simon Marlow <marlowsd at gmail.com>**20090127121648
Ignore-this: 5d57181d25a0661ad20fa48154f4a80
The problem is that we install the client's CWD before calling
runStmt, but runStmt has to load modules before running the code. We
need to install the CWD just before running the code instead, which
means it has to be done inside runStmt (and resume).
]
[Fix detection of i386 vs. x86_64 for -pc-solaris
Simon Marlow <marlowsd at gmail.com>**20090127095343
Ignore-this: b415138105477e7edab96994babbe6d2
From #2951
]
[Implement #2191 (traceCcs# -- prints CCS of a value when available -- take 3)
Samuel Bronson <naesten at gmail.com>**20090127084825
Ignore-this: ede3f18c70cfb7979ef21d7e8077dad6
In this version, I untag R1 before using it, and even enter R2 at the
end rather than simply returning it (which didn't work right when R2
was a thunk).
]
[add comment for ASSERT_LOCK_HELD()
Simon Marlow <marlowsd at gmail.com>**20090126140030
Ignore-this: c3ce1e8df9d94eb92a17f4f58c496a41
]
[Fix #2961: we lost some of the generated code for stack args in genCCall
Simon Marlow <marlowsd at gmail.com>**20090126150209
Ignore-this: 77de911bfc98ecca566f1744dfe75a7b
A real bug in the x86_64 native code gen: nice!
This bug would have been caught by -Wall, and I would have gone though
and Walled this file but I know Ben is hacking on this file quite
heavily and I don't want to create undue conflicts. Ben: it would be
nice to enable -Wall here when you have time.
]
[Make the libffi patch files portable
Ian Lynagh <igloo at earth.li>**20090123180015
Solaris's patch can't apply them if the lines beginning "---" aren't
preceeded by a "diff -ur foo bar" line.
]
[SPARC NCG: Also do misaligned reads (this time for sure!)
Ben.Lippmeier at anu.edu.au**20090122092156]
[SPARC NCG: Also do misaligned reads
Ben.Lippmeier at anu.edu.au**20090121232423]
[When converting TH syntax to GHC syntax, need to put sections in parentheses
Ian Lynagh <igloo at earth.li>**20090121141706
Fixes trac #2956
]
[SPARC NCG: Add a SPARC version of rts_mkInt64 that handles misaligned closure payloads.
Ben.Lippmeier at anu.edu.au**20090121052334]
[SPARC NCG: Reenable out of line 32 bit float ops
Ben.Lippmeier at anu.edu.au**20090121034716]
[SPARC NCG: Clean up formatting and add comments in genCCall
Ben.Lippmeier at anu.edu.au**20090121025549]
[SPARC NCG: Fix format problem when converting float to int
Ben.Lippmeier at anu.edu.au**20090121012624]
[SPARC NCG: fill branch delay slot after tabled jump (doh!)
Ben.Lippmeier at anu.edu.au**20090121003729]
[SPARC NCG: Add tabled switch
Ben.Lippmeier at anu.edu.au**20090120214914]
[SPARC NCG: Fix 64bit integers returned from ccalls
Ben.Lippmeier at anu.edu.au**20090120090617]
[#2875: Correct SYB's representation of Char
'Jose Pedro Magalhaes <jpm at cs.uu.nl>'**20090119112321]
[Fix #2759: add ability to serialize Rational
'Jose Pedro Magalhaes <jpm at cs.uu.nl>'**20081209125551]
[SPARC NCG: Fix warnings
Ben.Lippmeier at anu.edu.au**20090120075100]
[SPARC NCG: Remove a comment that was confusing haddock
Ben.Lippmeier at anu.edu.au**20090116011853]
[SPARC NCG: ppr 64 bit store sizes
Ben.Lippmeier at anu.edu.au**20090120074000]
[SPARC NCG: Fix generation of 64 bit ops on 32 bit sparc
Ben.Lippmeier at anu.edu.au**20090120071536]
[SPARC NCG: Add support for hardware divide
Ben.Lippmeier at anu.edu.au**20090120052113]
[SPARC NCG: Redo code for integer sign extension
Ben.Lippmeier at anu.edu.au**20090115084105]
[SPARC NCG: Fix signed/unsigned operand format bug
Ben.Lippmeier at anu.edu.au**20090115080004]
[More fixes to the SPARC native code generator
Ben.Lippmeier at anu.edu.au**20090115055727
* Fix loading of 64bit floats
* Put SRT and other read only static data in the .text segment
]
[Start fixing the SPARC native code generator
Ben.Lippmeier at anu.edu.au**20090114054416
* Use BlockIds in branch instructions instead of Imms.
* Assign FP values returned from C calls to the right regs
* Fix loading of F32s
* Add a SPARC version of the FreeRegs map to the linear allcator.
]
[Fix some holes in the SPARC native code generator.
Ben.Lippmeier at anu.edu.au**20090112063310
This makes about half the tests in codeGen/should_run work.
]
[Untag closure pointers before trying to print them.
Ben.Lippmeier at anu.edu.au**20090112053421
In RTS tracing code, need to untag the pointer before trying
to load the info table in printClosure()
]
[Add missing documention of -Da DEBUG: apply flag to RTS help.
Ben.Lippmeier at anu.edu.au**20090112005625]
[Better panic message in RegAllocLinear
Ben.Lippmeier at anu.edu.au**20090110025802]
[Make the SPARC NCG compile again - it's still broken though.
Ben.Lippmeier at anu.edu.au**20090110014418]
[Enable the native code generator for SPARC
Ben.Lippmeier at anu.edu.au**20090105070429]
[Always use PTHREAD_MUTEX_ERRORCHECK to create mutexes when -DDEBUG
Ian Lynagh <igloo at earth.li>**20090118193328
Linux defines PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP
anyway, so there's no need to special-case it.
]
[Use error-checking mutexes on all platforms when DEBUG is on
Ian Lynagh <igloo at earth.li>**20090117215931
Otherwise ASSERT_LOCK_HELD will cause deadlocks
]
[Reinstate: Always check the result of pthread_mutex_lock() and pthread_mutex_unlock().
Ian Lynagh <igloo at earth.li>**20090117200955
Sun Jan 4 19:24:43 GMT 2009 Matthias Kilian <kili at outback.escape.de>
Don't check pthread_mutex_*lock() only on Linux and/or only if DEBUG
is defined. The return values of those functions are well defined
and should be supported on all operation systems with pthreads. The
checks are cheap enough to do them even in the default build (without
-DDEBUG).
While here, recycle an unused macro ASSERT_LOCK_NOTHELD, and let
the debugBelch part enabled with -DLOCK_DEBUG work independently
of -DDEBUG.
]
[Initialise and deinitialise the file_lock_mutex
Ian Lynagh <igloo at earth.li>**20090117023947]
[Create package.conf when installing a bindist
Ian Lynagh <igloo at earth.li>**20090118110654]
[validate fix on 32-bit
Simon Marlow <marlowsd at gmail.com>**20090114162834]
[fix validate on Windows
Simon Marlow <marlowsd at gmail.com>**20090114155842]
[UNDO: Always check the result of pthread_mutex_lock() and pthread_mutex_unlock().
Simon Marlow <marlowsd at gmail.com>**20090116114339
Ignore-this: 6cc82d384582097785d78fba46ca29d2
This patch caused problems on Mac OS X, undoing until we can do it better.
rolling back:
Sun Jan 4 19:24:43 GMT 2009 Matthias Kilian <kili at outback.escape.de>
* Always check the result of pthread_mutex_lock() and pthread_mutex_unlock().
Don't check pthread_mutex_*lock() only on Linux and/or only if DEBUG
is defined. The return values of those functions are well defined
and should be supported on all operation systems with pthreads. The
checks are cheap enough to do them even in the default build (without
-DDEBUG).
While here, recycle an unused macro ASSERT_LOCK_NOTHELD, and let
the debugBelch part enabled with -DLOCK_DEBUG work independently
of -DDEBUG.
M ./includes/OSThreads.h -30 +10
]
[Update config.guess, config.sub and install.sh from automake-1.10.2
Simon Marlow <marlowsd at gmail.com>**20090116095311
Ignore-this: cdc19dd28053a6a71283776ecb802c62
In particular, config.guess should now know about x86_64-pc-solaris2
]
[More useful error message when a package .hi file cannot be found:
Simon Marlow <marlowsd at gmail.com>**20090115122524
Ignore-this: b595e2fac5d9b5214340f83a7d7dd730
> import System.Process
Could not find module `System.Process':
There are files missing in the process-1.0.1.1 package,
try running 'ghc-pkg check'.
Use -v to see a list of the files searched for.
]
[soup-up "ghc-pkg check"
Simon Marlow <marlowsd at gmail.com>**20090115122143
Ignore-this: 6d29af258eb31d417d01fed167cd5d47
We now look for missing files (including .hi files), and report all
the packages that are transitively broken.
$ ghc-pkg check
There are problems in package syb-0.1.0.0:
dependency foo-4.0.0.0 doesn't exist
There are problems in package process-1.0.1.1:
file System/Process.hi is missing
The following packages are broken, either because they have a problem
listed above, or because they depend on a broken package.
syb-0.1.0.0
process-1.0.1.1
base-3.0.3.0
Cabal-1.7.0
haskell98-1.0.1.0
haddock-2.4.2
ghc-6.11
]
[document -feager-blackholing
Simon Marlow <marlowsd at gmail.com>**20090115093922
Ignore-this: 5958a16c7148cb5df0f4b3f1e1dee6d6
]
[External Core: re-add code I removed mistakenly in last commit
Tim Chevalier <chevalier at alum.wellesley.edu>**20090115002612]
[External Core lib: lots of cleanup
Tim Chevalier <chevalier at alum.wellesley.edu>**20090114224428
- Factor out code for applying newtypes from Check into CoreUtils
- Use this code in Prep, which allowed for some simplification
- Change Merge and ElimDeadCode to not flatten top-level binds
- Add a flag for elimDeadCode to tell it whether to keep
exported bindings or not.
- Other things.
]
[External Core: print out more precise dependency info
Tim Chevalier <chevalier at alum.wellesley.edu>**20090114221734
Print out the same recursive/non-recursive binding groups
that existed in internal Core in an External Core file,
rather than dumping everything into one big recursive group.
]
[Fix "make install": Put "[]" in the install package.conf
Ian Lynagh <igloo at earth.li>**20090114205945]
[Remove redundant import; spotted by Thorkil Naur
Ian Lynagh <igloo at earth.li>**20090114181937]
[Remove a redundant import
Ian Lynagh <igloo at earth.li>**20090114181212]
[Detect when a C finalizer calls back to Haskell
Simon Marlow <marlowsd at gmail.com>**20090114121526
Ignore-this: e361d7278e2478da2f300625076cc0ae
This is illegal now, after the fix for #1364, but it turns out that
the existing check for dodgy callbacks doesn't catch finalizers
calling back, so we need another test. This will be particularly
important for 6.10.2, because the behaviour has changed.
]
[Fix Trac #2931
simonpj at microsoft.com**20090113170948
Ignore-this: 6ff0207627165f3f7bd145171e59b533
Fix the lexical analyser when it encounters 'x<EOF> and Template
Haskell is on.
]
[Rewrite CorePrep and improve eta expansion
simonpj at microsoft.com**20090113164953
Ignore-this: 910d1d613592c116714c324618b1e45c
This patch does two main things
a) Rewrite most of CorePrep to be much easier to understand (I hope!).
The invariants established by CorePrep are now written out, and
the code is more perspicuous. It is surpringly hard to get right,
and the old code had become quite incomprehensible.
b) Rewrite the eta-expander so that it does a bit of simplifying
on-the-fly, and thereby guarantees to maintain the CorePrep
invariants. This make it much easier to use from CorePrep, and
is a generally good thing anyway.
A couple of pieces of re-structuring:
* I moved the eta-expander and arity analysis stuff into a new
module coreSyn/CoreArity.
Max will find that the type CoreArity.EtaInfo looks strangely
familiar.
* I moved a bunch of comments from Simplify to OccurAnal; that's
why it looks as though there's a lot of lines changed in those
modules.
On the way I fixed various things
- Function arguments are eta expanded
f (map g) ===> let s = \x. map g x in f s
- Trac #2368
The result is a modest performance gain, I think mainly due
to the first of these changes:
--------------------------------------------------------------------------------
Program Size Allocs Runtime Elapsed
--------------------------------------------------------------------------------
Min -1.0% -17.4% -19.1% -46.4%
Max +0.3% +0.5% +5.4% +53.8%
Geometric Mean -0.1% -0.3% -7.0% -10.2%
]
[Rename isIdentityCoercion to isIdentityCoI; add Coercion.isIdentityCoercion
simonpj at microsoft.com**20090113164804
Ignore-this: ac05f38a092959c08972c768fe427e06
]
[Spelling in comment only
simonpj at microsoft.com**20090113164624
Ignore-this: 2eb6372f996b9133683918aecad1a5aa
]
[Make the ASSERT more informative
simonpj at microsoft.com**20090113164133
Ignore-this: 4059e33cf594403e03c0eb4169dc300f
]
[Export mapOL from OrdList
simonpj at microsoft.com**20090113164051
Ignore-this: 3debd81ae00d3745ec248197b97d312f
]
[Improve error messages slightly
simonpj at microsoft.com**20090113164020
Ignore-this: 89090ec03d8ea201f64105c0dbb8d5f9
]
[Do not do SpecConstr on functions that unconditionally diverge
simonpj at microsoft.com**20090113162918
Ignore-this: cb0c210b936941b241c312c72545bfe2
There is no point in specialising a function that is guaranteed to
diverge, and doing so screwed up arity stuff.
See Note [Do not specialise diverging functions].
]
[Make -XTypeFamilies imply -XRelaxedPolyRec (Trac #2944)
simonpj at microsoft.com**20090113162716
Ignore-this: 8ab21566045c8bc8050ed7dda04e2df
]
[Fix Trac #2937: deserialising assoicated type definitions
simonpj at microsoft.com**20090113153217
Ignore-this: 7d7852a70a34fc22773757709735cc24
The deserialiser (TcIface) for associated type definitions wasn't
taking into account that the class decl brings into scope some
type variables that scope over the data/type family declaration.
Easy to fix: the new function is TcIface.bindIfaceTyVars_AT
]
[Always check the result of pthread_mutex_lock() and pthread_mutex_unlock().
Matthias Kilian <kili at outback.escape.de>**20090104192443
Don't check pthread_mutex_*lock() only on Linux and/or only if DEBUG
is defined. The return values of those functions are well defined
and should be supported on all operation systems with pthreads. The
checks are cheap enough to do them even in the default build (without
-DDEBUG).
While here, recycle an unused macro ASSERT_LOCK_NOTHELD, and let
the debugBelch part enabled with -DLOCK_DEBUG work independently
of -DDEBUG.
]
[sanity checking fixes
Simon Marlow <marlowsd at gmail.com>**20090112121042]
[Keep the remembered sets local to each thread during parallel GC
Simon Marlow <marlowsd at gmail.com>**20090112121024
This turns out to be quite vital for parallel programs:
- The way we discover which threads to traverse is by finding
dirty threads via the remembered sets (aka mutable lists).
- A dirty thread will be on the remembered set of the capability
that was running it, and we really want to traverse that thread's
stack using the GC thread for the capability, because it is in
that CPU's cache. If we get this wrong, we get penalised badly by
the memory system.
Previously we had per-capability mutable lists but they were
aggregated before GC and traversed by just one of the GC threads.
This resulted in very poor performance particularly for parallel
programs with deep stacks.
Now we keep per-capability remembered sets throughout GC, which also
removes a lock (recordMutableGen_sync).
]
[indicate which TSOs are dirty in the printAllThreads() output
Simon Marlow <marlowsd at gmail.com>**20090107151449]
[Fix Trac #2584: Pretty printing of types with HsDocTy
David Waern <david.waern at gmail.com>**20090109191713
The pretty printing clause for HsDocTy was wrong, causing brackets to be left
out. We now print Haddock comments on types as if they were postfix type
operators.
]
[Add "Word size" to the +RTS --info output
Ian Lynagh <igloo at earth.li>**20090109160454]
[Check that make supports eval
Ian Lynagh <igloo at earth.li>**20090109151006]
[Add some more fields to +RTS --info
Ian Lynagh <igloo at earth.li>**20090108131101]
[FIX BUILD on Windows (fix for #2873 broke it)
Simon Marlow <marlowsd at gmail.com>**20090109090658]
[when calling mmap() with MAP_ANON, the fd argument should be -1
Simon Marlow <marlowsd at gmail.com>**20090108155341
might fix #2925
]
[Fix Trac #2914: record wild cards and assoicated types
simonpj at microsoft.com**20090108124118]
[Fix #2873: should fail if a package DB desn't exist
Simon Marlow <marlowsd at gmail.com>**20090108095628
We allowed non-existence before because the user DB is allowed to not
exist, so now we have an explicit exception for that case.
]
[Close the races between throwTo and thread completion
Simon Marlow <marlowsd at gmail.com>**20090107140507
Any threads we missed were being caught by the GC (possibly the idle
GC if the system was otherwise inactive), but that's not ideal. The
fix (from Bertram Felgenhauer) is to use lockTSO to synchronise,
imposing an unconditional lockTSO on thread exit. I couldn't measure
any performance overhead from doing this, so it seems reasonable.
]
[add comment
Simon Marlow <marlowsd at gmail.com>**20090107121142]
[Fix two more locking issues in throwTo()
Bertram Felgenhauer <int-e at gmx.de>**20090107120808]
[maybePerformBlockedException() should handle ThreadComplete/ThreadKilled
Simon Marlow <marlowsd at gmail.com>**20090107120734
Part of the fix for #2910
]
[fix a race where the timer signal could remain turned off, leading to deadlock
Simon Marlow <marlowsd at gmail.com>**20090107120652]
[putMVar and takeMVar: add write_barrier() to fix race with throwTo
Simon Marlow <marlowsd at gmail.com>**20090107112026]
[cruft removal
Simon Marlow <marlowsd at gmail.com>**20090106154408]
[wake up the blocked exception queue on ThreadFinished; fixes #2910
Simon Marlow <marlowsd at gmail.com>**20090106153254]
[bump GHC's max stack size to 512M
Simon Marlow <marlowsd at gmail.com>**20081219112211
To accomodate compiling very long static lists (#2002)
]
[ext-core: change .cabal file so we can build with either GHC 6.8 or 6.10
Tim Chevalier <chevalier at alum.wellesley.edu>**20090105192757]
[ext-core: fix some Prep bugs
Tim Chevalier <chevalier at alum.wellesley.edu>**20090105192734]
[ext-core: use shorter names when combining modules
Tim Chevalier <chevalier at alum.wellesley.edu>**20090105192645]
[ext-core: twiddle primitive things
Tim Chevalier <chevalier at alum.wellesley.edu>**20090105192434]
[Don't pin a register for gc_thread on SPARC.
Ben.Lippmeier at anu.edu.au**20090105030758
This makes the build work again.
]
[Require HsColour by default
Ian Lynagh <igloo at earth.li>**20090104214647
This should stop us ending up without HsColour'ed sources on some
platforms.
We also now tell Cabal where to find HsColour, rather than it finding
it itself.
]
[Fix build
Ian Lynagh <igloo at earth.li>**20090104211810]
[Add GHCi completions to :set and :show
Ori Avtalion <ori at avtalion.name>**20081209194210]
[Fix sync-all: Check for --complete/partial before --<anything>
Ian Lynagh <igloo at earth.li>**20090104184652
Patch from megacz in trac #2857
]
[Remove time from extralibs at request of maintainer
Ian Lynagh <igloo at earth.li>**20090104115509]
[validate fix: InteractiveEval no longer needs to import IdInfo
Ian Lynagh <igloo at earth.li>**20090103154754]
[Fix validate: strs is no longer used in IfaceSyn
Ian Lynagh <igloo at earth.li>**20090103153624]
[Remove trailing whitespace from HaddockUtils
Ian Lynagh <igloo at earth.li>**20081229191727]
[Fix warnings in HaddockUtils
Ian Lynagh <igloo at earth.li>**20081229191657]
[Remove dead code from HaddockUtils
Ian Lynagh <igloo at earth.li>**20081229191430]
[Make record selectors into ordinary functions
simonpj at microsoft.com**20090102142851
This biggish patch addresses Trac #2670. The main effect is to make
record selectors into ordinary functions, whose unfoldings appear in
interface files, in contrast to their previous existence as magic
"implicit Ids". This means that the usual machinery of optimisation,
analysis, and inlining applies to them, which was failing before when
the selector was somewhat complicated. (Which it can be when
strictness annotations, unboxing annotations, and GADTs are involved.)
The change involves the following points
* Changes in Var.lhs to the representation of Var. Now a LocalId can
have an IdDetails as well as a GlobalId. In particular, the
information that an Id is a record selector is kept in the
IdDetails. While compiling the current module, the record selector
*must* be a LocalId, so that it participates properly in compilation
(free variables etc).
This led me to change the (hidden) representation of Var, so that there
is now only one constructor for Id, not two.
* The IdDetails is persisted into interface files, so that an
importing module can see which Ids are records selectors.
* In TcTyClDecls, we generate the record-selector bindings in renamed,
but not typechecked form. In this way, we can get the typechecker
to add all the types and so on, which is jolly helpful especially
when GADTs or type families are involved. Just like derived
instance declarations.
This is the big new chunk of 180 lines of code (much of which is
commentary). A call to the same function, mkAuxBinds, is needed in
TcInstDcls for associated types.
* The typechecker therefore has to pin the correct IdDetails on to
the record selector, when it typechecks it. There was a neat way
to do this, by adding a new sort of signature to HsBinds.Sig, namely
IdSig. This contains an Id (with the correct Name, Type, and IdDetails);
the type checker uses it as the binder for the final binding. This
worked out rather easily.
* Record selectors are no longer "implicit ids", which entails changes to
IfaceSyn.ifaceDeclSubBndrs
HscTypes.implicitTyThings
TidyPgm.getImplicitBinds
(These three functions must agree.)
* MkId.mkRecordSelectorId is deleted entirely, some 300+ lines (incl
comments) of very error prone code. Happy days.
* A TyCon no longer contains the list of record selectors:
algTcSelIds is gone
The renamer is unaffected, including the way that import and export of
record selectors is handled.
Other small things
* IfaceSyn.ifaceDeclSubBndrs had a fragile test for whether a data
constructor had a wrapper. I've replaced that with an explicit flag
in the interface file. More robust I hope.
* I renamed isIdVar to isId, which touched a few otherwise-unrelated files.
]
[Fix Trac #2721: reject newtype deriving if the class has associated types
simonpj at microsoft.com**20081231164300]
[-XImpredicativeTypes implies -XRankNTypes, and improve error msg in TcMType
simonpj at microsoft.com**20081231152517
If you are going for impredicative types you almost certainly want RankN
too. The change to TcMType improves the error when you say
T (forall a. blah)
where T is a type synonym. This doesn't necessarily need impredicativity,
if you have LiberalTypeSynonyms.
]
[Fix Trac #2856: make deriving work for type families
simonpj at microsoft.com**20081231144151
Darn, but TcDeriv is complicated, when type families get in on
the act! This patch makes GeneralisedNewtypeDeriving work
properly for type families. I think.
In order to do so, I found that GeneralisedNewtypeDeriving can
work for recursive newtypes too -- and since families are conservatively
marked recursive, that's a crucial part of the fix, and useful too.
See Note [Recursive newtypes] in TcDeriv.
]
[White space and spelling in comments
simonpj at microsoft.com**20081231144131]
[Remove -XImpredicativeTypes from -fglasgow-exts
simonpj at microsoft.com**20081231144006
See Trac #2846: impredicative types are far from stable, so
-fglasgow-exts should not imply them. Maybe we should merge
this into 6.10?
]
[Improve error reporting for 'deriving'
simonpj at microsoft.com**20081231143521
a) Improve the extra suggested fix when there's a "no instance"
error in a deriving clause.
b) Improve error location recording in tcInstDecl2
Many of the changes in tcInstDecl2 are simple reformatting.
]
[Improve error message in deriving (fix Trac #2851)
simonpj at microsoft.com**20081230165906]
[Avoid nasty name clash with associated data types (fixes Trac #2888)
simonpj at microsoft.com**20081230164432
The main bug was in TcHsType; see Note [Avoid name clashes for
associated data types]. However I did a bit of re-factoring while
I was abouut it.
I'm still a but unhappy with the use of TyCon.setTyConArgPoss; it'd
be better to construct the TyCon correctly in the first place. But
that means passing an extra parameter to tcTyDecl1... maybe we should
do this.
]
[Refactor RnEnv to fix Trac #2901
simonpj at microsoft.com**20081230150445
This tidy-up fixes Trac #2901, and eliminates 20 lines of code.
Mainly this is done by making a version of lookupGlobalOccRn that
returns (Maybe Name); this replaces lookupSrcOccRn but does more.
]
[Add quotes to error message
simonpj at microsoft.com**20081230150402]
[Tidy up treatment of big lambda (fixes Trac #2898)
simonpj at microsoft.com**20081230145948
There was a leftover big lambda in the CorePrep'd code, which confused
the bytecode generator. Actually big lambdas are harmless. This patch
refactors ByteCodeGen so that it systemantically used 'bcView' to eliminate
junk. I did a little clean up in CorePrep too.
See comments in Trac #2898.
]
[Fix warnings in ByteCodeAsm
Ian Lynagh <igloo at earth.li>**20081229174726]
[Fix warnings in ByteCodeInstr
Ian Lynagh <igloo at earth.li>**20081229173331]
[Fix warnings in Rules
Ian Lynagh <igloo at earth.li>**20081229171832]
[Fix warnings in StgCmmForeign
Ian Lynagh <igloo at earth.li>**20081229165957]
[Fix warnings in CgCallConv
Ian Lynagh <igloo at earth.li>**20081229165402]
[Fix warnings in SMRep
Ian Lynagh <igloo at earth.li>**20081229164959]
[Fix warnings in ClosureInfo
Ian Lynagh <igloo at earth.li>**20081229164618]
[Fix warnings in CgTicky
Ian Lynagh <igloo at earth.li>**20081229153416]
[Fix warnings in CgCon
Ian Lynagh <igloo at earth.li>**20081229151733]
[Fix warnings in WorkWrap
Ian Lynagh <igloo at earth.li>**20081229150406]
[Fix warnings in NCGMonad
Ian Lynagh <igloo at earth.li>**20081229145627]
[Fix warnings in CmmInfo
Ian Lynagh <igloo at earth.li>**20081229145307]
[Fix warnings in CmmCPSGen
Ian Lynagh <igloo at earth.li>**20081229145119]
[Fix warnings in CmmProcPoint
Ian Lynagh <igloo at earth.li>**20081229144214]
[Fix warnings in CmmCallConv
Ian Lynagh <igloo at earth.li>**20081229141924]
[Fix warnings in CmmLive
Ian Lynagh <igloo at earth.li>**20081229141035]
[Fix warnings in CmmCPS
Ian Lynagh <igloo at earth.li>**20081229133158]
[Fix warnings in CmmUtils
Ian Lynagh <igloo at earth.li>**20081229132637]
[Comment out dead function breakProc
Ian Lynagh <igloo at earth.li>**20081229115647]
[Fix warnings in CmmBrokenBlock
Ian Lynagh <igloo at earth.li>**20081229115527]
[Comments only. Haddockify parts of TcRnTypes.
Thomas Schilling <nominolo at googlemail.com>**20081211154657]
[Comments only. Fix typo.
Thomas Schilling <nominolo at googlemail.com>**20081211153104]
[Include PprTyThings in tags file.
Thomas Schilling <nominolo at googlemail.com>**20081211153005]
[Use DynFlags to work out if we are doing ticky ticky profiling
Ian Lynagh <igloo at earth.li>**20081218161928
We used to use StaticFlags
]
[Fix warnings in CgExpr
Ian Lynagh <igloo at earth.li>**20081217201152]
[Fix warnings in CgBindery
Ian Lynagh <igloo at earth.li>**20081217194607]
[Fix warnings in CgStackery
Ian Lynagh <igloo at earth.li>**20081217191713]
[Fix warnings in CgCase
Ian Lynagh <igloo at earth.li>**20081217190848]
[Remove some dead code from CgCase
Ian Lynagh <igloo at earth.li>**20081217184755]
[Fix warnings in StgCmmProf
Ian Lynagh <igloo at earth.li>**20081217182236]
[Fix warnings in CgProf
Ian Lynagh <igloo at earth.li>**20081217181711]
[Fix warnings in CgInfoTbls
Ian Lynagh <igloo at earth.li>**20081217180144]
[Remove dead function srtLabelAndLength from CgInfoTbls
Ian Lynagh <igloo at earth.li>**20081217180044]
[Fix warnings in CgHeapery
Ian Lynagh <igloo at earth.li>**20081217175726]
[Fix warnings in CgTailCall
Ian Lynagh <igloo at earth.li>**20081217175040]
[Remove a little dead code from CgTailCall
Ian Lynagh <igloo at earth.li>**20081217174947]
[Fix warnings in CodeGen
Ian Lynagh <igloo at earth.li>**20081217165904]
[Fix warnings in StgCmmTicky
Ian Lynagh <igloo at earth.li>**20081217165433]
[Remove dead code from CgUtils
Ian Lynagh <igloo at earth.li>**20081217163920]
[Fix warnings in CgPrimOp
Ian Lynagh <igloo at earth.li>**20081217163912]
[Fix warnings in CgMonad
Ian Lynagh <igloo at earth.li>**20081217163903]
[Fix warnings in CgClosure
Ian Lynagh <igloo at earth.li>**20081217163850]
[Fix warnings in CgForeignCall
Ian Lynagh <igloo at earth.li>**20081215222515]
[Remove some redundant code
Ian Lynagh <igloo at earth.li>**20081215194047
We were looking at opt_DoTickyProfiling, and if it was set claling ifTicky
which looks at opt_DoTickyProfiling itself.
]
[Fix warnings in CgLetNoEscape
Ian Lynagh <igloo at earth.li>**20081215173752]
[Workaround for #2262, from Barney Stratford
Simon Marlow <marlowsd at gmail.com>**20081216124706
See http://www.haskell.org/pipermail/glasgow-haskell-users/2008-December/016333.html
]
[UNDO: Add -fpass-case-bndr-to-join-points
Simon Marlow <marlowsd at gmail.com>**20081216114235
rolling back:
Fri Dec 5 10:51:59 GMT 2008 simonpj at microsoft.com
* Add -fpass-case-bndr-to-join-points
See Note [Passing the case binder to join points] in Simplify.lhs
The default now is *not* to pass the case binder. There are some
nofib results with the above note; the effect is almost always
negligible.
I don't expect this flag to be used by users (hence no docs). It's just
there to let me try the performance effects of switching on and off.
M ./compiler/main/StaticFlagParser.hs +1
M ./compiler/main/StaticFlags.hs +4
M ./compiler/simplCore/Simplify.lhs -14 +73
]
[Rollback INLINE patches
Simon Marlow <marlowsd at gmail.com>**20081216103556
rolling back:
Fri Dec 5 16:54:00 GMT 2008 simonpj at microsoft.com
* Completely new treatment of INLINE pragmas (big patch)
This is a major patch, which changes the way INLINE pragmas work.
Although lots of files are touched, the net is only +21 lines of
code -- and I bet that most of those are comments!
HEADS UP: interface file format has changed, so you'll need to
recompile everything.
There is not much effect on overall performance for nofib,
probably because those programs don't make heavy use of INLINE pragmas.
Program Size Allocs Runtime Elapsed
Min -11.3% -6.9% -9.2% -8.2%
Max -0.1% +4.6% +7.5% +8.9%
Geometric Mean -2.2% -0.2% -1.0% -0.8%
(The +4.6% for on allocs is cichelli; see other patch relating to
-fpass-case-bndr-to-join-points.)
The old INLINE system
~~~~~~~~~~~~~~~~~~~~~
The old system worked like this. A function with an INLINE pragam
got a right-hand side which looked like
f = __inline_me__ (\xy. e)
The __inline_me__ part was an InlineNote, and was treated specially
in various ways. Notably, the simplifier didn't inline inside an
__inline_me__ note.
As a result, the code for f itself was pretty crappy. That matters
if you say (map f xs), because then you execute the code for f,
rather than inlining a copy at the call site.
The new story: InlineRules
~~~~~~~~~~~~~~~~~~~~~~~~~~
The new system removes the InlineMe Note altogether. Instead there
is a new constructor InlineRule in CoreSyn.Unfolding. This is a
bit like a RULE, in that it remembers the template to be inlined inside
the InlineRule. No simplification or inlining is done on an InlineRule,
just like RULEs.
An Id can have an InlineRule *or* a CoreUnfolding (since these are two
constructors from Unfolding). The simplifier treats them differently:
- An InlineRule is has the substitution applied (like RULES) but
is otherwise left undisturbed.
- A CoreUnfolding is updated with the new RHS of the definition,
on each iteration of the simplifier.
An InlineRule fires regardless of size, but *only* when the function
is applied to enough arguments. The "arity" of the rule is specified
(by the programmer) as the number of args on the LHS of the "=". So
it makes a difference whether you say
{-# INLINE f #-}
f x = \y -> e or f x y = e
This is one of the big new features that InlineRule gives us, and it
is one that Roman really wanted.
In contrast, a CoreUnfolding can fire when it is applied to fewer
args than than the function has lambdas, provided the result is small
enough.
Consequential stuff
~~~~~~~~~~~~~~~~~~~
* A 'wrapper' no longer has a WrapperInfo in the IdInfo. Instead,
the InlineRule has a field identifying wrappers.
* Of course, IfaceSyn and interface serialisation changes appropriately.
* Making implication constraints inline nicely was a bit fiddly. In
the end I added a var_inline field to HsBInd.VarBind, which is why
this patch affects the type checker slightly
* I made some changes to the way in which eta expansion happens in
CorePrep, mainly to ensure that *arguments* that become let-bound
are also eta-expanded. I'm still not too happy with the clarity
and robustness fo the result.
* We now complain if the programmer gives an INLINE pragma for
a recursive function (prevsiously we just ignored it). Reason for
change: we don't want an InlineRule on a LoopBreaker, because then
we'd have to check for loop-breaker-hood at occurrence sites (which
isn't currenlty done). Some tests need changing as a result.
This patch has been in my tree for quite a while, so there are
probably some other minor changes.
M ./compiler/basicTypes/Id.lhs -11
M ./compiler/basicTypes/IdInfo.lhs -82
M ./compiler/basicTypes/MkId.lhs -2 +2
M ./compiler/coreSyn/CoreFVs.lhs -2 +25
M ./compiler/coreSyn/CoreLint.lhs -5 +1
M ./compiler/coreSyn/CorePrep.lhs -59 +53
M ./compiler/coreSyn/CoreSubst.lhs -22 +31
M ./compiler/coreSyn/CoreSyn.lhs -66 +92
M ./compiler/coreSyn/CoreUnfold.lhs -112 +112
M ./compiler/coreSyn/CoreUtils.lhs -185 +184
M ./compiler/coreSyn/MkExternalCore.lhs -1
M ./compiler/coreSyn/PprCore.lhs -4 +40
M ./compiler/deSugar/DsBinds.lhs -70 +118
M ./compiler/deSugar/DsForeign.lhs -2 +4
M ./compiler/deSugar/DsMeta.hs -4 +3
M ./compiler/hsSyn/HsBinds.lhs -3 +3
M ./compiler/hsSyn/HsUtils.lhs -2 +7
M ./compiler/iface/BinIface.hs -11 +25
M ./compiler/iface/IfaceSyn.lhs -13 +21
M ./compiler/iface/MkIface.lhs -24 +19
M ./compiler/iface/TcIface.lhs -29 +23
M ./compiler/main/TidyPgm.lhs -55 +49
M ./compiler/parser/ParserCore.y -5 +6
M ./compiler/simplCore/CSE.lhs -2 +1
M ./compiler/simplCore/FloatIn.lhs -6 +1
M ./compiler/simplCore/FloatOut.lhs -23
M ./compiler/simplCore/OccurAnal.lhs -36 +5
M ./compiler/simplCore/SetLevels.lhs -59 +54
M ./compiler/simplCore/SimplCore.lhs -48 +52
M ./compiler/simplCore/SimplEnv.lhs -26 +22
M ./compiler/simplCore/SimplUtils.lhs -28 +4
M ./compiler/simplCore/Simplify.lhs -91 +109
M ./compiler/specialise/Specialise.lhs -15 +18
M ./compiler/stranal/WorkWrap.lhs -14 +11
M ./compiler/stranal/WwLib.lhs -2 +2
M ./compiler/typecheck/Inst.lhs -1 +3
M ./compiler/typecheck/TcBinds.lhs -17 +27
M ./compiler/typecheck/TcClassDcl.lhs -1 +2
M ./compiler/typecheck/TcExpr.lhs -4 +6
M ./compiler/typecheck/TcForeign.lhs -1 +1
M ./compiler/typecheck/TcGenDeriv.lhs -14 +13
M ./compiler/typecheck/TcHsSyn.lhs -3 +2
M ./compiler/typecheck/TcInstDcls.lhs -5 +4
M ./compiler/typecheck/TcRnDriver.lhs -2 +11
M ./compiler/typecheck/TcSimplify.lhs -10 +17
M ./compiler/vectorise/VectType.hs +7
Mon Dec 8 12:43:10 GMT 2008 simonpj at microsoft.com
* White space only
M ./compiler/simplCore/Simplify.lhs -2
Mon Dec 8 12:48:40 GMT 2008 simonpj at microsoft.com
* Move simpleOptExpr from CoreUnfold to CoreSubst
M ./compiler/coreSyn/CoreSubst.lhs -1 +87
M ./compiler/coreSyn/CoreUnfold.lhs -72 +1
Mon Dec 8 17:30:18 GMT 2008 simonpj at microsoft.com
* Use CoreSubst.simpleOptExpr in place of the ad-hoc simpleSubst (reduces code too)
M ./compiler/deSugar/DsBinds.lhs -50 +16
Tue Dec 9 17:03:02 GMT 2008 simonpj at microsoft.com
* Fix Trac #2861: bogus eta expansion
Urghlhl! I "tided up" the treatment of the "state hack" in CoreUtils, but
missed an unexpected interaction with the way that a bottoming function
simply swallows excess arguments. There's a long
Note [State hack and bottoming functions]
to explain (which accounts for most of the new lines of code).
M ./compiler/coreSyn/CoreUtils.lhs -16 +53
Mon Dec 15 10:02:21 GMT 2008 Simon Marlow <marlowsd at gmail.com>
* Revert CorePrep part of "Completely new treatment of INLINE pragmas..."
The original patch said:
* I made some changes to the way in which eta expansion happens in
CorePrep, mainly to ensure that *arguments* that become let-bound
are also eta-expanded. I'm still not too happy with the clarity
and robustness fo the result.
Unfortunately this change apparently broke some invariants that were
relied on elsewhere, and in particular lead to panics when compiling
with profiling on.
Will re-investigate in the new year.
M ./compiler/coreSyn/CorePrep.lhs -53 +58
M ./configure.ac -1 +1
Mon Dec 15 12:28:51 GMT 2008 Simon Marlow <marlowsd at gmail.com>
* revert accidental change to configure.ac
M ./configure.ac -1 +1
]
[revert accidental change to configure.ac
Simon Marlow <marlowsd at gmail.com>**20081215122851]
[Revert CorePrep part of "Completely new treatment of INLINE pragmas..."
Simon Marlow <marlowsd at gmail.com>**20081215100221
The original patch said:
* I made some changes to the way in which eta expansion happens in
CorePrep, mainly to ensure that *arguments* that become let-bound
are also eta-expanded. I'm still not too happy with the clarity
and robustness fo the result.
Unfortunately this change apparently broke some invariants that were
relied on elsewhere, and in particular lead to panics when compiling
with profiling on.
Will re-investigate in the new year.
]
[wake up other Capabilities even when there is only one spark (see #2868)
Simon Marlow <marlowsd at gmail.com>**20081210164644]
[Document new GC options -q1 and -qg<n>
Simon Marlow <marlowsd at gmail.com>**20081210164557]
[SysTools no longer needs -fno-cse
Ian Lynagh <igloo at earth.li>**20081211182327]
[Make the lists of files and directories to be cleaned-up non-global
Ian Lynagh <igloo at earth.li>**20081211180739
They still need to be stored in IORefs, as the exception handler needs
to know what they all are.
]
[The default cleanup handler should /always/ delete the temp files
Ian Lynagh <igloo at earth.li>**20081211170006
Not only if there has been an exception. It worked for GHC anyway,
as it was getting an ExitSuccess exception, but GHC API clients
shouldn't be required to do that.
]
[Fix user guide typesetting
Ian Lynagh <igloo at earth.li>**20081210165434]
[FIX #1364: added support for C finalizers that run as soon as the value is not longer reachable.
Simon Marlow <marlowsd at gmail.com>**20081210150425
Patch originally by Ivan Tomac <tomac at pacific.net.au>, amended by
Simon Marlow:
- mkWeakFinalizer# commoned up with mkWeakFinalizerEnv#
- GC parameters to ALLOC_PRIM fixed
]
[On FreeBSD, try MAP_FIXED if ordinary mmap() fails to give us suitable memory
Simon Marlow <marlowsd at gmail.com>**20081210115751
This appears to be necessary on FreeBSD. It might be necessary on
other OSs too, but I'm being cautious because using MAP_FIXED can lead
to crashes by overwriting existing mappings, and we have no (easy) way
to prevent that.
]
[Document hs_init() infelicity (#2863)
Simon Marlow <marlowsd at gmail.com>**20081209164322]
[Improve documentation for data family instances (cf Trac #1968)
simonpj at microsoft.com**20081210054432
The HEAD allows GADT syntax for data/newtype family instances.
(GHC 6.10 does not seem to.)
]
[Make some profiling flags dynamic
Ian Lynagh <igloo at earth.li>**20081209230157
In particular:
-fauto-sccs-on-all-toplevs -auto-all -no-auto-all
-fauto-sccs-on-exported-toplevs -auto -no-auto
-fauto-sccs-on-individual-cafs -caf-all -no-caf-all
]
[Fix warnings in StgCmmGran
Ian Lynagh <igloo at earth.li>**20081209222413]
[Add OPTIONS_CATCH,DERIVE,YHC to those that GHC knows about; trac #2847
Ian Lynagh <igloo at earth.li>**20081209191724]
[Fix warnings in CgHpc
Ian Lynagh <igloo at earth.li>**20081209191713]
[Parse pragma names better; trac #2847
Ian Lynagh <igloo at earth.li>**20081209190318
We require that pragma names are not followed by pragma character,
defined as
isAlphaNum c || c == '_'
]
[Fix warnings in CgParallel
Ian Lynagh <igloo at earth.li>**20081209184402]
[Fix warnings in StgCmmHpc
Ian Lynagh <igloo at earth.li>**20081209184004]
[Remove an unnecessary -w flag
Ian Lynagh <igloo at earth.li>**20081209183812]
[Fix Trac #2861: bogus eta expansion
simonpj at microsoft.com**20081209170302
Urghlhl! I "tided up" the treatment of the "state hack" in CoreUtils, but
missed an unexpected interaction with the way that a bottoming function
simply swallows excess arguments. There's a long
Note [State hack and bottoming functions]
to explain (which accounts for most of the new lines of code).
]
[Fix #2592: do an orderly shutdown when the heap is exhausted
Simon Marlow <marlowsd at gmail.com>**20081209105919
Really we should be raising an exception in this case, but that's
tricky (see comments). At least now we shut down the runtime
correctly rather than just exiting.
]
[Fix #2848: avoid overflow during time calculation
Simon Marlow <marlowsd at gmail.com>**20081209105600]
[Fix #2838: we should narrow a CmmInt before converting to ImmInteger
Simon Marlow <marlowsd at gmail.com>**20081209105515]
[fix an assertion failure in prof/threaded/debug mode
Simon Marlow <marlowsd at gmail.com>**20081204101201]
[Inject implicit bindings after CoreTidy, not before Simplify
simonpj at microsoft.com**20081208173525
Originally I inject the "implicit bindings" (record selectors, class
method selectors, data con wrappers...) after CoreTidy. However, in a
misguided attempt to fix Trac #2070, I moved the injection point to
before the Simplifier, so that record selectors would be optimised by
the simplifier.
This was misguided because record selectors (indeed all implicit bindings)
are GlobalIds, whose IdInfo is meant to be frozen. But the Simplifier,
and other Core-to-Core optimisations, merrily change the IdInfo. That
ultimately made Trac #2844 happen, where a record selector got arity 2,
but the GlobalId (which importing scopes re-construct from the class decl
rather than reading from the interface file) has arity 1.
So this patch moves the injection back to CoreTidy. Happily #2070 should
still be OK because we now use CoreSubst.simpleOptExpr on the unfoldings
for implict things, which gets rid of the most gratuitous infelicities.
Still, there's a strong case for stoppping record selectors from being
GlobalIds, and treating them much more like dict-funs. I'm thinking
about that. Meanwhile, #2844 is ok now.
]
[Add assertion for arity match (checks Trac #2844)
simonpj at microsoft.com**20081208173241
The exported arity of a function must match the arity for the
STG function. Trac #2844 was a pretty obscure manifestation of
the failure of this invariant. This patch doesn't cure the bug;
rather it adds an assertion to CoreToStg to check the invariant
so we should get an earlier and less obscure warning if this
fails in future.
]
[Use CoreSubst.simpleOptExpr in place of the ad-hoc simpleSubst (reduces code too)
simonpj at microsoft.com**20081208173018]
[Move simpleOptExpr from CoreUnfold to CoreSubst
simonpj at microsoft.com**20081208124840]
[White space only
simonpj at microsoft.com**20081208124310]
[Comments only
simonpj at microsoft.com**20081208124155]
[Completely new treatment of INLINE pragmas (big patch)
simonpj at microsoft.com**20081205165400
This is a major patch, which changes the way INLINE pragmas work.
Although lots of files are touched, the net is only +21 lines of
code -- and I bet that most of those are comments!
HEADS UP: interface file format has changed, so you'll need to
recompile everything.
There is not much effect on overall performance for nofib,
probably because those programs don't make heavy use of INLINE pragmas.
Program Size Allocs Runtime Elapsed
Min -11.3% -6.9% -9.2% -8.2%
Max -0.1% +4.6% +7.5% +8.9%
Geometric Mean -2.2% -0.2% -1.0% -0.8%
(The +4.6% for on allocs is cichelli; see other patch relating to
-fpass-case-bndr-to-join-points.)
The old INLINE system
~~~~~~~~~~~~~~~~~~~~~
The old system worked like this. A function with an INLINE pragam
got a right-hand side which looked like
f = __inline_me__ (\xy. e)
The __inline_me__ part was an InlineNote, and was treated specially
in various ways. Notably, the simplifier didn't inline inside an
__inline_me__ note.
As a result, the code for f itself was pretty crappy. That matters
if you say (map f xs), because then you execute the code for f,
rather than inlining a copy at the call site.
The new story: InlineRules
~~~~~~~~~~~~~~~~~~~~~~~~~~
The new system removes the InlineMe Note altogether. Instead there
is a new constructor InlineRule in CoreSyn.Unfolding. This is a
bit like a RULE, in that it remembers the template to be inlined inside
the InlineRule. No simplification or inlining is done on an InlineRule,
just like RULEs.
An Id can have an InlineRule *or* a CoreUnfolding (since these are two
constructors from Unfolding). The simplifier treats them differently:
- An InlineRule is has the substitution applied (like RULES) but
is otherwise left undisturbed.
- A CoreUnfolding is updated with the new RHS of the definition,
on each iteration of the simplifier.
An InlineRule fires regardless of size, but *only* when the function
is applied to enough arguments. The "arity" of the rule is specified
(by the programmer) as the number of args on the LHS of the "=". So
it makes a difference whether you say
{-# INLINE f #-}
f x = \y -> e or f x y = e
This is one of the big new features that InlineRule gives us, and it
is one that Roman really wanted.
In contrast, a CoreUnfolding can fire when it is applied to fewer
args than than the function has lambdas, provided the result is small
enough.
Consequential stuff
~~~~~~~~~~~~~~~~~~~
* A 'wrapper' no longer has a WrapperInfo in the IdInfo. Instead,
the InlineRule has a field identifying wrappers.
* Of course, IfaceSyn and interface serialisation changes appropriately.
* Making implication constraints inline nicely was a bit fiddly. In
the end I added a var_inline field to HsBInd.VarBind, which is why
this patch affects the type checker slightly
* I made some changes to the way in which eta expansion happens in
CorePrep, mainly to ensure that *arguments* that become let-bound
are also eta-expanded. I'm still not too happy with the clarity
and robustness fo the result.
* We now complain if the programmer gives an INLINE pragma for
a recursive function (prevsiously we just ignored it). Reason for
change: we don't want an InlineRule on a LoopBreaker, because then
we'd have to check for loop-breaker-hood at occurrence sites (which
isn't currenlty done). Some tests need changing as a result.
This patch has been in my tree for quite a while, so there are
probably some other minor changes.
]
[Add -fpass-case-bndr-to-join-points
simonpj at microsoft.com**20081205105159
See Note [Passing the case binder to join points] in Simplify.lhs
The default now is *not* to pass the case binder. There are some
nofib results with the above note; the effect is almost always
negligible.
I don't expect this flag to be used by users (hence no docs). It's just
there to let me try the performance effects of switching on and off.
]
[Add static flag -fsimple-list-literals
simonpj at microsoft.com**20081205105002
The new static flag -fsimple-list-literals makes ExplicitList literals
be desugared in the straightforward way, rather than using 'build' as
now. See SLPJ comments with Note [Desugaring explicit lists].
I don't expect this flag to be used by users (hence no docs). It's just
there to let me try the performance effects of switching on and off.
]
[Comments only in OccurAnal
simonpj at microsoft.com**20081205103252]
[Comments only
simonpj at microsoft.com**20081205102437]
[Layout only
simonpj at microsoft.com**20081205102252]
[Comments only (Note [Entering error thunks])
simonpj at microsoft.com**20081205102149]
[Make CoreToStg a little more robust to eta expansion
simonpj at microsoft.com**20081205101932]
[Add no-op case for addIdSpecialisations (very minor optimisation)
simonpj at microsoft.com**20081205101022]
[Trim redundant import
simonpj at microsoft.com**20081205101006]
[Make CoreTidy retain deadness info (better -ddump-simpl)
simonpj at microsoft.com**20081205100518
GHC now retains more robust information about dead variables; but
CoreTidy was throwing it away. This patch makes CoreTidy retain it,
which gives better output for -ddump-simpl.
New opportunity: shrink interface files by using wildcards for dead variables.
]
[Remove INLINE pragmas on recursive functions
simonpj at microsoft.com**20081205100353
INLINE pragmas on recursive functions are ignored; and this
is checked in my upcoming patch for inlinings.
]
[Comments only (on Activation)
simonpj at microsoft.com**20081205100139]
[We need to tell cabal-bin which version of Cabal to use
Ian Lynagh <igloo at earth.li>**20081203123208
Otherwise, if the bootstrapping compiler has a newer version, we get
a mismatch between the version used to compile ghc-prim's Setup.hs and
the version that installPackage uses.
]
[Document 'loadModule'.
Thomas Schilling <nominolo at googlemail.com>**20081202154800]
[Add 'needsTemplateHaskell' utility function and document why one might
Thomas Schilling <nominolo at googlemail.com>**20081202152358
want to use it.
]
[Documentation only.
Thomas Schilling <nominolo at googlemail.com>**20081202150158]
[Export 'succeeded' and 'failed' helper functions.
Thomas Schilling <nominolo at googlemail.com>**20081202144451]
[Put full ImportDecls in ModSummary instead of just ModuleNames
Simon Marlow <marlowsd at gmail.com>**20081202133736
... and use it to make ghc -M generate correct cross-package
dependencies when using package-qualified imports (needed for the new
build system). Since we're already parsing the ImportDecl from the
source file, there seems no good reason not to keep it in the
ModSummary, it might be useful for other things too.
]
[ghc -M: need to add a dep on Prelude unless -fno-implicit-prelude is on
Simon Marlow <marlowsd at gmail.com>**20081128165707]
[make -include-pkg-deps work (not sure when this got lost)
Simon Marlow <marlowsd at gmail.com>**20081128135746]
[Fix more problems caused by padding in the Capability structure
Simon Marlow <marlowsd at gmail.com>**20081202120735
Fixes crashes on Windows and Sparc
]
[add missing case to Ord GlobalReg (EagerBlackhole == EagerBlackhole)
Simon Marlow <marlowsd at gmail.com>**20081128130106]
[Better error message for fundep conflict
simonpj at microsoft.com**20081201162845]
[Fix typo in quasi-quote documentation's sample.
shelarcy <shelarcy at gmail.com>**20081129024344]
[Remove the v_Split_info global variable and use a field of dflags instead
Ian Lynagh <igloo at earth.li>**20081130152403]
[Document the --machine-readable RTS flag
Ian Lynagh <igloo at earth.li>**20081130152311]
[Let 'loadModule' generate proper code depending on the 'hscTarget'.
Thomas Schilling <nominolo at googlemail.com>**20081128164412
With this change it should be possible to perform something similar to
'load' by traversing the module graph in dependency order and calling
'{parse,typecheck,load}Module' on each. Of course, if you want smart
recompilation checking you should still use 'load'.
]
[Expose a separate 'hscBackend' phase for 'HsCompiler' and change
Thomas Schilling <nominolo at googlemail.com>**20081128163746
parameter to 'InteractiveStatus' to a 'Maybe'.
]
[Whoops, *don't* reset the complete session in 'withLocalCallbacks'.
Thomas Schilling <nominolo at googlemail.com>**20081128150727]
[Use a record instead of a typeclass for 'HsCompiler'. This is mostly
Thomas Schilling <nominolo at googlemail.com>**20081128121947
equivalent to a typeclass implementation that uses a functional
dependency from the target mode to the result type.
]
[Remove dead code
Ian Lynagh <igloo at earth.li>**20081128193831]
[Update docs not to talk about deprecated -optdep-* flags; fixes trac #2773
Ian Lynagh <igloo at earth.li>**20081128193633]
[Use relative URLs in the GHC API haddock docs; fixes #2755
Ian Lynagh <igloo at earth.li>**20081128184511]
[Teach runghc about --help; fixes trac #2757
Ian Lynagh <igloo at earth.li>**20081128191706]
[Use a per-session data structure for callbacks. Make 'WarnErrLogger'
Thomas Schilling <nominolo at googlemail.com>**20081128103628
part of it.
Part of the GHC API essentially represents a compilation framework.
The difference of a *framework* as opposed to a *library* is that the
overall structure of the functionality is pre-defined but certain
details can be customised via callbacks. (Also known as the Hollywood
Principle: "Don't call us, we'll call you.")
This patch introduces a per-session data structure that contains all
the callbacks instead of adding lots of small function arguments
whenever we want to give the user more control over certain parts of
the API. This should also help with future changes: Adding a new
callback doesn't break old code since code that doesn't know about the
new callback will use the (hopefully sane) default implementation.
Overall, however, we should try and keep the number of callbacks small
and well-defined (and provide useful defaults) and use simple library
routines for the rest.
]
[Improve error message for #2739 (but no fix).
Thomas Schilling <nominolo at googlemail.com>**20081127135725
This patch changes 'loadModule' to define a fake linkable. The
previous implementation of providing no linkable at all violated a
pre-condition in the ByteCode linker. This doesn't fix #2739, but it
improves the error message a bit.
]
[Remove the packing I added recently to the Capability structure
Simon Marlow <marlowsd at gmail.com>**20081128105046
The problem is that the packing caused some unaligned loads, which
lead to bus errors on Sparc (and reduced performance elsewhere,
presumably).
]
[don't emit CmmComments for now
Simon Marlow <marlowsd at gmail.com>**20081127090145
- if the string contains */, we need to fix it (demonstrated by
building Cabal with -fvia-C)
- the strings can get quite large, so we probably only want to
inject comments when some debugging option is on.
]
[Collect instead of print warnings in 'warnUnnecessarySourceImports'.
Thomas Schilling <nominolo at googlemail.com>**20081127102534]
[Force recompilation of BCOs when they were compiled in HscNothing mode.
Thomas Schilling <nominolo at googlemail.com>**20081126183402
Previously, loading a set of modules in HscNothing mode and then
switching to HscInterpreted could lead to crashes since modules
compiled with HscNothing were thought to be valid bytecode objects.
This patch forces recompilation in these cases, hence switching between
HscNothing and HscInterpreted should be safe now.
]
[Documentation only: Add module description for HscMain.
Thomas Schilling <nominolo at googlemail.com>**20081126134344]
[Include GHCi files in ctags/etags.
Thomas Schilling <nominolo at googlemail.com>**20081126122801]
[drop some debugging traces and use only one flag for new codegen
dias at eecs.harvard.edu**20081126180808]
[one more missing patch from new codegen path
dias at eecs.harvard.edu**20081126165742]
[Fix Trac #2817 (TH syntax -> HsSyn conversion)
simonpj at microsoft.com**20081126154022]
[Fix Trac #2756: CorePrep strictness bug
simonpj at microsoft.com**20081126143448]
[Format output for :t more nicely
simonpj at microsoft.com**20081126134814]
[Fix Trac #2766: printing operator type variables
simonpj at microsoft.com**20081126132202]
[Fix build following codegen patch
simonpj at microsoft.com**20081126125526]
[Removed warnings, made Haddock happy, added examples in documentation
dias at eecs.harvard.edu**20081017170707
The interesting examples talk about our story with heap checks in
case alternatives and our story with the case scrutinee as a Boolean.
]
[Fixed linear regalloc bug, dropped some tracing code
dias at eecs.harvard.edu**20081016104218
o The linear-scan register allocator sometimes allocated a block
before allocating one of its predecessors, which could lead
to inconsistent allocations. Now, we allocate a block only
if a predecessor has set the "incoming" assignments for the block
(or if it's the procedure's entry block).
o Also commented out some tracing code on the new codegen path.
]
[Keep update frames live even in functions that never return
dias at eecs.harvard.edu**20081014165437
An unusual case, but without it:
(a) we had an assertion failure
(b) we can overwrite the caller's infotable, which might cause
the garbage collector to collect live data.
Better to keep the update frame live at all call sites,
not just at returns.
]
[Removed space and time inefficiency in procpoint splitting
dias at eecs.harvard.edu**20081014160354
I was adding extra jumps to every procpoint, even when the split-off graph
referred to only some of the procpoints. No effect on correctness,
but a big effect on space/time efficiency when there are lots of procpoints...
]
[Clarify the SRT building process
dias at eecs.harvard.edu**20081014140202
Before: building a closure that would build an SRT given the top-level
SRT. It was somewhat difficult to understand the control flow, and it
may have had held onto some data structures long after they should be dead.
Now, I just bundle the info we need about CAFs along with the procedure
and directly call a new top-level function to build the SRTs later.
]
[Don't adjust hp up when the case scrutinee won't allocate
dias at eecs.harvard.edu**20081014112618
If the case scrutinee can't allocate, we don't need to do a heap
check in the case alternatives. (A previous patch got that right.)
In that case, we had better not adjust the heap pointer to recover
unused stack space before evaluating the scrutinee -- because we
aren't going to reallocate for the case alternative.
]
[Floating infotables were reversed in C back end
dias at eecs.harvard.edu**20081013152718]
[forgot a few files
dias at eecs.harvard.edu**20081013134251]
[Big collection of patches for the new codegen branch.
dias at eecs.harvard.edu**20081013132556
o Fixed bug that emitted the copy-in code for closure entry
in the wrong place -- at the initialization of the closure.
o Refactored some of the closure entry code.
o Added code to check that no LocalRegs are live-in to a procedure
-- trip up some buggy programs earlier
o Fixed environment bindings for thunks
-- we weren't (re)binding the free variables in a thunk
o Fixed a bug in proc-point splitting that dropped some updates
to the entry block in a procedure.
o Fixed improper calls to code that generates CmmLit's for strings
o New invariant on cg_loc in CgIdInfo: the expression is always tagged
o Code to load free vars on entry to a thunk was (wrongly) placed before
the heap check.
o Some of the StgCmm code was redundantly passing around Id's
along with CgIdInfo's; no more.
o Initialize the LocalReg's that point to a closure before allocating and
initializing the closure itself -- otherwise, we have problems with
recursive closure bindings
o BlockEnv and BlockSet types are now abstract.
o Update frames:
- push arguments in Old call area
- keep track of the return sp in the FCode monad
- keep the return sp in every call, tail call, and return
(because it might be different at different call sites,
e.g. tail calls to the gc after a heap check are performed
before pushing the update frame)
- set the sp appropriately on returns and tail calls
o Reduce call, tail call, and return to a single LastCall node
o Added slow entry code, using different calling conventions on entry and tail call
o More fixes to the calling convention code.
The tricky stuff is all about the closure environment: it must be passed in R1,
but in non-closures, there is no such argument, so we can't treat all arguments
the same way: the closure environment is special. Maybe the right step forward
would be to define a different calling convention for closure arguments.
o Let-no-escapes need to be emitted out-of-line -- otherwise, we drop code.
o Respect RTS requirement of word alignment for pointers
My stack allocation can pack sub-word values into a single word on the stack,
but it wasn't requiring word-alignment for pointers. It does now,
by word-aligning both pointer registers and call areas.
o CmmLint was over-aggresively ruling out non-word-aligned memory references,
which may be kosher now that we can spill small values into a single word.
o Wrong label order on a conditional branch when compiling switches.
o void args weren't dropped in many cases.
To help prevent this kind of mistake, I defined a NonVoid wrapper,
which I'm applying only to Id's for now, although there are probably
other good candidates.
o A little code refactoring: separate modules for procpoint analysis splitting,
stack layout, and building infotables.
o Stack limit check: insert along with the heap limit check, using a symbolic
constant (a special CmmLit), then replace it when the stack layout is known.
o Removed last node: MidAddToContext
o Adding block id as a literal: means that the lowering of the calling conventions
no longer has to produce labels early, which was inhibiting common-block elimination.
Will also make it easier for the non-procpoint-splitting path.
o Info tables: don't try to describe the update frame!
o Over aggressive use of NonVoid!!!!
Don't drop the non-void args before setting the type of the closure!!!
o Sanity checking:
Added a pass to stub dead dead slots on the stack
(only ~10 lines with the dataflow framework)
o More sanity checking:
Check that incoming pointer arguments are non-stubbed.
Note: these checks are still subject to dead-code removal, but they should
still be quite helpful.
o Better sanity checking: why stop at function arguments?
Instead, in mkAssign, check that _any_ assignment to a pointer type is non-null
-- the sooner the crash, the easier it is to debug.
Still need to add the debugging flag to turn these checks on explicitly.
o Fixed yet another calling convention bug.
This time, the calls to the GC were wrong. I've added a new convention
for GC calls and invoked it where appropriate.
We should really straighten out the calling convention stuff:
some of the code (and documentation) is spread across the compiler,
and there's some magical use of the node register that should really
be handled (not avoided) by calling conventions.
o Switch bug: the arms in mkCmmLitSwitch weren't returning to a single join point.
o Environment shadowing problem in Stg->Cmm:
When a closure f is bound at the top-level, we should not bind f to the
node register on entry to the closure.
Why? Because if the body of f contains a let-bound closure g that refers
to f, we want to make sure that it refers to the static closure for f.
Normally, this would all be fine, because when we compile a closure,
we rebind free variables in the environment. But f doesn't look like
a free variable because it's a static value. So, the binding for f
remains in the environment when we compile g, inconveniently referring
to the wrong thing.
Now, I bind the variable in the local environment only if the closure is not
bound at the top level. It's still okay to make assumptions about the
node holding the closure environment; we just won't find the binding
in the environment, so code that names the closure will now directly
get the label of the static closure, not the node register holding a
pointer to the static closure.
o Don't generate bogus Cmm code containing SRTs during the STG -> Cmm pass!
The tables made reference to some labels that don't exist when we compute and
generate the tables in the back end.
o Safe foreign calls need some special treatment (at least until we have the integrated
codegen). In particular:
o they need info tables
o they are not procpoints -- the successor had better be in the same procedure
o we cannot (yet) implement the calling conventions early, which means we have
to carry the calling-conv info all the way to the end
o We weren't following the old convention when registering a module.
Now, we use update frames to push any new modules that have to be registered
and enter the youngest one on the stack.
We also use the update frame machinery to specify that the return should pop
the return address off the stack.
o At each safe foreign call, an infotable must be at the bottom of the stack,
and the TSO->sp must point to it.
o More problems with void args in a direct call to a function:
We were checking the args (minus voids) to check whether the call was saturated,
which caused problems when the function really wasn't saturated because it
took an extra void argument.
o Forgot to distinguish integer != from floating != during Stg->Cmm
o Updating slotEnv and areaMap to include safe foreign calls
The dataflow analyses that produce the slotEnv and areaMap give
results for each basic block, but we also need the results for
a safe foreign call, which is a middle node.
After running the dataflow analysis, we have another pass that
updates the results to includ any safe foreign calls.
o Added a static flag for the debugging technique that inserts
instructions to stub dead slots on the stack and crashes when
a stubbed value is loaded into a pointer-typed LocalReg.
o C back end expects to see return continuations before their call sites.
Sorted the flowgraphs appropriately after splitting.
o PrimOp calling conventions are special -- unlimited registers, no stack
Yet another calling convention...
o More void value problems: if the RHS of a case arm is a void-typed variable,
don't try to return it.
o When calling some primOp, they may allocate memory; if so, we need to
do a heap check when we return from the call.
]
[Merging in the new codegen branch
dias at eecs.harvard.edu**20080814124027
This merge does not turn on the new codegen (which only compiles
a select few programs at this point),
but it does introduce some changes to the old code generator.
The high bits:
1. The Rep Swamp patch is finally here.
The highlight is that the representation of types at the
machine level has changed.
Consequently, this patch contains updates across several back ends.
2. The new Stg -> Cmm path is here, although it appears to have a
fair number of bugs lurking.
3. Many improvements along the CmmCPSZ path, including:
o stack layout
o some code for infotables, half of which is right and half wrong
o proc-point splitting
]
[Major clean-up of HscMain.
Thomas Schilling <nominolo at googlemail.com>**20081125153201
This patch entails a major restructuring of HscMain and a small bugfix
to MkIface (which required the restructuring in HscMain).
In MkIface:
- mkIface* no longer outputs orphan warnings directly and also no
longer quits GHC when -Werror is set. Instead, errors are
reported using the common IO (Messages, Maybe result) scheme.
In HscMain:
- Get rid of the 'Comp' monad. This monad was mostly GhcMonad + two
reader arguments, a ModSummary for the currently compiled module
and a possible old interface. The latter actually lead to a small
space-leak since only its hash was needed (to check whether the
newly-generated interface file was the same as the original one).
Functions originally of type 'Comp' now only take the arguments
that they actually need. This leads to slighly longer argument
lists in some places, however, it is now much easier to see what
is actually going on.
- Get rid of 'myParseModule'. Rename 'parseFile' to 'hscParse'.
- Join 'deSugarModule' and 'hscDesugar' (keeping the latter).
- Rename 'typecheck{Rename}Module{'}' to 'hscTypecheck{Rename}'.
One variant keeps the renamed syntax, the other doesn't.
- Parameterise 'HscStatus', so that 'InteractiveStatus' is just a
different parameterisation of 'HscStatus'.
- 'hscCompile{OneShot,Batch,Nothing,Interactive}' are now
implemented using a (local) typeclass called 'HsCompiler'. The
idea is to make the common structure more obvious. Using this
typeclass we now have two functions 'genericHscCompile' (original
'hscCompiler') and 'genericHscRecompile' (original 'genComp')
describing the default pipeline. The methods of the typeclass
describe a sort of "hook" interface (in OO-terms this would be
called the "template method" pattern).
One problem with this approach is that we parameterise over the
/result/ type which, in fact, is not actually different for
"nothing" and "batch" mode. To avoid functional dependencies or
associated types, we use type tags to make them artificially
different and parameterise the type class over the result type.
A perhaps better approach might be to use records instead.
- Drop some redundant 'HscEnv' arguments. These were likely
different from what 'getSession' would return because during
compilation we temporarily set the module's DynFlags as well as a
few other fields. We now use the 'withTempSession' combinator to
temporarily change the 'HscEnv' and automatically restore the
original session after the enclosed action has returned (even in
case of exceptions).
- Rename 'hscCompile' to 'hscGenHardCode' (since that is what it
does).
Calls in 'GHC' and 'DriverPipeline' accordingly needed small
adaptions.
]
[Fix Trac #2799: TcType.isOverloadedTy
simonpj at microsoft.com**20081125110540
A missing case (for equality predicates) in isOverloadedTy make
bindInstsOfLocalFuns/Pats do the wrong thing. Core Lint nailed it.
Merge to 6.10 branch.
]
[Fix #2740: we were missing the free variables on some expressions
Simon Marlow <marlowsd at gmail.com>**20081125103113
Particularly boolean expresions: the conditional of an 'if', and
guards, were missing their free variables.
]
[Fix symbol macro names in Linker.c
Thorkil Naur <naur at post11.tele.dk>**20081121160149]
[Add a --machine-readable RTS flag
Ian Lynagh <igloo at earth.li>**20081123152127
Currently it only affects the -t flag output
]
[Return errors instead of dying in myParseModule.
Thomas Schilling <nominolo at googlemail.com>**20081122154151]
[Comments/Haddockification only.
Thomas Schilling <nominolo at googlemail.com>**20081122143018]
[Report source span instead of just source location for unused names.
Thomas Schilling <nominolo at googlemail.com>**20081122142641]
[Change 'handleFlagWarnings' to throw exceptions instead of dying.
Thomas Schilling <nominolo at googlemail.com>**20081122130658
It now uses the standard warning log and error reporting mechanism.
]
[Document exported functions in main/HeaderInfo.
Thomas Schilling <nominolo at googlemail.com>**20081121145307]
[Remove warning supression klugde in main/HeaderInfo
Thomas Schilling <nominolo at googlemail.com>**20081121144155]
[Use mutator threads to do GC, instead of having a separate pool of GC threads
Simon Marlow <marlowsd at gmail.com>**20081121151233
Previously, the GC had its own pool of threads to use as workers when
doing parallel GC. There was a "leader", which was the mutator thread
that initiated the GC, and the other threads were taken from the pool.
This was simple and worked fine for sequential programs, where we did
most of the benchmarking for the parallel GC, but falls down for
parallel programs. When we have N mutator threads and N cores, at GC
time we would have to stop N-1 mutator threads and start up N-1 GC
threads, and hope that the OS schedules them all onto separate cores.
It practice it doesn't, as you might expect.
Now we use the mutator threads to do GC. This works quite nicely,
particularly for parallel programs, where each mutator thread scans
its own spark pool, which is probably in its cache anyway.
There are some flag changes:
-g<n> is removed (-g1 is still accepted for backwards compat).
There's no way to have a different number of GC threads than mutator
threads now.
-q1 Use one OS thread for GC (turns off parallel GC)
-qg<n> Use parallel GC for generations >= <n> (default: 1)
Using parallel GC only for generations >=1 works well for sequential
programs. Compiling an ordinary sequential program with -threaded and
running it with -N2 or more should help if you do a lot of GC. I've
found that adding -qg0 (do parallel GC for generation 0 too) speeds up
some parallel programs, but slows down some sequential programs.
Being conservative, I left the threshold at 1.
ToDo: document the new options.
]
[we shouldn't update topBound in discardSparks()
Simon Marlow <marlowsd at gmail.com>**20081121113539]
[Throw SourceErrors instead of ProgramErrors in main/HeaderInfo.
Thomas Schilling <nominolo at googlemail.com>**20081121141339
Parse errors during dependency analysis or options parsing really
shouldn't kill GHC; this is particularly annoying for GHC API clients.
]
[fix the build when !USE_MMAP
Simon Marlow <marlowsd at gmail.com>**20081121085418]
[round the size up to a page in mmapForLinker() instead of in the caller
Simon Marlow <marlowsd at gmail.com>**20081120154014]
[Fix a race in the deadlock-detection code
Simon Marlow <marlowsd at gmail.com>**20081120112438
After a deadlock it was possible for the timer signal to remain off,
which meant that the next deadlock would not be detected, and the
system would hang. Spotted by conc047(threaded2).
]
[error message wibble
Simon Marlow <marlowsd at gmail.com>**20081120084901]
[Fix flag name -XDisambiguateRecordFields
simonpj at microsoft.com**20081120123205]
[Fix regTableToCapability() if gcc introduces padding
Simon Marlow <marlowsd at gmail.com>**20081119162910
Also avoid padding if possible using __attribute__((packed))
Fixes the Windows build
]
[Fix 32-bit breakage
Simon Marlow <marlowsd at gmail.com>**20081119145429]
[Small refactoring, and add comments
Simon Marlow <marlowsd at gmail.com>**20081119143702
I discovered a new invariant while experimenting (blackholing is not
optional when using parallel GC), so documented it.
]
[Fix some unsigned comparisions that should be signed
Simon Marlow <marlowsd at gmail.com>**20081119143205
Fixes crashes when using reclaimSpark() (not used currently, but may
be in the future).
]
[Remove incorrect assertions in steal()
Simon Marlow <marlowsd at gmail.com>**20081119143043]
[don't run sparks if there are other threads on this Capability
Simon Marlow <marlowsd at gmail.com>**20081114121022]
[Fix typo (HAVE_LIBGMP => HAVE_LIB_GMP); omit local gmp includes if HAVE_LIB_GMP
Simon Marlow <marlowsd at gmail.com>**20081119131056
If we're using the system's installed GMP, we don't want to be picking
up the local gmp.h header file.
Fixes 2469(ghci) for me, because it turns out the system's GMP is more
up-to-date than GHC's version and has a fix for more recent versions
of gcc. We also need to pull in a more recent GMP, but that's a
separte issue.
]
[Fix some more shutdown races
Simon Marlow <marlowsd at gmail.com>**20081119124848
There were races between workerTaskStop() and freeTaskManager(): we
need to be sure that all Tasks have exited properly before we start
tearing things down. This isn't completely straighforward, see
comments for details.
]
[Add help messages about --with-editline-(includes,libraries) to the ghc configure script.
Judah Jacobson <judah.jacobson at gmail.com>**20081114183334]
[Add optional eager black-holing, with new flag -feager-blackholing
Simon Marlow <marlowsd at gmail.com>**20081118142442
Eager blackholing can improve parallel performance by reducing the
chances that two threads perform the same computation. However, it
has a cost: one extra memory write per thunk entry.
To get the best results, any code which may be executed in parallel
should be compiled with eager blackholing turned on. But since
there's a cost for sequential code, we make it optional and turn it on
for the parallel package only. It might be a good idea to compile
applications (or modules) with parallel code in with
-feager-blackholing.
ToDo: document -feager-blackholing.
]
[Fix #2783: detect black-hole loops properly
Simon Marlow <marlowsd at gmail.com>**20081117144515
At some point we regressed on detecting simple black-hole loops. This
happened due to the introduction of duplicate-work detection for
parallelism: a black-hole loop looks very much like duplicate work,
except it's duplicate work being performed by the very same thread.
So we have to detect and handle this case.
]
[Fix warning on Windows (use deleteThread() not deleteThread_())
Simon Marlow <marlowsd at gmail.com>**20081117143047]
[fix compile breakage on Windows
Simon Marlow <marlowsd at gmail.com>**20081117142831]
[Attempt to fix #2512 and #2063; add +RTS -xm<address> -RTS option
Simon Marlow <marlowsd at gmail.com>**20081117120556
On x86_64, the RTS needs to allocate memory in the low 2Gb of the
address space. On Linux we can do this with MAP_32BIT, but sometimes
this doesn't work (#2512) and other OSs don't support it at all
(#2063). So to work around this:
- Try MAP_32BIT first, if available.
- Otherwise, try allocating memory from a fixed address (by default
1Gb)
- We now provide an option to configure the address to allocate
from. This allows a workaround on machines where the default
breaks, and also provides a way for people to test workarounds
that we can incorporate in future releases.
]
[Another shutdown fix
Simon Marlow <marlowsd at gmail.com>**20081117094350
If we encounter a runnable thread during shutdown, just kill it. All
the threads are supposed to be dead at this stage, but this catches
threads that might have just returned from a foreign call, or were
finalizers created by the GC.
Fixes memo002(threaded1)
]
[Correct an example in the users guide
Ian Lynagh <igloo at earth.li>**20081116174938]
[Fix gen_contents_index when not run inplace; trac #2764
Ian Lynagh <igloo at earth.li>**20081116174122
Based on a patch from juhpetersen.
]
[close the temporary Handle before removing the file
Simon Marlow <marlowsd at gmail.com>**20081114130958]
[refactor: move unlockClosure() into SMPClosureOps() where it should be
Simon Marlow <marlowsd at gmail.com>**20081114095817]
[Omit definitions of cas() and xchg() in .hc code
Simon Marlow <marlowsd at gmail.com>**20081114095738
They cause compilation errors (correctly) with newer gccs
Shows up compiling the RTS via C, which happens on Windows
]
[Don't put stdin into non-blocking mode (#2778, #2777)
Simon Marlow <marlowsd at gmail.com>**20081114130546
This used to be necessary when our I/O library needed all FDs in
O_NONBLOCK mode, and readline used to put stdin back into blocking
mode. Nowadays the I/O library can cope with FDs in blocking mode,
and #2778/#2777 show why this is important.
]
[Rmoeve --enable-dotnet
Simon Marlow <marlowsd at gmail.com>**20081114124929]
[#2751: disourage --enable-shared in ./configure --help
Simon Marlow <marlowsd at gmail.com>**20081114124748]
[add a warning that --enable-shared is experimental
Simon Marlow <marlowsd at gmail.com>**20081114104034]
[lookupSymbol: revert to looking up both with and without the @N suffix
Simon Marlow <marlowsd at gmail.com>**20081113122927]
[#2768: fix compatibility problem with newer version of mingw
Simon Marlow <marlowsd at gmail.com>**20081113114626]
[notice ^C exceptions when waiting for I/O
Simon Marlow <marlowsd at gmail.com>**20081113114342]
[Fix a bug in the recompilation checking logic.
Thomas Schilling <nominolo at googlemail.com>**20081113162653
Previously, using target HscNothing resulted in unnessesary
recompilation because 'upsweep_mod' treated HscInterface specially.
This patch changes relaxes this.
When running GHC with debug level 5, 'upsweep_mod' will now also be
more verbose about what it is doing.
There is (at least) one possible remaining problem, though: When using
target 'HscNothing' we generate a fake linkable to signal that we have
processed a module. When switching to 'HscInterpreted' this may cause
objects to not be recompiled. Switching from HscNothing to
HscInterpreted is therefore only safe if we unload everything first.
]
[Fix another subtle shutdown deadlock
Simon Marlow <marlowsd at gmail.com>**20081113160005
The problem occurred when a thread tries to GC during shutdown. In
order to GC it has to acquire all the Capabilities in the system, but
during shutdown, some of the Capabilities have already been closed and
can never be acquired.
]
[Fix an extremely subtle deadlock bug on x86_64
Simon Marlow <marlowsd at gmail.com>**20081113155730
The recent_activity flag was an unsigned int, but we sometimes do a
64-bit xchg() on it, which overwrites the next word in memory. This
happened to contain the sched_state flag, which is used to control the
orderly shutdown of the system. If the xchg() happened during
shutdown, the scheduler would get confused and deadlock. Don't you
just love C?
]
[move an assertion
Simon Marlow <marlowsd at gmail.com>**20081113154542]
[Always zap the trailing @N from symbols when looking up in a DLL
Simon Marlow <marlowsd at gmail.com>**20081112111518
Fixes win32002(ghci)
Previously we only did this for references from object files, but we
should do it for all symbols, including those that GHCi looks up due
to FFI calls from bytecode.
]
[Only allocate a mark stack if we're actually doing marking
Simon Marlow <marlowsd at gmail.com>**20081112112144
saves a bit of memory in major GCs
]
[Fix parse error with older gccs (#2752)
Simon Marlow <marlowsd at gmail.com>**20081111135344]
[Fix to i386_insert_ffrees (#2724, #1944)
Simon Marlow <marlowsd at gmail.com>**20081111125619
The i386 native code generator has to arrange that the FPU stack is
clear on exit from any function that uses the FPU. Unfortunately it
was getting this wrong (and has been ever since this code was written,
I think): it was looking for basic blocks that used the FPU and adding
the code to clear the FPU stack on any non-local exit from the block.
In fact it should be doing this on a whole-function basis, rather than
individual basic blocks.
]
[Fix bootstrap with 6.10.1 on Windows
Simon Marlow <marlowsd at gmail.com>**20081110134318
ghc-pkg doesn't understand the old syntax any more, so 'ghc-pkg -l' fails
]
[Perform case-insensitive matching of path components in getBaseDir on Windows (Fixes bug 2743)
Neil Mitchell <ndmitchell at gmail.com>**20081105134315]
[Documentation only. Clarify that 'load*' may indeed throw SourceErrors.
Thomas Schilling <nominolo at googlemail.com>**20081110175614
I don't think errors during dependency analysis should be passed to
the logger.
]
[Fix documentation (to say the opposite).
Thomas Schilling <nominolo at googlemail.com>**20081110153819]
[Fix line numbers in TAGS files.
Thomas Schilling <nominolo at googlemail.com>**20081110153621]
[Documentation only.
Thomas Schilling <nominolo at googlemail.com>**20081110153456]
[Add 'packageDbModules' function to GHC API.
Thomas Schilling <nominolo at googlemail.com>**20081110143510
This function returns a list of all modules available through the
package DB.
MERGE TO 6.10
]
[We now require GHC 6.6, so we always have Applicative
Ian Lynagh <igloo at earth.li>**20081108144723]
[Remove a CPP test that's always true (__GLASGOW_HASKELL__ >= 605)
Ian Lynagh <igloo at earth.li>**20081108144544]
[Remove some dead code now that __GLASGOW_HASKELL__ >= 606
Ian Lynagh <igloo at earth.li>**20081108144459]
[Remove some flag duplication from a Makefile
Ian Lynagh <igloo at earth.li>**20081108144412]
[ghc_ge_605 is now always YES
Ian Lynagh <igloo at earth.li>**20081108144328]
[Remove the GHC 6.4 unicode compat stuff; we can now just use Data.Char
Ian Lynagh <igloo at earth.li>**20081108143423]
[Fix libffi bindist
Clemens Fruhwirth <clemens at endorphin.org>**20081108094725]
[Replace couple of fromJust with expectJust
Clemens Fruhwirth <clemens at endorphin.org>**20081107160735]
[Bugfix for patch "Do not filter the rts from linked libraries..." (#2745)
Simon Marlow <marlowsd at gmail.com>**20081107092925
The sense of the #ifdef was wrong
]
[fix via-C compilation: import ghczmprim_GHCziBool_False_closure
Simon Marlow <marlowsd at gmail.com>**20081107090432]
[disable instance MonadPlus CoreM for GHC <= 6.6
Simon Marlow <marlowsd at gmail.com>**20081107085250]
[re-instate counting of sparks converted
Simon Marlow <marlowsd at gmail.com>**20081106160810
lost in patch "Run sparks in batches"
]
[fix ASSERT_SPARK_POOL_INVARIANTS(): top>bottom is valid
Simon Marlow <marlowsd at gmail.com>**20081106155826]
[pruneSparkQueue(): fix bug when top>bottom
Simon Marlow <marlowsd at gmail.com>**20081106155648]
[don't yield if the system is shutting down
Simon Marlow <marlowsd at gmail.com>**20081106155356]
[leave out ATTRIBUTE_ALIGNED on Windows, it gives a warning
Simon Marlow <marlowsd at gmail.com>**20081106132105]
[Cope with ThreadRelocated when traversing the blocked_queue
Simon Marlow <marlowsd at gmail.com>**20081106114045
Fixes "invalid what_next field" in ioref001 on Windows, and perhaps others
]
[Remove dead code.
Thomas Schilling <nominolo at googlemail.com>**20081031162036]
[Run sparks in batches, instead of creating a new thread for each one
Simon Marlow <marlowsd at gmail.com>**20081106113639
Signficantly reduces the overhead for par, which means that we can
make use of paralellism at a much finer granularity.
]
[allocateInGen(): increase alloc_blocks (#2747)
Simon Marlow <marlowsd at gmail.com>**20081106113714]
[disable MonadPlus instance that doesn't compile with 6.6
Simon Marlow <marlowsd at gmail.com>**20081106100411]
[don't yield the Capability if blackholes_need_checking
Simon Marlow <marlowsd at gmail.com>**20081105154928]
[deadlock fix: reset the flag *after* checking the blackhole queue
Simon Marlow <marlowsd at gmail.com>**20081105150542]
[retreat the top/bottom fields of the spark pool in pruneSparkPool()
Simon Marlow <marlowsd at gmail.com>**20081105150359]
[fix the :help docs for :set stop (#2737)
Simon Marlow <marlowsd at gmail.com>**20081104092929]
[bugfix: don't ingore the return value from rts_evalIO()
Simon Marlow <marlowsd at gmail.com>**20081104142147]
[Document the new SPARKS statistic, and xref from the parallelism section
Simon Marlow <marlowsd at gmail.com>**20081024120236]
[Move the freeing of Capabilities later in the shutdown sequence
Simon Marlow <marlowsd at gmail.com>**20081024104301
Fixes a bug whereby the Capability has been freed but other
Capabilities are still trying to steal sparks from its pool.
]
[Pad Capabilities and Tasks to 64 bytes
Simon Marlow <marlowsd at gmail.com>**20081023080749
This is just good practice to avoid placing two structures heavily
accessed by different CPUs on the same cache line
]
[Fix desugaring of record update (fixes Trac #2735)
simonpj at microsoft.com**20081103110819]
[Refuse to register packages with unversioned dependencies; trac #1837
Ian Lynagh <igloo at earth.li>**20081031181746]
[We now require GHC 6.6 to build the HEAD (and thus 6.12)
Ian Lynagh <igloo at earth.li>**20081031171506]
[:set prompt now understand Haskell String syntax; trace #2652
Ian Lynagh <igloo at earth.li>**20081031145227]
[Comments only
simonpj at microsoft.com**20081031140236]
[Quickfix for warning.
Thomas Schilling <nominolo at googlemail.com>**20081031113125]
[Export typeclasses for accessing compiler results.
Thomas Schilling <nominolo at googlemail.com>**20081028182310
MERGE TO 6.10.
]
[Minor refactoring.
Thomas Schilling <nominolo at googlemail.com>**20081028182202]
[Include record fields in tags.
Thomas Schilling <nominolo at googlemail.com>**20081028180538]
[Fix imports
simonpj at microsoft.com**20081031092306]
[Improve error reporting for non-rigid GADT matches
simonpj at microsoft.com**20081030143947
Following suggestions from users, this patch improves the error message
when a GADT match needs a rigid type:
tcfail172.hs:19:10:
GADT pattern match in non-rigid context for `Nil'
- Solution: add a type signature
+ Probable solution: add a type signature for `is_normal'
In the pattern: Nil
In the definition of `is_normal': is_normal Nil = True
Now GHC tries to tell you what to give a type signature *for*.
Thanks to Daniel Gorin and others for the suggestions.
]
[Add (a) CoreM monad, (b) new Annotations feature
simonpj at microsoft.com**20081030125108
This patch, written by Max Bolingbroke, does two things
1. It adds a new CoreM monad (defined in simplCore/CoreMonad),
which is used as the top-level monad for all the Core-to-Core
transformations (starting at SimplCore). It supports
* I/O (for debug printing)
* Unique supply
* Statistics gathering
* Access to the HscEnv, RuleBase, Annotations, Module
The patch therefore refactors the top "skin" of every Core-to-Core
pass, but does not change their functionality.
2. It adds a completely new facility to GHC: Core "annotations".
The idea is that you can say
{#- ANN foo (Just "Hello") #-}
which adds the annotation (Just "Hello") to the top level function
foo. These annotations can be looked up in any Core-to-Core pass,
and are persisted into interface files. (Hence a Core-to-Core pass
can also query the annotations of imported things.) Furthermore,
a Core-to-Core pass can add new annotations (eg strictness info)
of its own, which can be queried by importing modules.
The design of the annotation system is somewhat in flux. It's
designed to work with the (upcoming) dynamic plug-ins mechanism,
but is meanwhile independently useful.
Do not merge to 6.10!
]
[Fix Trac #2674: in TH reject empty case expressions and function definitions
simonpj at microsoft.com**20081030094528]
[Change naming conventions for compiler-generated dictionaries and type functions
simonpj at microsoft.com**20081029140858
Up to now, the data constructor dictionary for class C as been called
":DC". But there is no reason for the colon to be at the front; indeed
it confuses the (simple-minded) pretty-printer for types. So this
patch changes it to be "D:C". This makes Core a lot easier to read.
Having a colon in the middle ensures that it can't clash with a user-written
data type.
Similarly I changed
T:C Data type corresponding a class dictionary (was :TC)
D:C Data constructor for class dictionary (was :DC)
NTCo:T Coercion mapping from a newtype T to its representation type
(was :CoT)
TFCo:R Coercion mapping from a data family to its respresentation type R
(was :CoFR)
Rn:T The n'th respresentation data type for a data type T
(was :RnT)
Do not merge to 6.10.
HEADS-UP: you'll need to recompile libraries from scratch.
ROMAN: you could do the same for OccName.mkVectTyConOcc etc, if you wanted.
]
[Fix tcrun031: yet more tidying up in TcDeriv
simonpj at microsoft.com**20081029130155]
[Add Outputable instance for CoercionI
simonpj at microsoft.com**20081029130114]
[Fix Trac #2720: inlining and casts
simonpj at microsoft.com**20081028140828
The issue here is what happens when we have
(f |> co) x
where f is itself marked INLINE. We want callSiteInline to "see"
the fact that the function is applied, and hence have some incentive
to inline. I've done this by extending CoreUnfold.CallCtxt with
ValAppCtxt. I think that should catch this case without messing up
any of the others.
]
[Clarify documentatoin
simonpj at microsoft.com**20081028133009]
[Update library version numbers in the release notes
Ian Lynagh <igloo at earth.li>**20081023144018]
[various updates to the release notes
Simon Marlow <marlowsd at gmail.com>**20081007151647]
[Add library release notes
Ian Lynagh <igloo at earth.li>**20080920155722]
[Add release notes for the compiler
Ian Lynagh <igloo at earth.li>**20080920114857]
[Doc fix
Ian Lynagh <igloo at earth.li>**20081028150534]
[Rename some variables in docs
Ian Lynagh <igloo at earth.li>**20081028150447]
[Fix typos
Ian Lynagh <igloo at earth.li>**20081028144655]
[Mostly-fix Trac #2595: updates for existentials
simonpj at microsoft.com**20081028115427
Ganesh wanted to update records that involve existentials. That
seems reasonable to me, and this patch covers existentials, GADTs,
and data type families.
The restriction is that
The types of the updated fields may mention only the
universally-quantified type variables of the data constructor
This doesn't allow everything in #2595 (it allows 'g' but not 'f' in
the ticket), but it gets a lot closer.
Lots of the new lines are comments!
]
[Fix Trac #2723: keep track of record field names in the renamer
simonpj at microsoft.com**20081028110445
The idea here is that with -XNamedFieldPuns and -XRecordWildCards we don't
want to report shadowing errors for
let fld = <blah> in C { .. }
But to suppress such shadowing errors, the renamer needs to know that
'fld' *is* a record selector. Hence the new NameSet in
TcRnFypes.RecFieldEnv
]
[Remove dead code
simonpj at microsoft.com**20081028074639]
[Fix Trac #2713: refactor and tidy up renaming of fixity decls
simonpj at microsoft.com**20081027222738
In fixing #2713, this patch also eliminates two almost-unused
functions from RnEnv (lookupBndr and lookupBndr_maybe). The
net lines of code is prety much unchanged, but more of them
are comments!
]
[Fix Trac #2701: make deriving check better for unlifted args
simonpj at microsoft.com**20081025171211
Getting the automatic deriving mechanism to work really smoothly
is surprisingly hard. I keep finding myself in TcDeriv!
Anyway, this is a nice clean fix to Trac #2701.
]
[Use pdflatex rather than latex for building
Ian Lynagh <igloo at earth.li>**20081024112400
The Windows builder is having problems running ps2pdf, so this works
aroudn the problem.
]
[Remove an unmatched } in core.tex
Ian Lynagh <igloo at earth.li>**20081024111750]
[Add a usepackage{url}
Ian Lynagh <igloo at earth.li>**20081024111458]
[Update ANNOUNCE
Ian Lynagh <igloo at earth.li>**20081022164423]
[Fix a bug in the new scheduler
Simon Marlow <marlowsd at gmail.com>**20081023155017
If the current thread blocks, we should yield the Capability
immediately, because the thread and hence possibly the current Task
are now owned by someone else. This worked in the old scheduler, but
we moved where the yield happens in the new scheduler which broke it.
]
[add an assertion
Simon Marlow <marlowsd at gmail.com>**20081023154551]
[fix a warning
Simon Marlow <marlowsd at gmail.com>**20081023082213]
[traverse the spark pools only once during GC rather than twice
Simon Marlow <marlowsd at gmail.com>**20081022115233]
[Refactoring and reorganisation of the scheduler
Simon Marlow <marlowsd at gmail.com>**20081022092744
Change the way we look for work in the scheduler. Previously,
checking to see whether there was anything to do was a
non-side-effecting operation, but this has changed now that we do
work-stealing. This lead to a refactoring of the inner loop of the
scheduler.
Also, lots of cleanup in the new work-stealing code, but no functional
changes.
One new statistic is added to the +RTS -s output:
SPARKS: 1430 (2 converted, 1427 pruned)
lets you know something about the use of `par` in the program.
]
[Work stealing for sparks
berthold at mathematik.uni-marburg.de**20080915132846
Spark stealing support for PARALLEL_HASKELL and THREADED_RTS versions of the RTS.
Spark pools are per capability, separately allocated and held in the Capability
structure. The implementation uses Double-Ended Queues (deque) and cas-protected
access.
The write end of the queue (position bottom) can only be used with
mutual exclusion, i.e. by exactly one caller at a time.
Multiple readers can steal()/findSpark() from the read end
(position top), and are synchronised without a lock, based on a cas
of the top position. One reader wins, the others return NULL for a
failure.
Work stealing is called when Capabilities find no other work (inside yieldCapability),
and tries all capabilities 0..n-1 twice, unless a theft succeeds.
Inside schedulePushWork, all considered cap.s (those which were idle and could
be grabbed) are woken up. Future versions should wake up capabilities immediately when
putting a new spark in the local pool, from newSpark().
Patch has been re-recorded due to conflicting bugfixes in the sparks.c, also fixing a
(strange) conflict in the scheduler.
]
[include an elapsed time table
Simon Marlow <marlowsd at gmail.com>**20081023080648]
[generate a valid summary for older GHC versions too
Simon Marlow <marlowsd at gmail.com>**20081023080629]
[Fix Trac #2714 (a minor wibble)
simonpj at microsoft.com**20081022145138
In boxy_match (which is a pure function used by preSubType) we can
encounter TyVars not just TcTyVars; this patch takes account of that.
]
[Reject programs with superclass equalities for now
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081021131721
- The current implementation of type families cannot properly deal
with superclass equalities. Instead of making a half-hearted attempt at
supporting them, which mostly ends in cryptic error message, rejecting
right away with an appropriate message.
MERGE TO 6.10
]
[Fix doc syntax
Ian Lynagh <igloo at earth.li>**20081021183317]
[Don't put the README file in the Windows installer; fixes trac #2698
Ian Lynagh <igloo at earth.li>**20081021162543
The README file talks about getting and building the sources, which
doesn't make sense for the installer.
]
[Comments and parens only
simonpj at microsoft.com**20081021151401]
[Do proper cloning in worker/wrapper splitting
simonpj at microsoft.com**20081021143156
See Note [Freshen type variables] in WwLib. We need to clone type
variables when building a worker/wrapper split, else we simply get
bogus code, admittedly in rather obscure situations. I can't quite
remember what program showed this up, unfortunately, but there
definitely *was* one! (You get a Lint error.)
]
[Don't float an expression wrapped in a cast
simonpj at microsoft.com**20081021143019
There is no point in floating out an expression wrapped in a coercion;
If we do we'll transform
lvl = e |> co [_$_]
to
lvl' = e; lvl = lvl' |> co
and then inline lvl. Better just to float out the payload (e).
]
[Fix Trac #2668, and refactor TcDeriv
simonpj at microsoft.com**20081021142922
TcDeriv deals with both standalone and ordinary 'deriving';
and with both data types and 'newtype deriving'. The result
is really rather compilcated and ad hoc. Ryan discovered
#2668; this patch fixes that bug, and makes the internal interfces
#more uniform. Specifically, the business of knocking off
type arguments from the instance type until it matches the kind of the
class, is now done by derivTyData, not mkNewTypeEqn, because the
latter is shared with standalone derriving, whree the trimmed
type application is what the user wrote.
]
[Spelling error in comment
simonpj at microsoft.com**20081019233511]
[White space only
simonpj at microsoft.com**20081019233352]
[Comments to explain strict overlap checking for type family instances
simonpj at microsoft.com**20081019184208]
[Allow type families to use GADT syntax (and be GADTs)
simonpj at microsoft.com**20080923140535
We've always intended to allow you to use GADT syntax for
data families:
data instance T [a] where
T1 :: a -> T [a]
and indeed to allow data instances to *be* GADTs
data intsance T [a] where
T1 :: Int -> T [Int]
T2 :: a -> b -> T [(a,b)]
This patch fixes the renamer and type checker to allow this.
]
[Improve crash message from applyTys and applyTypeToArgs
simonpj at microsoft.com**20080923135419]
[Wibble to ungrammatical error message
simonpj at microsoft.com**20080920232256]
[Comments only: replace ":=:" by "~" (notation for equality predicates)
simonpj at microsoft.com**20080920232024]
[FIX #2693
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081021120107
- As long as the first reduceContext in tcSimplifyRestricted potentially
performs improvement, we need to zonk again before the second reduceContext.
It would be better to prevent the improvement in the first place, but given
the current situation zonking is definitely the right thing to do.
MERGE TO 6.10
]
[Restore the terminal attributes even if ghci does not exit normally.
Judah Jacobson <judah.jacobson at gmail.com>**20081020164109]
[FIX #2688
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081021044213
- Change in TcSimplify.reduceContext:
We do *not* go around for new extra_eqs. Morally, we should,
but we can't without risking non-termination (see #2688). By
not going around, we miss some legal programs mixing FDs and
TFs, but we never claimed to support such programs in the
current implementation anyway.
MERGE TO 6.10
]
[Move documentation within 80 column boundary.
Thomas Schilling <nominolo at googlemail.com>**20081014134016]
[Improve haddock documentation for 'GHC.topSortModuleGraph'.
Thomas Schilling <nominolo at googlemail.com>**20081014133833]
[Improve haddock documentation for HsExpr module.
Thomas Schilling <nominolo at googlemail.com>**20081014133740]
[Improve Haddock-markup for HsDecls module.
Thomas Schilling <nominolo at googlemail.com>**20081014133556]
[Run Haddock with compacting GC and show RTS statistics.
Thomas Schilling <nominolo at googlemail.com>**20081020111410]
[FIX (partially) #2703: bug in stack overflow handling when inside block
Simon Marlow <marlowsd at gmail.com>**20081020121103
As a result of a previous ticket (#767) we disabled the generation of
StackOverflow exceptions when inside a Control.Exception.block, on the
grounds that StackOverflow is like an asynchronous exception. Instead
we just increase the stack size. However, the stack size calculation
was wrong, and ended up not increasing the size of the stack, with the
result that the runtime just kept re-allocating the stack and filling
up memory.
]
[Re-export Located(..) and related functions
Simon Marlow <marlowsd at gmail.com>**20081020102422
So that clients don't need to import SrcLoc
]
[whitespace fix
Simon Marlow <marlowsd at gmail.com>**20081020101241]
[FIX #2691: Manually reset the terminal to its initial settings; works around a bug in libedit.
Judah Jacobson <judah.jacobson at gmail.com>**20081016024838]
[Eliminate duplicate flags in the tab completion of ghci's :set command.
Judah Jacobson <judah.jacobson at gmail.com>**20081016015721]
[Add dph haddock docs to the doc index
Ian Lynagh <igloo at earth.li>**20081019133208]
[Clean the bootstrapping extensible-exceptions package
Ian Lynagh <igloo at earth.li>**20081017195942]
[Fix trac #2687
Ian Lynagh <igloo at earth.li>**20081015163412
OtherPunctuation, ConnectorPunctuation and DashPunctuation are now
treated as symbols, rather than merely graphic characters.
]
[Fix trac #2680; avoid quadratic behaviour from (++)
Ian Lynagh <igloo at earth.li>**20081015163235]
[Fix the build when the bootstrapping compiler has a newer Cabal than us
Ian Lynagh <igloo at earth.li>**20081015144023
We need to forcibly use the in-tree Cabal, or we get version mismatch errors
]
[Fix the name of prologue.txt when making bindists
Ian Lynagh <igloo at earth.li>**20081014114714]
[Comments only
simonpj at microsoft.com**20081015084501]
[Fix Trac #2497; two separate typos in Lexer.x
simonpj at microsoft.com**20081015084344
The patch to switch on lexing of 'forall' inside a RULES pragma
wasn't working. This fixes it so that it does.
]
[Update manual: tidy up instances, say more about type families in instance decls
simonpj at microsoft.com**20081015080509]
[Make tags work on Unices, too.
Thomas Schilling <nominolo at googlemail.com>**20081014211236]
[Undefine __PIC__ before defining it to work around "multiple definitions of __PIC__" warnings
Clemens Fruhwirth <clemens at endorphin.org>**20081014143206]
[Add "dyn" to GhcRTSWays when compiling --enable-shared
Clemens Fruhwirth <clemens at endorphin.org>**20081014125123]
[Fill out the ghc package's cabal file
Ian Lynagh <igloo at earth.li>**20081013235817]
[Patching libffi so it can be built as DLL
Clemens Fruhwirth <clemens at endorphin.org>**20081014103459
libffi-dllize-3.0.6.patch should be pushed upstream
]
[Add 'etags' makefile target.
Thomas Schilling <nominolo at googlemail.com>**20081013170927
This only works with stage2 since `ghctags' is built against stage1
but not against the bootstrapping compiler. Also note that all of GHC
must typecheck for this target to succeed. Perhaps we should not
overwrite the old TAGS file by default then.
]
[Use cabal information to get GHC's flags to `ghctags'.
Thomas Schilling <nominolo at googlemail.com>**20081013170658
By giving the dist-directory to ghctags we can get all the GHC API
flags we need in order to load the required modules. The flag name
could perhaps be improved, but apart from that it seems to work well.
]
[Version bump for libffi to 3.0.6
Clemens Fruhwirth <clemens at endorphin.org>**20081014081300]
[Encode shared/static configuration into stamps to do the right thing when rebuilding
Clemens Fruhwirth <clemens at endorphin.org>**20081013221530]
[Add a link to the GHC API docs from the library haddock index
Ian Lynagh <igloo at earth.li>**20081013195943]
[Link to the GHC API documentation from the main doc page
Ian Lynagh <igloo at earth.li>**20081013200927]
[Whitespace only in docs/index.html
Ian Lynagh <igloo at earth.li>**20081013200625]
[Tweak gen_contents_index
Ian Lynagh <igloo at earth.li>**20081013192548
It now works again after it has been installed, as well as while it is
in a source tree.
After it's been installed it filters out the ghc package, as that
currently swamps everything else in the index.
]
[Build fixes for DLLized rts
Clemens Fruhwirth <clemens at endorphin.org>**20081013201608]
[Do not filter the rts from linked libraries in linkDynLib as Windows does not allow unresolved symbols
Clemens Fruhwirth <clemens at endorphin.org>**20081013201426]
[Add HsFFI.o to INSTALL_LIBS
Clemens Fruhwirth <clemens at endorphin.org>**20081013200945]
[Rename symbol macros to a consistant naming scheme
Clemens Fruhwirth <clemens at endorphin.org>**20081013162433]
[Fix #2685: two Bool arguments to tidyTypeEnv were the wrong way around
Simon Marlow <marlowsd at gmail.com>**20081013121339
So -XTemplateHaskell was behaving like -fomit-interface-file-pragmas,
and vice versa.
]
[Simplify the "is $bindir in $PATH" test
Ian Lynagh <igloo at earth.li>**20081011191008]
[Correct the "is $bindir in $PATH" test
Ian Lynagh <igloo at earth.li>**20081011191030
We were testing neq instead of eq
]
[Fix a typo which was causing ghci to quit on commands errors
pepe <mnislaih at gmail.com>**20081011114720]
[Drop libm from the linker dependencies for libffi
Clemens Fruhwirth <clemens at endorphin.org>**20081011074524]
[Do not generate haddock documentation when running install-docs in libffi
Clemens Fruhwirth <clemens at endorphin.org>**20081010192318]
[When waking up thread blocked on TVars, wake oldest first (#2319)
Josef Svenningsson <josef.svenningsson at gmail.com>**20081010150322
StgTVarWatchQueue contains the threads blocked on a TVar in order
youngest first. The list has to be traversed backwards to unpark the threads
oldest first.
This improves the fairness when using STM in some situations.
]
[add readTVarIO :: TVar a -> IO a
Simon Marlow <marlowsd at gmail.com>**20081010131545]
[fix #2636: throw missing module errors as SourceErrors, not ErrMsg
Simon Marlow <marlowsd at gmail.com>**20081010131535]
[atomicModifyIORef: use a local cas() instead of the global lock
Simon Marlow <simonmar at microsoft.com>**20081008154702
This should improve scaling when using atomicModifyIORef
]
[Delay building libffi until package.conf is created and fix bindist
Clemens Fruhwirth <clemens at endorphin.org>**20081010073106]
[Install a versioned ghc-pkg script; fixes trac #2662
Ian Lynagh <igloo at earth.li>**20081009164946]
[Fix bindist creation: Only the main RTS was being put in the bindists
Ian Lynagh <igloo at earth.li>**20081009163451]
[pushAtom: add missing case for MachNullAddr (#2589)
Simon Marlow <marlowsd at gmail.com>**20081009091118]
[undo incorrect assertion, and fix comments
Simon Marlow <marlowsd at gmail.com>**20081009085118]
[remove old GRAN/PARALLEL_HASKELL code
Simon Marlow <marlowsd at gmail.com>**20081009085051]
[FIX #2639
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081009132328
MERGE TO 6.10
]
[Cover PredTy case in Type.tyFamInsts
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081009061435
MERGE TO 6.10
]
[Drop ghcconfig.h/RtsConfig.h from libffi's package.conf.in
Clemens Fruhwirth <clemens at endorphin.org>**20081009071342]
[Don't use sed's -i flag as Solaris doesn't know it in libffi/Makefile
Clemens Fruhwirth <clemens at endorphin.org>**20081008234455]
[Don't use /dev/null trick to create empty object files in libffi/Makefile
Clemens Fruhwirth <clemens at endorphin.org>**20081008232902]
[Turn libffi into a Haskell package
Clemens Fruhwirth <clemens at endorphin.org>**20081008170443]
[Make 'getModSummary' deterministic.
Thomas Schilling <nominolo at googlemail.com>**20081008144032]
[Add accessors to 'HsModule' and haddockify it.
Thomas Schilling <nominolo at googlemail.com>**20081007235656]
[fix syntax errors in src-dist publish rules
Simon Marlow <marlowsd at gmail.com>**20081008103432]
[add comments and an ASSERT_LOCK_HELD()
Simon Marlow <marlowsd at gmail.com>**20081008112627]
[Fix #2663: we had a hard-wired capabilities[0]
Simon Marlow <marlowsd at gmail.com>**20081008112609
For some unknown reason in schedulePostRunThread() we were always
passing capabilities[0] rather than the current Capability to
throwToSingleThreaded(). This caused all kinds of weird failures and
crashes in STM code when running on multiple processors.
]
[Fix #1955 for heap profiles generated by +RTS -hT
Simon Marlow <marlowsd at gmail.com>**20081003150745]
[add a section id for +RTS -hT
Simon Marlow <marlowsd at gmail.com>**20081007151007]
[update documentation for PostfixOperators
Simon Marlow <marlowsd at gmail.com>**20081007150957]
[fix markup
Simon Marlow <marlowsd at gmail.com>**20081007150943]
[Fix bug in DPH docs
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20081008101618]
[Add short DPH section to users guide
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20081008064754
MERGE TO 6.10
]
[Users Guide: added type family documentation
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081008061927
MERGE TO 6.10
]
[Track changes to package dph
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20081008032859
MERGE TO 6.10
]
[Build a profiled GHC API by default if p is in GhcLibWays
Ian Lynagh <igloo at earth.li>**20081007152318]
[Check whether mk/validate.mk defines anything after validating
Ian Lynagh <igloo at earth.li>**20081007144855]
[Remove #define _BSD_SOURCE from Stg.h
Ian Lynagh <igloo at earth.li>**20081006101959
It's no longer needed, as base no longer #includes it
]
[Make ghctags compile again.
Thomas Schilling <nominolo at googlemail.com>**20081007135705]
[Revert AutoLinkPackages change for dynamic libraries. Cabal handles that now.
Clemens Fruhwirth <clemens at endorphin.org>**20081007100417]
[Change suffix for dyn. linked executables from _real to .dyn
Clemens Fruhwirth <clemens at endorphin.org>**20081007100750]
[Add accessors to 'Target' fields and haddockify.
Thomas Schilling <nominolo at googlemail.com>**20081006222940
MERGE TO 6.10
]
[Make 'gblock' and 'gunblock' part of 'ExceptionMonad'. This way the
Thomas Schilling <nominolo at googlemail.com>**20081006222831
default implementations of 'gbracket' and 'gfinally' just work.
MERGE TO 6.10
]
[Add Word8 support to vectoriser
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20081007004416
MERGE TO 6.10
]
[Fix generating OS X installers: Set COMMAND_MODE=unix2003
Ian Lynagh <igloo at earth.li>**20081005222715
If we don't specify COMMAND_MODE=unix2003 then xcodebuild defaults
to setting it to legacy, which means that ar builds archives
without a table of contents. That makes the build fail later on.
]
[We need to set datadir = $(libdir) in bindists
Ian Lynagh <igloo at earth.li>**20081005143307
We already do in the normal Makefiles.
This is because GHC needs package.conf and unlit to be in the same place
(and things like ghc-pkg need to agree on where package.conf is, so we
just set it globally).
]
[prep-bin-dist-mingw complains if it finds a bad version of windres
Ian Lynagh <igloo at earth.li>**20081004175351]
[removed Data.Generics.Basics, added Data.Data
'Jose Pedro Magalhaes <jpm at cs.uu.nl>'**20081002082808]
[Fix a build problem with GHC 6.4.2
Ian Lynagh <igloo at earth.li>**20081003195700]
[No AutoLinkPackages for dynamic library linking
Clemens Fruhwirth <clemens at endorphin.org>**20081003185304]
[use ghcError for error in command line
Clemens Fruhwirth <clemens at endorphin.org>**20081001125648]
[Fix warnings
simonpj at microsoft.com**20081003171207]
[Always use extensible exceptions in ghc-pkg, rather than using ifdefs
Ian Lynagh <igloo at earth.li>**20081003161247]
[Use a proper exception for IOEnvFailure, not just a UserError
Ian Lynagh <igloo at earth.li>**20081003160129]
[Use an extensible-exceptions package when bootstrapping
Ian Lynagh <igloo at earth.li>**20081003140216
Ifdefs for whether we had extensible exceptions or not were spreading
through GHC's source, and things would only have got worse for the next
2-3 years, so instead we now use an implementation of extensible
exceptions built on top of the old exception type.
]
[Expunge ThFake, cure Trac #2632
simonpj at microsoft.com**20081003140423
This patch fixes a dirty hack (the fake ThFake module), which in turn
was causing Trac #2632.
The new scheme is that the top-level binders in a TH [d| ... |] decl splice
get Internal names. That breaks a previous invariant that things like
TyCons always have External names, but these TyCons are never long-lived;
they live only long enough to typecheck the TH quotation; the result is
discarded. So it seems cool.
Nevertheless -- Template Haskell folk: please test your code. The testsuite
is OK but it's conceivable that I've broken something in TH. Let's see.
]
[Make a debug check more refined
simonpj at microsoft.com**20081003140144]
[Add ASSERTs to all calls of nameModule
simonpj at microsoft.com**20081003135334
nameModule fails on an InternalName. These ASSERTS tell you
which call failed.
]
[Let parseModule take a ModSummary like checkAndLoadModule did.
Thomas Schilling <nominolo at googlemail.com>**20081002230412
To get the ModSummary for a ModuleName getModSummary can be used.
It's not called find* or lookup* because it assumes that the module is
in the module graph and throws an exception if it cannot be found.
Overall, I'm not quite sure about the usefulness of this function
since the user has no control about which filetype to grab (hs or
hs-boot).
]
[Remove some out-of-date entries from .darcs-boring
Ian Lynagh <igloo at earth.li>**20081002201519]
[TFs: Allow repeated variables in left-hand sides of instances
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081002134539
MERGE TO 6.10
]
[Clean up some comments
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081002074642
MERGE TO 6.10
]
[Make the new binder-swap stuff in OccurAnal work right for GlobalIds
simonpj at microsoft.com**20081002133002
See Note [Binder swap on GlobalId scrutinees]. I hadn't got this
right before, so repeated cases on imported Ids weren't getting optimised.
]
[Minor refactoring only
simonpj at microsoft.com**20081002132929]
[Comments only
simonpj at microsoft.com**20081002132833]
[Zap dead-ness info appropriately in SpecConstr
simonpj at microsoft.com**20081002132657
SpecConstr can make pattern binders come alive, so we must remember
to zap their dead-variable annotation. See extendCaseBndrs.
(This was triggering a Core Lint failure in DPH.)
]
[Suppress invalid Core Lint complaint about lack of constructors
simonpj at microsoft.com**20081002132426]
[add some more GC roots (fixes conc048, and possibly some others)
Simon Marlow <marlowsd at gmail.com>**20081001164427]
[Document +RTS -hT
Simon Marlow <marlowsd at gmail.com>**20081001163222
We forgot to document this in GHC 6.8
]
[fix new-qualified-operators link
Simon Marlow <marlowsd at gmail.com>**20081001163105]
[Proper error message for unsupported pattern signatures
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081001144339
- Pattern signatures must be identical to the type expected for the pattern;
see Note [Pattern coercions]
- We now signal an appropriate error if an equality coercion would be needed
(instead of just generating Core that doesn't typecheck)
MERGE TO 6.10
]
[Prevent excessive inlining with DPH
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20081002012055
This adds a new flag -finline-if-enough-args which disables inlining for
partially applied functions. It is automatically set by -Odph. This is a
temporary hack and should remain undocumented.
MERGE TO 6.10
]
[On Windows, check that we have a good version of windres when configuring
Ian Lynagh <igloo at earth.li>**20081001171133]
[Call $(PERL) rather than perl when making the manpage
Ian Lynagh <igloo at earth.li>**20080930155054]
[don't install the installPackage program
Ian Lynagh <igloo at earth.li>**20080930145714]
[Fix #2637: conc032(threaded2) failure
Simon Marlow <marlowsd at gmail.com>**20081001135549
There was a race condition whereby a thread doing throwTo could be
blocked on a thread that had finished, and the GC would detect this
as a deadlock rather than raising the pending exception. We can't
close the race, but we can make the right thing happen when the GC
runs later.
]
[Remove outdated link to OGI webpage
Simon Marlow <marlowsd at gmail.com>**20080930150912]
[TFs: Fixed InstContextNorm (and simplification of IPs)
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081001131303
MERGE TO 6.10
]
[TcSimplify.reduceImplication: clean up
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081001091315
- This cleans up some of the mess in reduceImplication and documents the
precondition on the form of wanted equalities properly.
- I also made the back off test a bit smarter by allowing to back off in the
presence of wanted equalities as long as none of them got solved in the
attempt. (That should save generating some superfluous bindings.)
MERGE TO 6.10
]
[Make sure to zonk the kind of coercion variables
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20081001053243
MERGE TO 6.10
]
[Remover PROT_EXEC flag from mmap()
Simon Marlow <marlowsd at gmail.com>**20080930141842
Needed for #738 fix
]
[Fix #2410: carefully generate unique names for CAF CCs
Simon Marlow <marlowsd at gmail.com>**20080930141812]
[fix #2594: we were erroneously applying masks, as the reporter suggested
Simon Marlow <marlowsd at gmail.com>**20080930115611
My guess is that this is left over from when we represented Int8 and
friends as zero-extended rather than sign-extended. It's amazing it hasn't
been noticed earlier.
]
[Unconditionalize definition of DYNAMIC_* so that libffi.so/.dll is removed even when BuildSharedLibs is reset to NO
Clemens Fruhwirth <clemens at endorphin.org>**20080930085449]
[Type families: need to instantiate flexible skolems before other flexibles
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080930053559
MERGE TO 6.10
]
[Fix warnings
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080929142227]
[Type families: consider subst rules both way
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080929141040
- applySubstFam, applySubstVarVar & applySubstVarFam need to return their
second argument -to be put into the todo list- if the rule would be
applicable if the equalities would be supplied in the opposite order.
MERGE TO 6.10
]
[Clean up a bit and improve an error message
pepe**20080926211429]
[Don't capture error calls in tryUser
pepe**20080926204836
A previous patch slightly changed the semantics of tryUser.
This patch restores the original behaviour
(as expected in :print)
]
[tweaks to this section of the docs
Simon Marlow <simonmar at microsoft.com>**20080927141834]
[Add -outputdir flag (#2295)
Simon Marlow <simonmar at microsoft.com>**20080927141822]
[oops, forgot to add -XNewQualifiedOperators to the flags table
Simon Marlow <simonmar at microsoft.com>**20080923140449]
[Fix making OS X installers from source tarballs
Ian Lynagh <igloo at earth.li>**20080927150507
I'm not sure why it works in the HEAD, but when making an installer
from the 6.10.1 beta configure hangs when doing the CHECK_HIST_ERRORS
test (during rl_initialize, I believe). Giving make /dev/null as stdin
fixes it.
]
[Make the matching of the filename ghc.exe case insensitive, fixes bug #2603
Neil Mitchell <ndmitchell at gmail.com>**20080916160311]
[Fix #2411: missing case for CATCH_STM_FRAME in raiseAsync()
Simon Marlow <simonmar at microsoft.com>**20080926232806]
[Fix parsing of -ignore-package flag.
Bertram Felgenhauer <int-e at gmx.de>**20080925053820]
[Add an example of how to use SCCs to the user guide
Ian Lynagh <igloo at earth.li>**20080926203832]
[Add some description of the +RTS -t/-s/-S output
Ian Lynagh <igloo at earth.li>**20080926200203]
[Remove a redundant options pragma
Ian Lynagh <igloo at earth.li>**20080926152731]
[Split ShowVersion etc off into a different type to DoInteractive etc
Ian Lynagh <igloo at earth.li>**20080926140539
This fixes trac #1348 (ghci --help gave ghc's help), and also tidies
things up a bit. Things would be even tidier if the usage.txt files were
put into a .hs file, so that ShowUsage wouldn't need to be able to find
the libdir.
]
[Pass SRC_HC_OPTS to GHC when building GHC's Main.hs
Ian Lynagh <igloo at earth.li>**20080926131609]
[Improve runghc docs; fixes trac #2477
Ian Lynagh <igloo at earth.li>**20080926124425]
[Type families: fixes in flattening & finalisation
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080925225324
* Finalisation didn't do the right thing for equalities x ~ y, where
x was instantiated, but not zonked and y flexible (need to do y := x)
* During flattening we weren't careful enough when turning wanteds
intermediates into locals
Both bugs showed up in a small example of SPJ:
linear :: HasTrie (Basis v) => (Basis v, v)
linear = basisValue
class HasTrie a where
type family Basis u :: *
basisValue :: (Basis v,v)
basisValue = error "urk"
]
[Fix the behaviour of flags like --help and --version; fixes trac #2620
Ian Lynagh <igloo at earth.li>**20080925165618
They should override other mode flags, not conflict with them
]
[Follow the integer package changes
Ian Lynagh <igloo at earth.li>**20080925133855]
[Type families: fix decomposition problem
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080925084139
* Fixes the problem reported in
<http://www.haskell.org/pipermail/haskell-cafe/2008-July/044911.html>
]
[Don't exit ghci if :info is called on an undefined identifier.
Judah Jacobson <judah.jacobson at gmail.com>**20080924212422]
[Fix maintainer-clean
Ian Lynagh <igloo at earth.li>**20080924230553]
[Use -f when making the runhaskell symlink
Ian Lynagh <igloo at earth.li>**20080924124255
Otherwise installation fails if runhaskell already exists.
]
[Use -perm -100 rather than -perm /a+x when looking for executable files
Ian Lynagh <igloo at earth.li>**20080924124137
/a+x doesn't work on some Solaris and OS X machines. Spotted by
Christian Maeder.
]
[Use $(FIND) rather than find, as the former may be gfind
Ian Lynagh <igloo at earth.li>**20080924123323]
[Look for gfind as well as find
Ian Lynagh <igloo at earth.li>**20080924123046]
[In configure, don't call FPTOOLS_HADDOCK
Ian Lynagh <igloo at earth.li>**20080924122558
We now use the in-tree haddock, so we don't need to look for it.
]
[Use $(TAR) rather than tar
Ian Lynagh <igloo at earth.li>**20080924121759
Fixes problems on Solaris, where we need to use gtar instead of tar
]
[Add $(strip) to a Makefile test
Ian Lynagh <igloo at earth.li>**20080924120940
Fixes making bindists on solaris. Patch from Christian Maeder.
]
[Use test -f rather than test -e, for portability (Solaris)
Ian Lynagh <igloo at earth.li>**20080924120840]
[Remove some dependencies on bootstrapping.conf from libraries/Makefile
Ian Lynagh <igloo at earth.li>**20080923205755
They were causing some unnecessary work:
Running make in a built tree reregisters the GHC package in
bootstrapping.conf, and the build system thought that this updated
timestamp meant that the configure stamps were out of date. This is
particularly bad for the libraries with configure scripts, as those
take a while to run.
The bootstrapping.conf is built in an earlier phase ("make boot") so
one shouldn't rely on the dependencies anyway.
]
[Bump the version number to 6.11
Ian Lynagh <igloo at earth.li>**20080923165613]
[Generalise type of 'defaultErrorHandler' so it can be used inside a Ghc session.
Thomas Schilling <nominolo at googlemail.com>**20080921085647]
[Make "sh -e boot" work
Ian Lynagh <igloo at earth.li>**20080921111508]
[Use -f rather than -e for portability
Ian Lynagh <igloo at earth.li>**20080921111436]
[Add some special cases for putting dph in bindists
Ian Lynagh <igloo at earth.li>**20080921000406]
[Escape a hash in the Makefile (it was breaking source dist creation)
Ian Lynagh <igloo at earth.li>**20080920232945]
[Disallow package flags in OPTIONS_GHC pragmas (#2499)
Simon Marlow <simonmar at microsoft.com>**20080923173904]
[#2566: emit a warning for 'ghc -c foo.bar'
Simon Marlow <simonmar at microsoft.com>**20080923144956
$ ghc -c foo.bar
Warning: the following files would be used as linker inputs, but linking is not being done: foo.bar
ghc: no input files
Usage: For basic information, try the `--help' option.
]
[Fix to new executable allocation code (fixed print002 etc.)
Simon Marlow <simonmar at microsoft.com>**20080922210915
The problem here is caused by the fact that info tables include a
relative offset to the string naming the constructor. Executable
memory now resides at two places in the address space: one for writing
and one for executing. In the info tables generated by GHCi, we were
calculating the offset relative to the writable instance, rather than
the executable instance, which meant that the GHCi debugger couldn't
find the names for constructors it found in the heap.
]
[clean sm/Evac_thr.c and sm/Scav_thr.c
Simon Marlow <simonmar at microsoft.com>**20080922152827]
[add -XNewQualifiedOperators (Haskell' qualified operator syntax)
Simon Marlow <simonmar at microsoft.com>**20080922152340]
[Fix Trac #2597 (first bug): correct type checking for empty list
simonpj at microsoft.com**20080920212010
The GHC front end never generates (ExplicitList []), but TH can.
This patch makes the typechecker robust to such programs.
]
[Fix Trac #2597 (second bug): complain about an empty DoE block
simonpj at microsoft.com**20080920211101
When converting an empty do-block from TH syntax to HsSyn,
complain rather than crashing.
]
[Update dependencies
Ian Lynagh <igloo at earth.li>**20080920183534]
[Fix building with GHC 6.6
Ian Lynagh <igloo at earth.li>**20080920162918]
[Remove fno-method-sharing from the list of static flags
Ian Lynagh <igloo at earth.li>**20080920010635
It is now a dynamic flag
]
[Tidy up the treatment of dead binders
simonpj at microsoft.com**20080920175238
This patch does a lot of tidying up of the way that dead variables are
handled in Core. Just the sort of thing to do on an aeroplane.
* The tricky "binder-swap" optimisation is moved from the Simplifier
to the Occurrence Analyser. See Note [Binder swap] in OccurAnal.
This is really a nice change. It should reduce the number of
simplifier iteratoins (slightly perhaps). And it means that
we can be much less pessimistic about zapping occurrence info
on binders in a case expression.
* For example:
case x of y { (a,b) -> e }
Previously, each time around, even if y,a,b were all dead, the
Simplifier would pessimistically zap their OccInfo, so that we
can't see they are dead any more. As a result virtually no
case expression ended up with dead binders. This wasn't Bad
in itself, but it always felt wrong.
* I added a check to CoreLint to check that a dead binder really
isn't used. That showed up a couple of bugs in CSE. (Only in
this sense -- they didn't really matter.)
* I've changed the PprCore printer to print "_" for a dead variable.
(Use -dppr-debug to see it again.) This reduces clutter quite a
bit, and of course it's much more useful with the above change.
* Another benefit of the binder-swap change is that I could get rid of
the Simplifier hack (working, but hacky) in which the InScopeSet was
used to map a variable to a *different* variable. That allowed me
to remove VarEnv.modifyInScopeSet, and to simplify lookupInScopeSet
so that it doesn't look for a fixpoint. This fixes no bugs, but
is a useful cleanup.
* Roman pointed out that Id.mkWildId is jolly dangerous, because
of its fixed unique. So I've
- localied it to MkCore, where it is private (not exported)
- renamed it to 'mkWildBinder' to stress that you should only
use it at binding sites, unless you really know what you are
doing
- provided a function MkCore.mkWildCase that emodies the most
common use of mkWildId, and use that elsewhere
So things are much better
* A knock-on change is that I found a common pattern of localising
a potentially global Id, and made a function for it: Id.localiseId
]
[Gix the ghcii script
Ian Lynagh <igloo at earth.li>**20080919174651
The ghc executable name doesn't have a version number on Windows, so
don't put one in the script.
]
[Create runhaskell as well as runghc
Ian Lynagh <igloo at earth.li>**20080919153010]
[On Linux use libffi for allocating executable memory (fixed #738)
Simon Marlow <marlowsd at gmail.com>**20080919134602]
[Move the context_switch flag into the Capability
Simon Marlow <marlowsd at gmail.com>**20080919102601
Fixes a long-standing bug that could in some cases cause sub-optimal
scheduling behaviour.
]
[Fix building the extralibs tarball
Ian Lynagh <igloo at earth.li>**20080919133555
We now need to dig the appropriate lines out of packages, rather than
just catting libraries/extra-packages, in order to find out what the
extralibs are.
]
[Install libffi when installing frmo a bindist
Ian Lynagh <igloo at earth.li>**20080919130332]
[Fix how we put libffi into bindists
Ian Lynagh <igloo at earth.li>**20080919125528]
[TAG 6.10 branch has been forked
Ian Lynagh <igloo at earth.li>**20080919123437]
[Don't require Parser.y in a source dist
Ian Lynagh <igloo at earth.li>**20080919115831]
[Add HpcParser.hs to source dists
Ian Lynagh <igloo at earth.li>**20080919115816]
[Fix the list of generated files that need to go into the source dists
Ian Lynagh <igloo at earth.li>**20080919112522]
[Improve documentation of overlapping instances
simonpj at microsoft.com**20080919093147]
[Put generated files in source dists
Ian Lynagh <igloo at earth.li>**20080918194424
We don't want to require that users building source dists have alex/happy
]
[Add libraries/syb to .darcs-boring
Ian Lynagh <igloo at earth.li>**20080918190116]
[Fix a couple of issues with :print
pepe**20080918122133
- Ticket #1995: Unsoundness with newtypes
- Ticket #2475: "Can't unify" error when stopped at an exception
In addition this patch adds the following:
- Unfailingness: RTTI cannot panic anymore.
In case of failure, it recovers gracefully by returning the "I know nothing" type
- A -ddump-rtti flag
]
[wibble
pepe <mnislaih at gmail.com>**20080418172303]
[RichTokenStream support
Chaddai Fouche <chaddai.fouche at gmail.com>**20080918165256
This patch adds support for raw token streams, that contain more
information than normal token streams (they contains comments at
least). The "lexTokenStream" function brings this support to the
Lexer module. In addition to that, functions have been added to
the GHC module to make easier to recover of the token stream of
a module ("getTokenStream").
Building on that, I added what could be called "rich token
stream": token stream to which have been added the source string
corresponding to each token, the function addSourceToToken takes
a StringBuffer and a starting SrcLoc and a token stream and build
this rich token stream. getRichTokenStream is a convenience
function to get a module rich token stream. "showRichTokenStream"
use the SrcLoc information in such a token stream to get a string
similar to the original source (except unsignificant
whitespaces). Thus "putStrLn . showRichTokenStream =<<
getRichTokenStream s mod" should print a valid module source, the
interesting part being to modify the token stream between the get
and the show of course.
]
[When passing gcc -B, also tell it where the mingw include directory is
Ian Lynagh <igloo at earth.li>**20080918143312]
[Don't put the mingw directory in RTS's package.conf
Ian Lynagh <igloo at earth.li>**20080918143118]
[Be more forceful when cleaning in compiler/ and ghc/
Ian Lynagh <igloo at earth.li>**20080918134443
Now that the Cabal file is generated by configure, it would be nice
if clean worked even if the cabal file is missing. So now we just rm -rf
the dist directory.
]
[Generate ghc.cabal and ghc-bin.cabal with configure
Ian Lynagh <igloo at earth.li>**20080918133636
This allows us to put the proper version number into them
]
[Make the ghci scripts point to the versioned GHC program, not just "ghc"
Ian Lynagh <igloo at earth.li>**20080918122516]
[Fix Trac #1470: improve handling of recursive instances (needed for SYB3)
simonpj at microsoft.com**20080918161719
This bug has been hanging around for a long time, as you'll see by its
number. The fix implements a feature that is really needed by SYB3, to
allow an instance to (rather indirectly) refer to itself. The trickiness
comes when solving the superclass constraints.
The whoel issue is explained in Note [Recursive instances and superclases]
in TcSimplify.
In cracking this one I found I could remove the WantSCs argument to the
ReduceMe flag, which is a worthwhile simplification. Good!
]
[Comments only
simonpj at microsoft.com**20080918155602]
[Replace ASSERT with WARN, and explain why
simonpj at microsoft.com**20080918155245
The DPH library tripped an ASSERT. The code is actually OK, but it's
badly-optimised so I changed it to WARN. The issue here is explained
in ClosureInfo, Note [Unsafe coerce complications].
]
[Add a missing "prime" (env' --> env'') thereby fixing a tripping WARN. Hurrah!
simonpj at microsoft.com**20080918155144]
[Fix nasty infelicity: do not short-cut empty substitution in the simplifier
simonpj at microsoft.com**20080917162910
I was perplexed about why an arity-related WARN was tripping. It took
me _day_ (sigh) to find that it was because SimplEnv.substExpr was taking
a short cut when the substitution was empty, thereby not subsituting for
Ids in scope, which must be done (CoreSubst Note [Extending the Subst]).
The fix is a matter of deleting the "optimisation". Same with
CoreSubst.substSpec, although I don't know if that actually caused a
probem.
]
[Avoid arity reduction when doing eta-reduce
simonpj at microsoft.com**20080917162704
We like things with high arity, so when doing eta reduction
it's probably a good idea to avoid reducing arity.
]
[Add extra WARN test
simonpj at microsoft.com**20080917162434
This warning tests that the arity of a function does not decrease.
And that it's at least as great as the strictness signature.
Failing this test isn't a disater, but it's distinctly odd and
usually indicates that not enough information is getting propagated
around, and hence you may get more simplifier iterations.
]
[Comments only
simonpj at microsoft.com**20080917162350]
[Re-adjust interaction between -ddump flags and force-recompilation
simonpj at microsoft.com**20080917161920
If you say -ddump-xx we effectively add -fforce-recomp, so that you
see your dump output. But this works badly in --make mode, because
you get the ddump output for every module, which is probably not what
you want. This patch forces recompilation with -ddump-X only in one-shot
mode.
Of course, this only affects people using -ddump options.
]
[Add Outputable GhcMode instance
simonpj at microsoft.com**20080917161847]
[Improve error reporting for 'deriving' (Trac #2604)
simonpj at microsoft.com**20080917135104]
[Add link to GADT paper re rigid types
simonpj at microsoft.com**20080916094521]
[Fix MacOS X build: don't believe __GNUC_GNU_INLINE__ on MacOS X
Simon Marlow <marlowsd at gmail.com>**20080918112856]
[require Alex version 2.1.0
Simon Marlow <marlowsd at gmail.com>**20080918112812
Having 2.0.1 causes some unicode tests to fail
]
[Type families: fixes in the new solver
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080918100934]
[ext-core library: Parser fixes; make it build with the HEAD
Tim Chevalier <chevalier at alum.wellesley.edu>**20080918090349
In the ext-core parser I guess I never tested:
* existential type variable bindings in case alts
* empty data declarations
That'll learn me!
]
[Wibble ghc-pkg imports to fix building on Windows
Ian Lynagh <igloo at earth.li>**20080917210813]
[ghc-pkg needs to make package.conf with sensible permissions
Ian Lynagh <igloo at earth.li>**20080917192155
It was calling openTempFile which uses a 600 permissions mask.
]
[Change 'loadWithCompiler' callback argument to just print warnings.
Thomas Schilling <nominolo at googlemail.com>**20080917102925
Rename function accordingly.
The callback wasn't very flexible to begin with. There's pretty much
no way around to calling 'compile' inside that callback since
'upsweep' depends on certain side effects of compile. It therefore
makes more sense to restrict the callback to its intended use only,
namely to log warnings and errors.
]
[Fix: GhcStage2HcOpts were being added to stage 3 too
Simon Marlow <marlowsd at gmail.com>**20080917085917]
[Type families: unify with family apps in checking mode
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080917062548]
[Type families: bug fixes
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080916151254]
[Keep sysnonyms folded in equalities if possible
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080916075700]
[Type families: apply flattening coercions in the right order
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080916055136]
[TcTyFuns: tidy warning
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080915031423]
[Signature for Inst.isValidWantedEqInst
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080915030118]
[Remember if RewriteInst is swapped & bug fixes
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080914163639]
[Type families: fixed all non-termination in the testsuite
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080914120638]
[Type families: completed the new equality solver
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20080913133631
- Implements normalisation of class constraints containing synonym family
applications or skolems refined by local equalities.
- Clean up of TcSimplify.reduceContext by using the new equality solver.
- Removed all the now unused code of the old algorithm.
- This completes the implementation of the new algorithm, but it is largely
untested => many regressions.
]
[Use the new -optdep flag replacements when building with >= GHC 6.9
Ian Lynagh <igloo at earth.li>**20080916220057
Fix building the HEAD with itself
]
[Use "exec" when running ghc in the wrapper
Ian Lynagh <igloo at earth.li>**20080915100217]
[Add "#!/bin/sh" to runghc.wrapper
Ian Lynagh <igloo at earth.li>**20080914153507]
[Add a "#!/bin/sh" to ghc.wrapper
Ian Lynagh <igloo at earth.li>**20080914153344]
[Fixing directory creation to not create "" directories inside hpc report (harmless but needless)
andygill at ku.edu**20080916172313]
[Fix Trac #2052 Allowing hpc to understand hsc files.
andygill at ku.edu**20080916030521]
[Fix Trac #2311: creates subdirs for package coverage information
andygill at ku.edu**20080915204322]
[FIX #2469: sort out our static/extern inline story
Simon Marlow <marlowsd at gmail.com>**20080916132222
gcc has changed the meaning of "extern inline" when certain flags are
on (e.g. --std=gnu99), and this broke our use of it in the header
files.
]
[Fix a warning
Simon Marlow <marlowsd at gmail.com>**20080916130922]
[Stop using mremap() to allocate space for trampolines
Simon Marlow <marlowsd at gmail.com>**20080915145924
This was causing problems because sometimes mremap() moved the memory
we had allocated from the low 2Gb to above the 2Gb boundary, causing
some linkages to fail. There's no MAP_32BIT flag to mremap().
So now we just use mmap(MAP_ANON|MAP_32BIT) to allocated space for the
trampolines. People without MAP_32BIT (eg. *BSD) will still have to
do something else here, such as allocating memory from a fixed
address; so I've made it slightly easier for those guys, but there's
still work to do (#2063).
One solution (that Simon PJ is advocating) is to turn on -fPIC by
default on x86-64. This is a good solution as it removes the need for
MAP_32BIT, but doesn't work with -fvia-C, so probably this is for
later.
]
[add $(GhcStage[123]HcOpts)
Simon Marlow <marlowsd at gmail.com>**20080912155549]
[Improve handling of -fdph-* flags
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080916034746]
[Add -fdph-this
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080916033710]
[Remove last traces of package ndp
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080916033428]
[Clean up vectorisation error messages
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080916013236]
[Fix vectoriser bug
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080915042823
We were using mkWildId in situations where it cause disastrous shadowing
]
[Track changes to dph
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080912114028]
[Change desugaring of PArr literals
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080912015609]
[Expose the dph packages automatically if -dph-* is set
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080912004403]
[Don't panic on non-vectorisable expressions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080911054333]
[-Odph implies -fno-spec-constr-count
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20080910045339]
[Improve warning for SpecConstr
simonpj at microsoft.com**20080915154908]
[White space only
simonpj at microsoft.com**20080915154841]
[Minor refactoring to get rid of Type.splitNewTyConApp
simonpj at microsoft.com**20080915072946]
[Refactor the desugaring of RULE lhss a bit
simonpj at microsoft.com**20080915150601
This is just a tidy-up. Previously we were calling occurAnalyse
twice on each LHS which was silly and a bit unclean too.
This patch should have no overall effect, though.
]
[Do not use the Static Arg Transformation by default with -O2
simonpj at microsoft.com**20080915150433
Max has some more heuristics to add, and is meanwhile worried
that having SAT on by default will make some highly-tuned array
programs worse. So it's off by default.
Use -fstatic-argument-transformation to switch it on.
]
[Comments, and a couple of asserts, only
simonpj at microsoft.com**20080914114641]
[Fix Trac #2587: take account of type lets
simonpj at microsoft.com**20080914113434
GHC allows a non-recursive let for type varaibles
let a = TYPE ty in ...
But the free-variable finder had not caught up with this
fact. This patch catches up.
]
[Don't try to float type-lets
simonpj at microsoft.com**20080914113324
A type let shouldn't really occur in SetLevels, but if it does,
this patch makes sure it is left alone.
]
[add refs and fix a bug (noted by Peter Gammie) in docs of arrow notation
Ross Paterson <ross at soi.city.ac.uk>**20080915104757]
[Generalise type of 'withExtendedLinkEnv'.
Thomas Schilling <nominolo at googlemail.com>**20080915085738]
[Use 'GhcMonad' in ghci/InteractiveUI.
Thomas Schilling <nominolo at googlemail.com>**20080915085633]
[Use 'GhcMonad' in ghci/GhciTags.
Thomas Schilling <nominolo at googlemail.com>**20080915084922]
[Use 'GhcMonad' in ghci/Debugger.
Thomas Schilling <nominolo at googlemail.com>**20080915084738]
[Use 'GhcMonad' in ghci/GhciMonad.
Thomas Schilling <nominolo at googlemail.com>**20080915084646]
[Use 'GhcMonad' in ghc/Main.
Thomas Schilling <nominolo at googlemail.com>**20080914232957]
[Require PatternSignatures for bootstrapping compiler.
Thomas Schilling <nominolo at googlemail.com>**20080914232642]
[Use 'GhcMonad' in InteractiveEval.
Thomas Schilling <nominolo at googlemail.com>**20080914232454]
[Use 'GhcMonad' in GHC and split up checkModule into phases.
Thomas Schilling <nominolo at googlemail.com>**20080914232044
I'm not sure I covered all the ways of throwing errors in the code.
Some functions throw ProgramErrors, some error messages. It's still
quite a mess, but we're getting closer. The missing cases are mostly
errors that cannot be fixed by the API client either or are a result
of wrong usage, so are in any case fatal.
One function, 'getModuleInfo', still returns a 'Maybe', but the
documentation suggests it should always succeed. So I may change that
soon.
The spit-up of of 'checkModule' has pros and cons. The various forms
of 'checkModule*' now become:
checkAndLoadModule ms False ~~>
loadModule =<< typecheckModule =<< parseModule (ms_mod_name ms)
checkAndLoadModule ms True ~~>
loadModule =<< desugarModule =<< typecheckModule =<< parseModule (ms_mod_name ms)
checkModule mn False ~~>
typecheckModule =<< parseModule mn
checkModule mn True ~~>
desugarModule =<< typecheckModule =<< parseModule mn
The old APIs cannot easily be provided, since the result type would be
different depending on the second argument. However, a more
convenient API can be modelled on top of these four functions
({parse,typecheck,desugar,load}Module).
]
[Use 'GhcMonad' in DriverPipeline. Also haddockify a bit while we're at it.
Thomas Schilling <nominolo at googlemail.com>**20080914220628]
[Use 'GhcMonad' in HscMain.
Thomas Schilling <nominolo at googlemail.com>**20080914213655]
[Use 'GhcMonad' in DriverMkDepend.
Thomas Schilling <nominolo at googlemail.com>**20080914212113]
[Haddockify DynFlags (partial).
Thomas Schilling <nominolo at googlemail.com>**20080914211718]
[Haddockify 'IE'.
Thomas Schilling <nominolo at googlemail.com>**20080914210016]
[Provide accessors for 'ImportDecl'.
Thomas Schilling <nominolo at googlemail.com>**20080914205811]
[Start haddockifying 'HsBindLR'.
Thomas Schilling <nominolo at googlemail.com>**20080914205629]
[Document 'parseStaticFlags'.
Thomas Schilling <nominolo at googlemail.com>**20080914205316]
[Introduce 'GhcMonad' class and two default implementations 'Ghc' and 'GhcT'.
Thomas Schilling <nominolo at googlemail.com>**20080914204930
This monad will be required by most public API calls.
]
[Give the "Failing due to -Werror" message a name.
Thomas Schilling <nominolo at googlemail.com>**20080914173904]
[Make typechecker top-level functions also return messages instead of
Thomas Schilling <nominolo at googlemail.com>**20080914173228
printing them.
]
[Reflect changes of desugarer error reporting in VectMonad.
Thomas Schilling <nominolo at googlemail.com>**20080914172711]
[Generalise 'handleGhcException' to work with any 'ExceptionMonad'.
Thomas Schilling <nominolo at googlemail.com>**20080914172404]
[Introduce an 'ExceptionMonad' class.
Thomas Schilling <nominolo at googlemail.com>**20080914172154
This monad provides variants of 'catch', 'bracket', and 'finally', so
exceptions can be handled in monads that wrap IO. The latter two
methods need to be part of the class definition, because GHC uses
'block' and 'unblock' which are used in the definition of those two
methods for the IO monad. A perhaps better class interface would
consist of 'gcatch', 'gblock', and 'gunblock' and let the latter two
default to 'id' like is done for non-GHC implementations of 'bracket'
and 'finally'.
]
[Provide default MonadIO instance for IO.
Thomas Schilling <nominolo at googlemail.com>**20080914164245]
[Return instead of print warnings and errors in desugarer.
Thomas Schilling <nominolo at googlemail.com>**20080914163641]
[Return parser errors and warnings instead of dying.
Thomas Schilling <nominolo at googlemail.com>**20080914162644]
[Add aliases for bags of warnings and errors.
Thomas Schilling <nominolo at googlemail.com>**20080914160337]
[Slightly more helpful panic message in DynFlags
Tim Chevalier <chevalier at alum.wellesley.edu>**20080915080650]
[Comments only: ".core" => ".hcr"
Tim Chevalier <chevalier at alum.wellesley.edu>**20080914203645]
[We need to tell ghc-pkg to --force if we've only built a profiling library
Ian Lynagh <igloo at earth.li>**20080913153142]
[If we're profiling GHC, don't bother building the GHC package the vanilla way
Ian Lynagh <igloo at earth.li>**20080913144820]
[Remove the duplicate show rule in libraries/Makefile
Ian Lynagh <igloo at earth.li>**20080913144413]
[Move the "show" target from target.mk to boilerplate.mk
Ian Lynagh <igloo at earth.li>**20080913141312
target.mk isn't included everywhere, but show is always handy
]
[Change how we detect if we are using the bootstrapping compiler or not
Ian Lynagh <igloo at earth.li>**20080913104658
I think looking for $(GHC_COMPILER_DIR_ABS) was failing on the Windows
buildbot due to different path separators. Now we just look for
"inplace".
]
[wibble the distrib Makefile
Ian Lynagh <igloo at earth.li>**20080912135932
We now need to install driver after ghc
]
[Reinstate the driver/ghc directory, to create a versioned GHC program
Ian Lynagh <igloo at earth.li>**20080912113619
e.g. $(bindir)/ghc-6.9.20080911
]
[If USE_NEW_MKDEPEND_FLAGS is YES then don't use the deprecated -optdep flags
Ian Lynagh <igloo at earth.li>**20080912110316]
[Use --force-local when calling tar in bindisttest/
Ian Lynagh <igloo at earth.li>**20080912012855
Otherwise it thinks that c:/foo is a remote file
]
[Fix #2586, bug in THUNK_SELECTORs (again)
Simon Marlow <marlowsd at gmail.com>**20080912130404
This time, we had forgetten the write barrier in one place.
]
[TAG 2008-09-12 2
Ian Lynagh <igloo at earth.li>**20080912132848]
Patch bundle hash:
1fdf0d07687515529899817b04587fd2c6c867c5
-------------- next part --------------
Tue Apr 28 19:12:35 BST 2009 Duncan Coutts <duncan at well-typed.com>
* Fix make install DESTDIR=
It was installing the template data file directly
to $(datadir) rather than to $(DESTDIR)$(datadir)
New patches:
[Fix make install DESTDIR=
Duncan Coutts <duncan at well-typed.com>**20090428181235
It was installing the template data file directly
to $(datadir) rather than to $(DESTDIR)$(datadir)
] hunk ./ghc.mk 50
- $(MKDIRHIER $(datadir)
- $(CP) $< $(datadir)
+ $(INSTALL_DATA) $(INSTALL_OPTS) $< $(DESTDIR)$(datadir)
Context:
[only depend on gmp/libgmp.a if $(HaveLibGmp)=="NO"
Simon Marlow <marlowsd at gmail.com>**20090424122508
Ignore-this: 7426bf49d9ae47c222e3d32c6b22d857
]
[Tweak new build system
Ian Lynagh <igloo at earth.li>**20090404204402]
[GHC new build system fixes
Ian Lynagh <igloo at earth.li>**20090329153130]
[New GHC build system: Build gmp before hsc2hs is built
Ian Lynagh <igloo at earth.li>**20090327165704
And thus, before it is used.
]
[add a dependency to ensure libgmp.a gets built early enough
Simon Marlow <marlowsd at gmail.com>**20090401114532]
[restore the old-build-system Makefile
Simon Marlow <marlowsd at gmail.com>**20090324094711
Ignore-this: f4b7d66759d871093c8d326b4afda5da
]
[new GHC build system: update for new location of template-hsc.h
Simon Marlow <marlowsd at gmail.com>**20090323164248]
[new GHC build system: clean up
Simon Marlow <marlowsd at gmail.com>**20090323152028
Ignore-this: 9543d1dabc374a59bb85fc2b7abde13e
]
[Tweak new build system
Ian Lynagh <igloo at earth.li>**20090322162229]
[New GHC build system: build+install a copy of hsc2hs with the stage1 compiler
Ian Lynagh <igloo at earth.li>**20090322154413]
[Make it build with nhc98 again, now using System.Posix.Internals.
Malcolm.Wallace at cs.york.ac.uk**20090316134726]
[Add a -I flag with the path to HsFFI.h
Ian Lynagh <igloo at earth.li>**20090217202407
This can still be overridden by adding a -I flag to the commandline,
but it means that hsc2hs will work if no flags are given.
]
[Fix building on Windows in the new build system
Ian Lynagh <igloo at earth.li>**20090112173321]
[for the new GHC build system
Simon Marlow <marlowsd at gmail.com>**20081217134147]
[TAG 6.10 branch has been forked
Ian Lynagh <igloo at earth.li>**20080919123437]
[Add "#!/bin/sh" to hsc2hs.wrapper
Ian Lynagh <igloo at earth.li>**20080914153446]
[follow library changes
Ian Lynagh <igloo at earth.li>**20080903223538]
[revise .hc file list for new location of GetOpt
Malcolm.Wallace at cs.york.ac.uk**20080902100635]
[Add base4 support
Ian Lynagh <igloo at earth.li>**20080825121016]
[Fix warnings
Ian Lynagh <igloo at earth.li>**20080821173237]
[hsc2hs needs Control.Exception.Base now (for nhc98 Makefile)
Malcolm.Wallace at cs.york.ac.uk**20080814081548]
[Fix making bindists
Ian Lynagh <igloo at earth.li>**20080810145215]
[nhc98 bootstrap build via C now requires Data/Typeable.hc as well.
Malcolm.Wallace at cs.york.ac.uk**20080806140705]
[Fix up the Paths_hsc2hs story for nhc98.
Malcolm.Wallace at cs.york.ac.uk**20080728111253
The difference between #if !BUILD_NHC and #ifndef BUILD_NHC is subtle but real.
]
[use valid Haskell'98 indentation in do-blocks
Malcolm.Wallace at cs.york.ac.uk**20080727142319]
[Remove the dependency on Cabal
Ian Lynagh <igloo at earth.li>**20080724170758
We now use Data.Version.showVersion rather than display
]
[The default compiler is now always just "gcc"
Ian Lynagh <igloo at earth.li>**20080723174249]
[Modernise the Cabal file
Ian Lynagh <igloo at earth.li>**20080723140038]
[Add hsc2hs.wrapper from GHC's fork
Ian Lynagh <igloo at earth.li>**20080723140006]
[Add a Makefile for GHC's build system
Ian Lynagh <igloo at earth.li>**20080722203900]
[Sync with GHC's fork of the hsc2hs Main.hs
Ian Lynagh <igloo at earth.li>**20080722203736]
[Whitespace only
Ian Lynagh <igloo at earth.li>**20080626134645]
[We unconditionally import rawSystem, so it must be safe to use it
Ian Lynagh <igloo at earth.li>**20080626134444
rather than falling back to system if we don't think we have it
]
[Tweak whitespace
Ian Lynagh <igloo at earth.li>**20080626133836]
[nhc98-as-cross-compiler
myself at sylvain-nahas.com**20080406170620
This patch adds support for building nhc98 as a cross-compiler.
It does so by differencing during the build process between local toolchain (gcc) and cross-toolchain.
The configure script has been modified to accept a flag --target and some options becomes mandatory
since they can not be guessed in cross-compile mode.
The normal build is not impacted by these changes.
]
[ghc-6.8.x requires more package flags
Malcolm.Wallace at cs.york.ac.uk**20080306133138]
[nhc98 now needs Control.Exception to build from .hc files too
Malcolm.Wallace at cs.york.ac.uk**20080103154259]
[need -package filepath when building with nhc98
Malcolm.Wallace at cs.york.ac.uk**20070704111001]
[replace System.Directory.Internals with System.FilePath.Posix
Malcolm.Wallace at cs.york.ac.uk**20070703131448]
[add -package directory and process to nhc98 builds
Malcolm.Wallace at cs.york.ac.uk**20070525131115]
[track movement of modules from base to new packages
Malcolm.Wallace at cs.york.ac.uk**20070525094347]
[hsc2hs now depends on directory and process
Ross Paterson <ross at soi.city.ac.uk>**20070525083925]
[Use version number from Cabal file
sven.panne at aedion.de**20070225134301
Don't hardwire the version number into the Haskell code, use the one from the
Cabal file instead. Note that the nhc98 case is still not correct! The main
reason for this is that Data.Version is non-H98, which really, really sucks
and is unnecessary IMHO.
]
[add more library dependencies dragged in by recent changes to System.Directory
Malcolm.Wallace at cs.york.ac.uk**20061113105805]
[need -DBUILD_NHC for making bootstrapping .hc files as well
Malcolm.Wallace at cs.york.ac.uk**20061012125105]
[also requires System.Directory.Internals
Malcolm.Wallace at cs.york.ac.uk**20060823110150]
[need to link with System.Directory and Control.Monad for nhc98 build via C
Malcolm.Wallace at cs.york.ac.uk**20060822140146]
[fix previous patch to rawSystemWithStdOutL
Ross Paterson <ross at soi.city.ac.uk>**20060821080600]
[Complain more loudly if any of the hsc2hs phases fail
Malcolm.Wallace at cs.york.ac.uk**20060818141558
(From Duncan Coutts <duncan.coutts at worc.ox.ac.uk>**20060703234356)
Previously hsc2hs just exits with a non-zero exit code, now if any of
the compilation, linking or runing phases fail then we get a message
saying so and the failing command is printed.
]
[workaround for ghc-6.2.x not having System.Directory.findExecutable
Malcolm.Wallace at cs.york.ac.uk**20060713110313]
[hack to avoid non-existent Paths_hsc2hs module for nhc98
Malcolm.Wallace at cs.york.ac.uk**20060711162456]
[pointer to documentation
Ross Paterson <ross at soi.city.ac.uk>**20060602230137]
[boilerplate Setup.hs
Ross Paterson <ross at soi.city.ac.uk>**20060601164247]
[standalone version of hsc2hs
Ross Paterson <ross at soi.city.ac.uk>**20060601163728
Set up hsc2hs to build using Cabal.
Also simplified #'ifdef's, sacrificing compatibility with versions prior
to GHC 5.04, nhc 1.17 and Hugs Mar 2005.
]
[whitespace only
Ross Paterson <ross at soi.city.ac.uk>**20060601160708]
[TAG Fork of hsc2hs for independent use
Ross Paterson <ross at soi.city.ac.uk>**20060601155733]
[Make hsc2hs emit the full path name in {-# LINE #-} pagmas
Duncan Coutts <duncan.coutts at worc.ox.ac.uk>**20060122011831
For one thing this is the right thing to do anyway, it's what other tools do.
Secondly it allows haddock to produce accurate source code links.
]
[#ifdef cleanups
panne**20050521150726
While acting as warning police, I tried to clean up the #ifdef chaos a
little bit, I hope nothing has been broken due to that... :-]
]
[Fix and hopefully rationalise the #ifdefs for rawSystem/system/runProcess
simonmar**20050518094350]
[use runProcess instead of system if appropriate
krasimir**20050517094827
Use runProcess instead of system if the former is available and we would like
to redirect stdout of the new process. system is unsafe if you have spaces
in the file path or you have / instead of \ on Windows.
]
[Define __CYGWIN32__ for nhc98 build of hsc2hs
malcolm**20050310175843]
[Oops, misspelled OPTIONS_GHC
ross**20050129121533]
[replacements for OPTIONS
ross**20050128162856
from 6.3, generate INCLUDE instead of OPTIONS -#include and GHC_OPTIONS
instead of OPTIONS.
]
[Rationalise the BUILD,HOST,TARGET defines
simonmar**20050128125627
Recall that:
- build is the platform we're building on
- host is the platform we're running on
- target is the platform we're generating code for
The change is that now we take these definitions as applying from the
point of view of the particular source code being built, rather than
the point of view of the whole build tree.
For example, in RTS and library code, we were previously testing the
TARGET platform. But under the new rule, the platform on which this
code is going to run is the HOST platform. TARGET only makes sense in
the compiler sources.
In practical terms, this means that the values of BUILD, HOST & TARGET
may vary depending on which part of the build tree we are in.
Actual changes:
- new file: includes/ghcplatform.h contains platform defines for
the RTS and library code.
- new file: includes/ghcautoconf.h contains the autoconf settings
only (HAVE_BLAH). This is so that we can get hold of these
settings independently of the platform defines when necessary
(eg. in GHC).
- ghcconfig.h now #includes both ghcplatform.h and ghcautoconf.h.
- MachRegs.h, which is included into both the compiler and the RTS,
now has to cope with the fact that it might need to test either
_TARGET_ or _HOST_ depending on the context.
- the compiler's Makefile now generates
stage{1,2,3}/ghc_boot_platform.h
which contains platform defines for the compiler. These differ
depending on the stage, of course: in stage2, the HOST is the
TARGET of stage1. This was wrong before.
- The compiler doesn't get platform info from Config.hs any more.
Previously it did (sometimes), but unless we want to generate
a new Config.hs for each stage we can't do this.
- GHC now helpfully defines *_{BUILD,HOST}_{OS,ARCH} automatically
in CPP'd Haskell source.
- ghcplatform.h defines *_TARGET_* for backwards compatibility
(ghcplatform.h is included by ghcconfig.h, which is included by
config.h, so code which still #includes config.h will get the TARGET
settings as before).
- The Users's Guide is updated to mention *_HOST_* rather than
*_TARGET_*.
- coding-style.html in the commentary now contains a section on
platform defines. There are further doc updates to come.
Thanks to Wolfgang Thaller for pointing me in the right direction.
]
[more standard treatment of -D
ross**20050127123849
turn -Dfoo into
#define foo 1
(like C compilers do) instead of
#define foo
]
[make hsc2hs work with Hugs
ross**20050124003603]
[Remove dead branch of #elif
malcolm**20050106145502]
[find the best rawSystem
malcolm**20050106145417
When built as a ghc utility, Compat.RawSystem is always available.
When built as an nhc98 utility, -DBUILD_NHC symbol allows for getting
the best otherwise-available version of rawSystem.
]
[Add System.Cmd to c-files dependencies
malcolm**20050106115512]
[tweaks to finding rawSystem
malcolm**20050106104414
It seems that ghc-6.2.x doesn't have Compat.RawSystem, so should use
System.Cmd instead. And ghc-5.04.x doesn't export rawSystem from
there either, so should use the simple inline definition.
]
[recent non-GHCs can use System.Cmd.rawSystem
ross**20050105150625]
[`rawSystem` is only available in GHC
malcolm**20050105111746]
[Use rawSystem where appropriate
simonmar**20050105102646]
[Merge backend-hacking-branch onto HEAD. Yay!
simonmar**20040813131123]
[Avoid string gaps in CPP'd source
simonmar**20040812121255]
[Workaround for hbc
panne**20040629171401
It compiles matching against 0-ary constructors in list comprehensions
into wrong code, e.g.
[ () | True <- [False] ]
results in something like
Error: No match in I4680Pinteractive
when issued in hbi.
]
[Small syntactic changes to please hbc's interpretation of the layout rule and records
panne**20040627204107]
[Move Makefiles for nhc98's build here, prior to grafting the directory
malcolm**20040611111057]
[Comments only
simonpj**20040303171151]
[hack for .exe extension
panne**20040215122027
I'm giving up here: The various quoting-related changes in rawSystem &
friends make it impossible to pass $(exeext) with double quotes via
cpp to Main.hs in a backwards-compatible way, so we revert to a cruel
hack here. >:-( Improvements are highly welcome...
]
[only uses FFI, not glasgow-exts, and updated ffi syntax
ross**20040209172320]
[Some hints about compiling hsc2hs with nhc98
malcolm**20040209150420]
[Simplifications + small steps towards a stand-alone hsc2hs
panne**20040207163707
* Replaced Config module by a simple CPP macro
* Don't #include configuration header
* Bumped version number
* Warning police
]
[outCLine: Use "#line n <filename>", not "# n <filename>"
sof**20031001164510
The latter isn't ISO (and causes breakage when compiling output with MSVC.)
]
[add -? and -V options
panne**20030827141117
* Added short option -? for --help and -V for --version.
* Small cleanup
]
[add arguments to main()
stolz**20030520110754
Generate
int main (int argc, char *argv [])
instead of
int main (void)
Suggested by: Nicolas Oury
]
[Make -t option to the script override the template file
ross**20030501104619
(just as -c overrides the compiler) as the documentation implies.
(Formerly -t added an extra template file, which is not so useful.)
]
[Use old-style foreign import for bkwd compatibility
simonpj**20030221133518]
[Tighten up prev commit
sof**20030211043206
- win32: only add default --template=... option if the template file
exists.
- if user has supplied --cc=.., use it as a default for 'ld'.
]
[help the program find things at runtime
sof**20030207215536
- default linker is now 'ghc' (i.e., consistent with the default compiler.)
- new option, -v/--verbose, which makes the tool less inscrutable about what
external commands it actually ends up exec'ing.
- under Win32, try locating the default 'ghc' to run by looking in the dir
where 'hsc2hs' resides (which they do in a binary install.)
- make the default --template arg story actually work (win32 only.)
]
[Make imports work for pre-504
simonpj**20021029105054]
[Use getExecDir, just like in ghc-pkg and SysTools
simonpj**20021028101117]
[Remove Win32 library dependency
mthomas**20021027103833]
[Build without hslibs on GHC >= 5.04
simonmar**20020909113943]
[add `size` macro
krasimir**20020728135532]
[Add #offset for just grabbing the byte offset of a struct field
simonmar**20020724094437]
[Use HOSTPLATFORM / *_HOST_OS to examine properties of the environment/compiler we're using
sof**20020529223250]
[Check the exit status of the generated C program when we run it
simonmar**20020418121556
and exit if it failed (partly from Axel Simon).
]
[dosifyPath before opening files
simonpj**20020213103936
If you call
hsc2hs foo/baz
you get the amazing response:
'foo' is not recognized as an internal or external command,
operable program or batch file.
On the other hand
hsc2hs foo\baz
works fine. Solution: call dosifyPath before opening or writing the file.
Somehow we should make it less easy to trip up when doing file I/O on
Windows. And provide a library of path-manipulation primitives.
]
[outHFile not outHName
simonmar**20020212151736]
[remove KludgedSystem
sof**20020117083800
- removed KludgedSystem; no longer needed.
- be path separator savvy.
]
[Make -c actually working (as --cc)
qrczak**20010914165413]
[Do the ifdefery properly so it works on Unix
rrt**20010912115258]
[Make hsc2hs find template-hsc.h on Windows
rrt**20010912111605
This involves putting Main.hs through cpp; to avoid the string gap
problem preprocessing __GLASGOW_HASKELL__ into its value inside strings,
make judicious use of ++ (hope that's OK, Marcin; there seemed very
little point in putting it all in KludgedSystem this time).
]
[Fixed punctuation typo
ken**20010724054932]
[usage message, #def fix
ken**20010723230804
Rearranged the usage help message to move --no-compile to the bottom.
More importantly-- Fixed: hsc2hs was translating
#def inline ... function(...) { ... }
into (assuming defined(__GNUC__))
[in the _hsc.h file:] extern inline ... function(...)
[in the _hsc.c file:] inline ... function(...)
while it should really be translated into
[in the _hsc.h file:] extern inline ... function(...)
[in the _hsc.c file:] ... function(...)
(without the "inline" in the _hsc.c file). Quoting the gcc documentation
for "inline":
> If you specify both `inline' and `extern' in the function
> definition, then the definition is used only for inlining. In no case
> is the function compiled on its own, not even if you refer to its
> address explicitly. Such an address becomes an external reference, as
> if you had only declared the function, and had not defined it.
>
> This combination of `inline' and `extern' has almost the effect of a
> macro. The way to use it is to put a function definition in a header
> file with these keywords, and put another copy of the definition
> (lacking `inline' and `extern') in a library file. The definition in
> the header file will cause most calls to the function to be inlined.
> If any uses of the function remain, they will refer to the single copy
> in the library.
]
[Fix paths in installed hsc2hs driver
qrczak**20010716063322]
[Un-break on Unix
sewardj**20010704091838]
[Plumb top-level --with-gcc=... value around the place
sewardj**20010703165703]
[Add .exe to progName on Windows
rrt**20010402161005]
[Generated C files are named *_hsc.h and *_hsc.c (again)
qrczak**20010329175618]
[add -D -o -s options
qrczak**20010329080321
Allow specifying output filenames explicitly.
Add -D --define option.
]
[Transform *.hsc into *.hs and optionally Hs*.h and Hs*.c
qrczak**20010329000118
(used to be *.hs and optionally *.hs.h and *.hs.c).
Old names interacted badly with Makefile rules of the form
'%: %.o' and looked ugly.
]
[Make it work on Windows with recent GCCs
rrt**20010327163317]
[Remove INLINE pragmas
qrczak**20010316090741
They actually degrade performance by 2%.
]
[Add Config.hs generation to Makefile to make TMPDIR work in KludgedSystem
rrt**20010314121302]
[Use TMPDIR, not /tmp
rrt**20010313174656]
[Use custom parser monad instead of Parsec
qrczak**20010305000723
It remembers the text which has been parsed, so it needs not to be
reconstructed after parsing.
Operators containing '--' are now handled correctly. '#' triggers
special processing only if it's not a part of an operator, i.e. if
a varsym token is exactly a single '#'.
Backslash-newline pairs in C lexical world are now handled correctly
(removed at an early stage).
Option --keep replaced with --no-compile (stop after writing *.hs_make.c).
]
[Fix #{stuff} parsing when stuff contains end of line
qrczak**20010304111803]
[add self-delimited #{stuff}
qrczak**20010301203251
#{stuff} is equivalent to #stuff except that it's self-delimited and
thus needs not to be placed at the end of line or in some brackets.
]
[add some options
qrczak**20010222223956
Add --keep option to not delete *.hs_make.c.
Add -c -l -C -L -i as synonyms for --cc --ld --cflag --lflag --include.
]
[No, please don't pass hsc2hs/Main.hs through cpp :-)
qrczak**20010213174037
It corrupts __GLASGOW_HASKELL__ in strings (because of string gaps).
I moved the system-dependent thing to KludgedSystem (it should be
named better as it no longer contains only the system function)
so it does not require cpp.
(I keep it in sync with QForeign, which is easier if the same source
can work in both places.)
]
[Make work again on Windows
rrt**20010213161127
Main.hs has to be passed through CPP now.
]
[move #ifdefed defaultCompiler
qrczak**20010213155310
Main.hs is not passed through cpp, so I moved #ifdefed defaultCompiler
to module KludgedSystem which is passed through cpp.
]
[Make it work on Cygwin
rrt**20010213150902
Story of my life.
]
[Move kludgedSystem (renamed to system) to a separate module
qrczak**20010210104325
This avoids ugly interactions with the C preprocessor (string gaps,
__GLASGOW_HASKELL__ in strings).
]
[Works under Linux again - Posix was not needed
qrczak**20010205220218]
[Make it work on Windows
rrt**20010205180139]
[Add #warning support
qrczak**20010124223715]
[Remove semicolon which was causing a syntax error on sparc-solaris /bin/sh
sewardj**20010117101117]
[Implemented #enum construct
qrczak**20010115073302]
[Remove extra '(' from case statement
simonmar**20010114153431
Patterns in the case statement didn't work on my FreeBSD box due to a
bogus-looking extra '(', so I removed it. Hope I haven't broken anything.
]
[Don't output so many unnecessary C line markers
qrczak**20010113231045]
[Use a replacement for LINE pragmas under nhc
qrczak**20010113203425]
[Generate correct LINE pragmas
qrczak**20010113194649]
[Remove #options construct
qrczak**20010113121100
all released ghc versions understand multiple {-# OPTIONS #-} pragmas.
]
[Expand #-constructs only outside Haskell comments and string literals
qrczak**20010112225423]
[Remove backslash-newline pairs in #-constructs
qrczak**20010111195019]
[Added --version parameter
qrczak**20010104194307
(QForeign must known whether to replace ghc's hsc2hs with its own.)
]
[exit(1) in the case of a parse error
simonmar**20010104131814]
[Add -I and --include options
qrczak**20001230200600
Small corrections and clarifications in the documentation.
]
[Implemented #undef, #error, and #let
qrczak**20001228103456
(macros to be applied to the Haskell source, although using somewhat
ugly stringified syntax).
s/hs2c/hsc2hs/
Fixed some bugs (user-supplied --cc option, macros with parameters).
]
[add hsc2hs, missed in the merge
simonmar**20001107152836]
Patch bundle hash:
75314aea9bf911993e3dac47eae2c8e8c8620b2c
More information about the Cvs-ghc
mailing list