red5_2@hotmail.com [Sun, 18 Mar 2007 03:31:32 +0000 (03:31 +0000)]
mangler and runtime updates for gcc 4 on ia64
Gcc 4 is doing more clever optimizations than earlier gccs.
These changes let ghc compile and run on ia64 with gcc 4.0.3.
Register stack frames are enlarged so that all functions use the
same size stack frame.
The code to mangle tail calls has been cleaned up and made more
general.
Additional floating-point and special-purpose registers used by
GCC are saved upon entering the STG runtime.
More general handling of NOP instructions.
Handling of functions with multiple epilogues or no epilogue.
red5_2@hotmail.com [Sat, 17 Mar 2007 02:55:29 +0000 (02:55 +0000)]
ia64 tailcall fix
Tail-calls now branch to the end of the function after the call. This
stops gcc from trying to move instructions into the space immediately
after the call, which confuses the mangler.
simonpj@microsoft.com [Wed, 21 Mar 2007 11:20:57 +0000 (11:20 +0000)]
Remove bogus export from TcSplice.lhs-boot
simonpj@microsoft.com [Wed, 21 Mar 2007 11:16:39 +0000 (11:16 +0000)]
Wibble to GHCi part of TcRnDriver
simonpj@microsoft.com [Wed, 21 Mar 2007 09:37:33 +0000 (09:37 +0000)]
Yet another wibble to checkHiBootIface; it's trickier than it looks!
simonpj@microsoft.com [Wed, 21 Mar 2007 09:36:11 +0000 (09:36 +0000)]
Improve pretty-printing for IfaceConDecl
simonpj@microsoft.com [Wed, 21 Mar 2007 09:35:25 +0000 (09:35 +0000)]
Remove redundant exports from a hs-boot file
simonpj@microsoft.com [Tue, 20 Mar 2007 15:41:26 +0000 (15:41 +0000)]
Further wibbles to checkBootIface (fixed HEAD build)
simonpj@microsoft.com [Mon, 19 Mar 2007 15:19:26 +0000 (15:19 +0000)]
Use explict layout (fixes breakage when compiling TcSimplify)
Ian Lynagh [Sat, 17 Mar 2007 00:40:03 +0000 (00:40 +0000)]
Fix typo "lazy y x" -> "lazy y"
simonpj@microsoft.com [Fri, 16 Mar 2007 15:17:12 +0000 (15:17 +0000)]
Desugar applications of 'seq' specially; fix Trac #1031
Merge to 6.6 branch. Test case is dsrun014.
Note [Desugaring seq] cf Trac #1031
~~~~~~~~~~~~~~~~~~~~~
f x y = x `seq` (y `seq` (# x,y #))
The [CoreSyn let/app invariant] means that, other things being equal, because
the argument to the outer 'seq' has an unlifted type, we'll use call-by-value thus:
f x y = case (y `seq` (# x,y #)) of v -> x `seq` v
But that is bad for two reasons:
(a) we now evaluate y before x, and
(b) we can't bind v to an unboxed pair
Seq is very, very special! So we recognise it right here, and desugar to
case x of _ -> case y of _ -> (# x,y #)
The special case would be valid for all calls to 'seq', but it's only *necessary*
for ones whose second argument has an unlifted type. So we only catch the latter
case here, to avoid unnecessary tests.
simonpj@microsoft.com [Fri, 16 Mar 2007 14:28:24 +0000 (14:28 +0000)]
Improve error messages for 'deriving' clauses
This patch improves the misleading error message reported in Trac #1133.
Please merge the patch to the 6.6.1 branch.
simonpj@microsoft.com [Fri, 16 Mar 2007 13:38:50 +0000 (13:38 +0000)]
Refactor TcRnDriver, and check exports on hi-boot files
This patch refactors TcRnDriver to make the top-level structure
easier to understand.
The change was driven by Trac #924, and this patch fixes that bug.
When comparing a module against its hs-boot file, we must ensure that
the module exports everything that the hs-boot file exports.
simonpj@microsoft.com [Fri, 16 Mar 2007 13:38:22 +0000 (13:38 +0000)]
Comment out debug traces
sven.panne@aedion.de [Thu, 15 Mar 2007 15:28:23 +0000 (15:28 +0000)]
Use update-alternatives for handling generic tool names
ATTENTION: Packagers should read the following stuff carefully!
GHC, Hugs and nhc come with various tools like runhaskell or hsc2hs. On the
one hand this is quite handy, avoiding lots of tiny native packages, but OTOH
this leads to a few problems:
* The tools are not always identical in functionality.
* The tools fight for a global generic name like "/usr/bin/runhaskell".
These problems are not new and not unique to Haskell implementations, so for
*nix-based system there is a tool called update-alternatives which handles
those cases. The idea is as follows:
* Each program/man page/etc. installs itself with a very specific name
like /usr/bin/hsc2hs-ghc or /usr/share/man/man1/lua5.1.1.gz, so nothing
clashes.
* The (un-)installation scripts call update-alternatives to notify the
system about new alternatives for a generic tool/manpage/etc.
* Alternatives can be grouped together ("link groups"), so e.g. switching
from Sun's Java to Kaffe switches compiler, JRE, manpages etc. together.
Alas, this doesn't work well with the Haskell implementations yet,
because they come with different sets of tools (in addition to runFOO):
GHC: hsc2hs
Hugs: hsc2hs, cpphs
nhc: cpphs
Either these tools should be disentangled fromt the Haskell
implementations or all implementations should offer the same set.
Opinions and recommendations on this topic are highly welcome.
* This mechanism can be used to easily switch between several versions of
the same implementation, too, but we are not yet fully prepared for that.
As a first step, GHC now installs hsc2hs as 'hsc2hs-ghc' and does *not*
install runhaskell directly anymore, only runghc. hsc2hs and runhaskell are
created via update-alternatives now. What is currently missing is a mechanism
for platforms like Windows and probably Mac OS X.
simonpj@microsoft.com [Thu, 15 Mar 2007 14:28:12 +0000 (14:28 +0000)]
Make the type-defaulting in GHCi use () as the first default type
See Trac #1200
This is a somewhat experimental fix. I'm not sure we want it in 6.6.1
The idea is explained in Note [Default unitTy] in TcSimplify. In
interative mode (or with -fextended-default-rules) we add () as the
first type we try when defaulting. This has very little real impact,
except in the following case. Consider:
Text.Printf.printf "hello"
This has type (forall a. IO a); it prints "hello", and returns
'undefined'. We don't want the GHCi repl loop to try to print that
'undefined'. The neatest thing is to default the 'a' to (), rather
than to Integer (which is what would otherwise happen; and then GHCi
doesn't attempt to print the (). So in interactive mode, we add () to
the list of defaulting types.
sven.panne@aedion.de [Thu, 15 Mar 2007 12:24:57 +0000 (12:24 +0000)]
Added support for parallel builds
With this patch, one can define the degree of build parallelism via a 'jobs'
rpm variable. A comfortable way to use this is having a ~/.rpmmacros file with
a line like:
%jobs 2
Alternatively, one could use a '--define "jobs 2"' command line flag for
rpmbuild. On a Core 2 Duo using 2 jobs brings down the time for a full build
including extralibs from 36m to 27m. If 'jobs' is not defined, a normal
sequential build is done, following the usual conventions on e.g. openSUSE.
simonpj@microsoft.com [Wed, 14 Mar 2007 16:48:50 +0000 (16:48 +0000)]
Wibble to type-error-message improvement
simonpj@microsoft.com [Wed, 14 Mar 2007 16:29:06 +0000 (16:29 +0000)]
Improve error messages slightly, saying "a1...an" instead of "a b c"
Ian Lynagh [Wed, 14 Mar 2007 16:01:02 +0000 (16:01 +0000)]
Tweak hasktags to cope with abc::def correctly
Patch from Marc Weber in
http://www.haskell.org/pipermail/glasgow-haskell-users/2007-February/011998.html
sven.panne@aedion.de [Wed, 14 Mar 2007 15:15:17 +0000 (15:15 +0000)]
Unbreak Haddock markup
sven.panne@aedion.de [Wed, 14 Mar 2007 14:04:34 +0000 (14:04 +0000)]
Warning police: Avoid name shadowing
sven.panne@aedion.de [Wed, 14 Mar 2007 13:43:28 +0000 (13:43 +0000)]
Handle primitive types and pseudo ops when generating LaTeX
sven.panne@aedion.de [Wed, 14 Mar 2007 13:40:44 +0000 (13:40 +0000)]
Warning police: Replace patter matching failures by something more informative
sven.panne@aedion.de [Wed, 14 Mar 2007 13:27:03 +0000 (13:27 +0000)]
Added LaTeX commands for primitive types and pseudo ops
sven.panne@aedion.de [Wed, 14 Mar 2007 13:25:21 +0000 (13:25 +0000)]
Fixed LaTeX markup
sven.panne@aedion.de [Wed, 14 Mar 2007 12:36:08 +0000 (12:36 +0000)]
Warning police: Don't rely on defaulting
sven.panne@aedion.de [Wed, 14 Mar 2007 12:30:21 +0000 (12:30 +0000)]
Warning police: Removed "Defined but not used" warnings
sven.panne@aedion.de [Wed, 14 Mar 2007 12:23:16 +0000 (12:23 +0000)]
Warning police: Added type signatures
sven.panne@aedion.de [Wed, 14 Mar 2007 12:22:33 +0000 (12:22 +0000)]
Use -Wall for compilation of genprimopcode
simonpj@microsoft.com [Wed, 14 Mar 2007 12:14:10 +0000 (12:14 +0000)]
Improve typechecker error messages; see Trac #1221
Ian Lynagh [Tue, 13 Mar 2007 22:05:45 +0000 (22:05 +0000)]
Fix the way configure sets the ghc_ge_* variables
Simon Marlow [Tue, 13 Mar 2007 16:00:08 +0000 (16:00 +0000)]
cache the values of ghc_ge_XXX at configure-time
This avoids recomputing them via $(shell) each time make expands one
of these variables, which is very expensive (0.3s or so) on Windows.
Brian Alliet [Wed, 14 Mar 2007 05:28:07 +0000 (05:28 +0000)]
Update the wired-in name for Data.String.IsString
simonpj@microsoft.com [Tue, 13 Mar 2007 16:22:54 +0000 (16:22 +0000)]
Add helpful cross-references
Simon Marlow [Tue, 13 Mar 2007 14:46:14 +0000 (14:46 +0000)]
fix #1200: don't evaluate the result of main
Simon Marlow [Tue, 23 Jan 2007 10:40:25 +0000 (10:40 +0000)]
Fix a bug in the liveness analysis
We were being overly conservative, registers that were live only at a
branch target were not recorded as being dead in the branch-not-taken
code.
Ian Lynagh [Mon, 12 Mar 2007 10:50:53 +0000 (10:50 +0000)]
Be a bit more verbose about what's happening when recursively making in subdirs
Ian Lynagh [Sun, 11 Mar 2007 17:50:25 +0000 (17:50 +0000)]
Have configure take arguments telling it where gmp is; fixes trac #957
Ian Lynagh [Fri, 9 Mar 2007 17:48:25 +0000 (17:48 +0000)]
Avoid duplication in the binary-dist rules for docs
Rather than building complex sh stuff and echoing what we're doing
ourselves, use make rules to do the looping and let make print things
out.
Ian Lynagh [Fri, 9 Mar 2007 17:43:07 +0000 (17:43 +0000)]
Remove duplication in binary dist rules
Rather than building complex sh stuff and echoing what we're doing
ourselves, use make rules to do the looping and let make print things
out.
wolfgang.thaller@gmx.net [Thu, 8 Mar 2007 02:05:03 +0000 (02:05 +0000)]
Make constructor names in info tables position independent
Info tables, like everything else in the text section, MUST NOT contain
pointers. A pointer is, by definition, position dependent and is therefore
fundamentally incompatible with generating position independent code.
Therefore, we have to store an offset from the info label to the string
instead of the pointer, just as we already did for other things referred
to by the info table (SRTs, large bitmaps, etc.)
Simon Marlow [Thu, 8 Mar 2007 15:46:53 +0000 (15:46 +0000)]
when invoking gcc, instead of the -B<dir> flag, use GCC_EXEC_PREFIX
should hopefully fix/workaround #1110, but I haven't had a chance to
test it yet.
Simon Marlow [Thu, 8 Mar 2007 13:45:43 +0000 (13:45 +0000)]
small cleanups
Simon Marlow [Thu, 8 Mar 2007 11:06:19 +0000 (11:06 +0000)]
refactor: use do-notation rather than `thenBc`-style
Simon Marlow [Thu, 8 Mar 2007 10:19:21 +0000 (10:19 +0000)]
add missing %ENTRY_CODE()
fixes unreg way in HEAD
Simon Marlow [Thu, 8 Mar 2007 09:57:17 +0000 (09:57 +0000)]
add noDuplicatezh_fast to symbol table
Simon Marlow [Wed, 7 Mar 2007 08:56:48 +0000 (08:56 +0000)]
add declaration for noDuplicatezh_fast
Ian Lynagh [Tue, 6 Mar 2007 15:26:54 +0000 (15:26 +0000)]
Remove outdated libraries/doc/libraries.xml and libraries/doc/libtable.xml
Simon Marlow [Tue, 6 Mar 2007 14:31:12 +0000 (14:31 +0000)]
add noDuplicate#
This primop ensures that the current computation is not being
duplicated, by calling threadPaused(). The idea is to use it inside
unsafePerformIO/unsafeInterleaveIO (see #986).
Simon Marlow [Tue, 6 Mar 2007 14:27:32 +0000 (14:27 +0000)]
THREADED_RTS: use cas() when claiming thunks
I guess I forgot to do this the first time around; the upshot is that
there could be some uncaught duplication of work on a multiprocessor
(but unlikely).
Simon Marlow [Tue, 6 Mar 2007 14:04:53 +0000 (14:04 +0000)]
workerTaskStop(): set task->cap = NULL
avoids an assertion failure in newBoundTask()
Simon Marlow [Tue, 6 Mar 2007 13:55:43 +0000 (13:55 +0000)]
disable -Wbad-function-cast; it's hard/impossible to work around
Simon Marlow [Tue, 6 Mar 2007 12:35:33 +0000 (12:35 +0000)]
remove vestiges of CCallable/CReturnable
Ian Lynagh [Tue, 6 Mar 2007 14:47:24 +0000 (14:47 +0000)]
Remove references to the in-tree building guide from teh old commentary
Ian Lynagh [Tue, 6 Mar 2007 14:43:41 +0000 (14:43 +0000)]
Remove old references to the in-tree building guide
Simon Marlow [Tue, 6 Mar 2007 09:35:25 +0000 (09:35 +0000)]
fix the timer_create() test
simonpj@microsoft.com [Tue, 6 Mar 2007 06:56:41 +0000 (06:56 +0000)]
Simple fix for Trac #1199 (pls merge to branch)
Simon Marlow [Mon, 5 Mar 2007 14:45:50 +0000 (14:45 +0000)]
forkProcess: startTimer() in the child, because the timer will be reset
Simon Marlow [Mon, 5 Mar 2007 14:36:43 +0000 (14:36 +0000)]
better autoconfery for timer_create()
Ian Lynagh [Sat, 3 Mar 2007 14:53:15 +0000 (14:53 +0000)]
Use Data.String rather than GHC.Base for IsString/fromString
Simon Marlow [Fri, 2 Mar 2007 11:31:04 +0000 (11:31 +0000)]
Use timer_create() for the interval timer, if available
This lets the threaded RTS use SIGVTALRM rather than SIGALRM for its
interval timer signal, so the threaded and non-threaded RTS are
compatible. It unfortunately doesn't completely fix #850/#1156, for
that we really have to use a restartable sleep instead of usleep().
Also I cleaned up the timer API a little: instead of returning an
error value that ultimately gets ignored, we now report errors from
system calls and exit.
Simon Marlow [Thu, 1 Mar 2007 13:06:28 +0000 (13:06 +0000)]
further improvements to the x86/x86_64 NCG
Ian Lynagh [Thu, 1 Mar 2007 13:03:39 +0000 (13:03 +0000)]
Fix typo in primops docs
simonpj@microsoft.com [Thu, 1 Mar 2007 11:45:13 +0000 (11:45 +0000)]
Do not go into an infinite loop when pretty-printer finds a negative indent (Trac #1176)
Simon Marlow [Thu, 1 Mar 2007 11:26:25 +0000 (11:26 +0000)]
Use the most complex form of addressing modes on x86
We had a pattern that matched (base+(index<<N)), but not
(base+(index<<N)+M).
Simon Marlow [Thu, 1 Mar 2007 11:25:13 +0000 (11:25 +0000)]
is64BitInteger: truncate to 64 bits before testing
We weren't catching some literals that actually fit in 32 bits before,
because e.g. -1 was sometimes represented as 0xffffffffffffffff in CmmInt.
Simon Marlow [Thu, 1 Mar 2007 09:57:49 +0000 (09:57 +0000)]
Fix -keep-s-file with --make
Simon Marlow [Thu, 1 Mar 2007 09:22:50 +0000 (09:22 +0000)]
some more vectored return stuff to be removed
Simon Marlow [Wed, 28 Feb 2007 16:34:42 +0000 (16:34 +0000)]
Fix #839 (Generate documentation for built-in types and primitve operations)
This patch was originally by dinko.tenev@gmail.com, but I re-recorded
it in order to add a better log message.
The effect of this patch is to add entries for primitive types in the
documentation: Int#, Char#, etc. and to document the built-in
identifiers (seq, lazy, inline, unsafeCoerce#).
Simon Marlow [Wed, 28 Feb 2007 15:50:09 +0000 (15:50 +0000)]
Fix #249 (-caf-all bugs)
There were two bugs:
* we were generating the symbol name for the CAF
cost centre from the OccName, which isn't unique enough
in the case of system-generated non-external names
* :Main.main caused problems, because we were assuming that
every top-level CAF was from the current module.
Simon Marlow [Wed, 28 Feb 2007 15:33:04 +0000 (15:33 +0000)]
use -fforce-recomp when compiling Main.hs against the ghc package.
This is necessary because GHC's recompilation checker doesn't check
across package boundaries.
Simon Marlow [Wed, 28 Feb 2007 13:07:14 +0000 (13:07 +0000)]
Remove vectored returns.
We recently discovered that they aren't a win any more, and just cost
code size.
Simon Marlow [Wed, 28 Feb 2007 12:03:19 +0000 (12:03 +0000)]
Windows: the .hp file is <prog>.exe.hp
simonpj@microsoft.com [Tue, 27 Feb 2007 23:13:13 +0000 (23:13 +0000)]
Make let-matching work in Rules again
A RULE is supposed to match even if there is an intervening let:
RULE f (x:xs) = ....
target f (let x = thing in x:xs)
It's surprisingly tricky to get this right; in effect we are doing
let-floating on the fly. I managed to get it wrong before, or at least
be over-conservative. And in "fixing" that I got it wrong again in a
different way, which made it far too conservative. In particular, it
failed to match f (let x = y+y in let z=x+y in z:xs)
because the binder x was cloned and looked "locally-bound". See the
ever growing comments with the Let rule for details.
That patch reverts to the previous story, which is still a bit too
conservative, but not so egregiously so. Fixes Romans's problem.
Ian Lynagh [Tue, 27 Feb 2007 17:45:42 +0000 (17:45 +0000)]
Fixes for the mangler on IA64
From heatsink, in trac #1150.
Simon Marlow [Tue, 27 Feb 2007 13:46:09 +0000 (13:46 +0000)]
Remove the itbls field of BCO, put itbls in with the literals
This is a simplification & minor optimisation for GHCi
Simon Marlow [Tue, 27 Feb 2007 13:43:58 +0000 (13:43 +0000)]
fix data con patch for 64-bit architectures
bjpop@csse.unimelb.edu.au [Tue, 20 Feb 2007 19:07:31 +0000 (19:07 +0000)]
Constructor names in info tables
This patch adds data constructor names into their info tables.
This is useful in the ghci debugger. It replaces the old scheme which
was based on tracking data con names in the linker.
Ian Lynagh [Tue, 27 Feb 2007 12:57:31 +0000 (12:57 +0000)]
Doc typo
sven.panne@aedion.de [Sat, 24 Feb 2007 18:01:23 +0000 (18:01 +0000)]
Don't hardwire RELEASE into configure.ac
Previously one had to edit configure.ac to build a release version. This is
evil, so one can now specify this on the configure invocation line like:
RELEASE=YES ./configure
Note that non-released versions are still the default.
Manuel M T Chakravarty [Sat, 24 Feb 2007 06:11:50 +0000 (06:11 +0000)]
Fix parsing of parallel array literals
simonpj@microsoft.com [Fri, 23 Feb 2007 14:10:32 +0000 (14:10 +0000)]
Tidy up typechecking for newtypes
Ian Lynagh [Fri, 23 Feb 2007 12:23:12 +0000 (12:23 +0000)]
pthread_key_delete wants the key itself, not a pointer to it
Pepe Iborra [Fri, 23 Feb 2007 10:29:57 +0000 (10:29 +0000)]
Wibble
Manuel M T Chakravarty [Fri, 23 Feb 2007 03:38:48 +0000 (03:38 +0000)]
Moved argument position info of ATs into tycon rhs info
Pepe Iborra [Thu, 22 Feb 2007 18:12:01 +0000 (18:12 +0000)]
Unbreak HEAD
My previous patch was creating problems with hs-boot files.
Ian Lynagh [Thu, 22 Feb 2007 14:43:06 +0000 (14:43 +0000)]
Free thread local storage on shutdown
Simon Marlow [Thu, 22 Feb 2007 10:28:23 +0000 (10:28 +0000)]
upload documentation too
Simon Marlow [Thu, 22 Feb 2007 10:03:49 +0000 (10:03 +0000)]
refactoring
Simon Marlow [Thu, 11 Jan 2007 09:19:44 +0000 (09:19 +0000)]
refactoring only: remove unused code/imports
Pepe Iborra [Wed, 21 Feb 2007 18:56:49 +0000 (18:56 +0000)]
Improving the performance of breakpoints up to 50% (by playing with laziness)
This patch performs several optimizations with the goal of minimizing the cost of building the arguments to breakpointJump:
- Group them all in a single tuple, to minimize closure creation in heap
- Wrap this with the GHC.Base.lazy combinator, to induce max laziness
- Remove as many literal strings as possible
* injecting a module-local CAF to store the module name and use that
* eliminating the package string (not needed).
Pepe Iborra [Wed, 21 Feb 2007 15:11:17 +0000 (15:11 +0000)]
Fix the behaviour of :print with functions
It now outputs "<function>" instead of showing them as thunks
Pepe Iborra [Wed, 21 Feb 2007 15:09:42 +0000 (15:09 +0000)]
Fix an incomplete pattern in the code for :print
Pepe Iborra [Mon, 19 Feb 2007 12:21:34 +0000 (12:21 +0000)]
Removed unnecessary code
The breakpointJump functions never show up in the code that the typechecker sees, as they are inserted by the desugarer later.
simonpj@microsoft.com [Wed, 21 Feb 2007 17:04:01 +0000 (17:04 +0000)]
Allow GADT syntax for newtypes
Fixes Trac #1154. Please merge.
Tests are tc225, and tcfail176.
simonpj@microsoft.com [Wed, 21 Feb 2007 16:53:12 +0000 (16:53 +0000)]
Import trimming
simonpj@microsoft.com [Wed, 21 Feb 2007 16:30:47 +0000 (16:30 +0000)]
Deal more correctly with orphan instances
Conal Eliott (Trac #1145) exposed a nasty flaw in the way in which
orphan instances are computed, when there are functional dependencies
in the class. It took me some time to figure out what was going on,
and led to more refactoring.
Briefly:
* Elaborate comments about orphan-hood and versioning added to IfaceSyn
* The is_orph field vanishes from InstEnv.Instance
* Similarly ru_orph vanishes from CoreSyn.CoreRule
* Orphan-hood is computed in MkIface.instanceToIfaceInst, and
MkIface.coreRuleToIfaceRule
Elsewhere just tidying up.
simonpj@microsoft.com [Wed, 21 Feb 2007 13:13:40 +0000 (13:13 +0000)]
Remove dead code from FunDeps
I forgot to to this when refactoring some months ago!
simonpj@microsoft.com [Wed, 21 Feb 2007 12:47:39 +0000 (12:47 +0000)]
Fix a deriving bug, arising from recent refactoring
This one is a hangover from something I did a month or two ago, but
didn't get quite right. tcSimplifyDefault should not check for no-instances;
instead the checkValidInstance in TcDeriv does so.
Conal's DeepArrow needs this fix. Test is drv015.