Ben.Lippmeier@anu.edu.au [Thu, 13 Sep 2007 15:54:07 +0000 (15:54 +0000)]
Better calculation of spill costs / selection of spill candidates.
Use Chaitin's formula for calculation of spill costs.
Cost to spill some vreg = (num writes + num reads) / degree of node
With 2 extra provisos:
1) Don't spill vregs that live for only 1 instruction.
2) Always prefer to spill vregs that live for a number of instructions
more than 10 times the number of vregs in that class.
Proviso 2 is there to help deal with basic blocks containing very long
live ranges - SHA1 has live ranges > 1700 instructions. We don't ever
try to keep these long lived ranges in regs at the expense of others.
Because stack slots are allocated from a global pool, and there is no
slot coalescing yet, without this condition the allocation of SHA1 dosn't
converge fast enough and eventually runs out of stack slots.
Prior to this patch we were just choosing to spill the range with the
longest lifetime, so we didn't bump into this particular problem.
Ben.Lippmeier@anu.edu.au [Wed, 12 Sep 2007 16:07:59 +0000 (16:07 +0000)]
comment wibbles
Ian Lynagh [Thu, 13 Sep 2007 18:17:33 +0000 (18:17 +0000)]
Bump version number 6.7 -> 6.9
Ian Lynagh [Thu, 13 Sep 2007 17:42:42 +0000 (17:42 +0000)]
More library installation path fiddling
Ian Lynagh [Thu, 13 Sep 2007 17:39:26 +0000 (17:39 +0000)]
libsubdir for libraries is now always $$pkgid
Ian Lynagh [Thu, 13 Sep 2007 15:53:31 +0000 (15:53 +0000)]
Define RelocatableBuild variable
default YES on Windows, NO otherwise.
Ian Lynagh [Thu, 13 Sep 2007 15:48:30 +0000 (15:48 +0000)]
We need to thread lots more paths through installPackage to make bindists work
simonpj@microsoft.com [Thu, 13 Sep 2007 15:24:40 +0000 (15:24 +0000)]
Comments only
simonpj@microsoft.com [Tue, 11 Sep 2007 08:57:34 +0000 (08:57 +0000)]
Comments, and remove export of checkAmbiguity
simonpj@microsoft.com [Tue, 11 Sep 2007 08:51:23 +0000 (08:51 +0000)]
Define and use PprTyThing.pprTypeForUser
When printing types for the user, the interactive UI often wants to
leave foralls implicit. But then (as Claus points out) we need to be
careful about name capture. For example with this source program
class C a b where
op :: forall a. a -> b
we were erroneously displaying the class in GHCi (with suppressed
foralls) thus:
class C a b where
op :: a -> b
which is utterly wrong.
This patch fixes the problem, removes GHC.dropForAlls (which is dangerous),
and instead supplies PprTyThing.pprTypeForUser, which does the right thing.
simonpj@microsoft.com [Tue, 11 Sep 2007 08:50:05 +0000 (08:50 +0000)]
Minor refactoring: give an explicit name to the pretty-printing function for TyThing, and use it
simonpj@microsoft.com [Tue, 11 Sep 2007 08:22:12 +0000 (08:22 +0000)]
Improve documentation for Template Haskell
Pepe Iborra [Wed, 12 Sep 2007 16:58:55 +0000 (16:58 +0000)]
Better modelling of newtypes in the Term datatype
This helps to get pretty printing right,
nested newtypes were not being shown correctly by :print
Pepe Iborra [Wed, 12 Sep 2007 15:35:05 +0000 (15:35 +0000)]
GHCi debugger: Added a -fprint-evld-with-show flag
The flag enables the use of Show instances in :print.
By default they are not used anymore
Ian Lynagh [Thu, 13 Sep 2007 01:57:04 +0000 (01:57 +0000)]
Update .darcs-boring
Simon Marlow [Wed, 12 Sep 2007 20:00:57 +0000 (20:00 +0000)]
export stopTimer(), we need this in the unix package
Simon Marlow [Wed, 12 Sep 2007 11:41:10 +0000 (11:41 +0000)]
move generic graph-colouring code into util
It is needed by cmm/StackColor, and hence is needed even when there is no
native code generator.
Norman Ramsey [Wed, 12 Sep 2007 16:58:51 +0000 (16:58 +0000)]
remove remaining redundancies from ZipCfgCmmRep
-- LastBranch no longer takes parameters
-- LastJump and LastReturn no longer carry CmmActuals;
instead, those are carried by a CopyOut in the same basic block
v.dijk.bas@gmail.com [Wed, 12 Sep 2007 14:33:46 +0000 (14:33 +0000)]
Forgot to import Data.List.find
Ian Lynagh [Wed, 12 Sep 2007 16:22:00 +0000 (16:22 +0000)]
Remove warning flags from individual compiler modules
We now set the flags once and for all in compiler/Makefile.
Ian Lynagh [Wed, 12 Sep 2007 14:07:43 +0000 (14:07 +0000)]
Give push-all the ability to pull with a --pull flag
OK, so the name is a bit wrong now...
Ian Lynagh [Wed, 12 Sep 2007 13:54:07 +0000 (13:54 +0000)]
Handle doc-index*.html, not just doc-index.html
haddock sometimes makes doc-index-A.html etc files. Not sure why it
doesn't for me.
Patch from Judah Jacobson.
Ian Lynagh [Wed, 12 Sep 2007 11:39:54 +0000 (11:39 +0000)]
Fix installation code
Ian Lynagh [Tue, 11 Sep 2007 22:47:34 +0000 (22:47 +0000)]
Further tweaking of haddock doc installation
On Windows we now always use a path beginning $topdir/ so bindists are
relocatable.
We also now tell "Setup configure" where we are putting the
documentation, and tell installPackage to override as little as
possible.
Ian Lynagh [Tue, 11 Sep 2007 20:22:02 +0000 (20:22 +0000)]
make in-place has bitrotted, so don't advertise or support it
Ian Lynagh [Mon, 3 Sep 2007 15:54:16 +0000 (15:54 +0000)]
TAG ghc-6.8 branched 2007-09-03
judah.jacobson@gmail.com [Fri, 7 Sep 2007 21:16:16 +0000 (21:16 +0000)]
Fix repeated section name in documentation.
Clemens Fruhwirth [Wed, 12 Sep 2007 17:11:26 +0000 (17:11 +0000)]
Clean ups for multi-way building of the GHC package
Norman Ramsey [Wed, 12 Sep 2007 15:38:52 +0000 (15:38 +0000)]
change the zipper representation of calls
This patch combines two changes:
1. As requested by SimonPJ, the redundancy inherent in having
LastCall bear actual parameters has been removed. The actual
parameters are now carried by a separate CopyOut node.
2. The internal (to zipper) representation of calls has changed;
the representation of calling conventions is more orthogonal,
and there is now no such thing as a 'safe' or 'final' call
to a CallishMachOp. This change has affected the interface
to MkZipCfgCmm, which now provides a static guarantee. Simon's
new upstream code will be affected; I've patched the existing
code in CmmCvt (which becomes ever hairier).
Norman Ramsey [Wed, 12 Sep 2007 15:25:02 +0000 (15:25 +0000)]
make it easier to have debugging code typechecked even when debugging is turned off
Norman Ramsey [Wed, 12 Sep 2007 10:25:45 +0000 (10:25 +0000)]
fix a typo!
Norman Ramsey [Wed, 12 Sep 2007 10:25:26 +0000 (10:25 +0000)]
cleaned up all warnings (and added many type signatures) in Outputable
Norman Ramsey [Wed, 12 Sep 2007 09:39:20 +0000 (09:39 +0000)]
overlooked ZipCfgExtras for a name change
Norman Ramsey [Wed, 12 Sep 2007 09:38:44 +0000 (09:38 +0000)]
extra prettyprinting only when debugging
Norman Ramsey [Tue, 11 Sep 2007 22:55:42 +0000 (22:55 +0000)]
renaming, reorganizing, and better doco for ZipCfg
Simon Marlow [Wed, 12 Sep 2007 11:16:58 +0000 (11:16 +0000)]
esacpe backslashes in the filename in the .rc file
Clemens Fruhwirth [Fri, 31 Aug 2007 10:46:24 +0000 (10:46 +0000)]
Remove --export-all-symbols for DLL linking, it is default and prevents us from using .def files
Clemens Fruhwirth [Mon, 6 Aug 2007 08:51:20 +0000 (08:51 +0000)]
Call windres with explicit preprocessor path in case gcc is not in $PATH
Clemens Fruhwirth [Mon, 6 Aug 2007 08:45:24 +0000 (08:45 +0000)]
Weak.c incorrectly claims it's being compiled along RTS Main.c
Clemens Fruhwirth [Wed, 12 Sep 2007 09:44:30 +0000 (09:44 +0000)]
Sign extension hack to work around PC64 relocation limitation for binutils <2.17 for x86_64.
binutils <2.17 can't generate PC64 relocations for x86_64. Hence we
emit only 32 bit PC relative offsets, and artifically stick a zero in
front of them to make them 64 bit (see PprMach.sh ppr_item in
pprDataItem). This works as long as the offset is <32bit AND it's
positive. This is not the case for offsets in jump tables, they are
all negative. This hack sign extends them with a MOVSXL instruction
into the dead index register, then adding the properly sign extended
offset to the jump table base label giving the correct target address
for the following jump.
Simon Marlow [Wed, 12 Sep 2007 11:09:09 +0000 (11:09 +0000)]
foldl1' was added to Data.List in GHC 6.4.x
Simon Marlow [Wed, 12 Sep 2007 10:43:12 +0000 (10:43 +0000)]
update .hi-boot-6 to track .lhs-boot
Simon Marlow [Wed, 12 Sep 2007 10:34:17 +0000 (10:34 +0000)]
update to track .lhs-boot file
Pepe Iborra [Tue, 11 Sep 2007 18:04:11 +0000 (18:04 +0000)]
Refactoring & documenting the Term pprinter used by :print
Pepe Iborra [Tue, 11 Sep 2007 15:14:54 +0000 (15:14 +0000)]
Custom printer for the Term datatype that won't output TypeRep values
The term pretty printer used by :print shouldn't output
the contents of TypeRep values, e.g. inside Dynamic values
Ben.Lippmeier@anu.edu.au [Tue, 11 Sep 2007 17:38:33 +0000 (17:38 +0000)]
Try and rewrite reloads to reg-reg moves in the spill cleaner
Manuel M T Chakravarty [Wed, 12 Sep 2007 01:04:58 +0000 (01:04 +0000)]
Fix type error in MkZipCfg
- Fixes a bug introduced with the patch named
'check for unreachable code only with -DDEBUG'
- Breakage occured only without -DDEBUG (which is 'valdiate's default!)
Norman Ramsey [Tue, 11 Sep 2007 15:45:33 +0000 (15:45 +0000)]
scrape some unused barnacles off of ZipCfg and put them into ZipCfgExtras
Norman Ramsey [Tue, 11 Sep 2007 15:06:35 +0000 (15:06 +0000)]
split the CmmGraph constructor interface from the representation
Interface MkZipCfgCmm should now be sufficient for all construction
needs, though some identifiers are re-exported from (and explained in)
MkZipCfg. ZipCfgCmmRep should be used only by modules involved in
analysis, optimization, or translation of Cmm programs.
Norman Ramsey [Tue, 11 Sep 2007 14:29:14 +0000 (14:29 +0000)]
correct two single-identifier bugs that stopped the Adams optimization from working
Norman Ramsey [Tue, 11 Sep 2007 14:27:01 +0000 (14:27 +0000)]
default ppr method for CmmGraph now tells more about the representation
(Previously, ppr had tried to make the zipper representation look as
much like the ListGraph representation as possible. This decision was
unhelpful for debugging, so although the old code has been retained,
the new default is to tell it like it is. It may be possible to
retire PprCmmZ one day, although it may be desirable to retain it as
the internal form becomes less readable.
Norman Ramsey [Tue, 11 Sep 2007 14:25:35 +0000 (14:25 +0000)]
prettyprint 'hinted' things in a more readable way
Norman Ramsey [Tue, 11 Sep 2007 14:24:10 +0000 (14:24 +0000)]
check for unreachable code only with -DDEBUG
Norman Ramsey [Tue, 11 Sep 2007 14:23:38 +0000 (14:23 +0000)]
add a big diagnostic for failures in CmmCvt.toZgraph
Ben.Lippmeier@anu.edu.au [Tue, 11 Sep 2007 15:12:11 +0000 (15:12 +0000)]
Don't try and coalesce nodes with themselves
Ben.Lippmeier@anu.edu.au [Tue, 11 Sep 2007 14:50:54 +0000 (14:50 +0000)]
Try and allocate vregs spilled/reloaded from some slot to the same hreg
Ben.Lippmeier@anu.edu.au [Tue, 11 Sep 2007 13:02:47 +0000 (13:02 +0000)]
Better handling of live range joins via spill slots in spill cleaner
Ben.Lippmeier@anu.edu.au [Mon, 10 Sep 2007 16:29:09 +0000 (16:29 +0000)]
Make sure to coalesce all the nodes found during iterative scanning
Ben.Lippmeier@anu.edu.au [Fri, 7 Sep 2007 17:23:15 +0000 (17:23 +0000)]
Add iterative coalescing to graph coloring allocator
Iterative coalescing interleaves conservative coalesing with the regular
simplify/scan passes. This increases the chance that nodes will be coalesced
as they will have a lower degree than at the beginning of simplify. The end
result is that more register to register moves will be eliminated in the
output code, though the iterative nature of the algorithm makes it slower
compared to non-iterative coloring.
Use -fregs-iterative for graph coloring allocation with iterative coalescing
-fregs-graph for non-iterative coalescing.
The plan is for iterative coalescing to be enabled with -O2 and have a
quicker, non-iterative algorithm otherwise. The time/benefit tradeoff
between iterative and not is still being tuned - optimal graph coloring
is NP-hard, afterall..
Pepe Iborra [Tue, 11 Sep 2007 15:14:54 +0000 (15:14 +0000)]
Custom printer for the Term datatype that won't output TypeRep values
The term pretty printer used by :print shouldn't output
the contents of TypeRep values, e.g. inside Dynamic values
Simon Marlow [Tue, 11 Sep 2007 13:02:28 +0000 (13:02 +0000)]
FIX #1466 (partly), which was causing concprog001(ghci) to fail
An AP_STACK now ensures that there is at least AP_STACK_SPLIM words of
stack headroom available after unpacking the payload. Continuations
that require more than AP_STACK_SPLIM words of stack must do their own
stack checks instead of aggregating their stack usage into the parent
frame. I have made this change for the interpreter, but not for
compiled code yet - we should do this in the glorious rewrite of the
code generator.
Pepe Iborra [Tue, 11 Sep 2007 11:32:12 +0000 (11:32 +0000)]
Fix type signatures
Pepe Iborra [Tue, 11 Sep 2007 10:19:44 +0000 (10:19 +0000)]
Documentation for -fbreak-on-error
Pepe Iborra [Tue, 11 Sep 2007 10:14:43 +0000 (10:14 +0000)]
GHCi debugger: new flag -fbreak-on-error
This flag works like -fbreak-on-exception, but only stops
on uncaught exceptions.
Pepe Iborra [Fri, 7 Sep 2007 13:58:57 +0000 (13:58 +0000)]
Remove obsolete -fdebugging flag
A left over from the 1st GHCi debugger prototype
Simon Marlow [Mon, 10 Sep 2007 14:57:47 +0000 (14:57 +0000)]
refactoring: eliminate DriverPipeline.CompResult and GHC.upsweep_compile
Simon Marlow [Mon, 10 Sep 2007 14:57:18 +0000 (14:57 +0000)]
refactoring: inline hscMkCompiler
Simon Marlow [Tue, 11 Sep 2007 08:54:52 +0000 (08:54 +0000)]
FIX #1677; poor error message for misspelled module declaration
sven.panne@aedion.de [Tue, 11 Sep 2007 07:18:01 +0000 (07:18 +0000)]
Synched documentation links with current directory layout
Somehow the "html" subdirs are gone, this change was not completely
intentional, but it is nice, anyway. Those subdirs never served any
real purpose...
MERGE TO STABLE
Ian Lynagh [Mon, 10 Sep 2007 13:35:28 +0000 (13:35 +0000)]
Add a BeConservative setting to the make system
If it is set, we don't try to use clock_gettime
Pepe Iborra [Mon, 10 Sep 2007 14:53:19 +0000 (14:53 +0000)]
Nicer GHCi debugger underlining
Improved the underlining of blocks.
With this patch it does:
Stopped at break020.hs:(6,20)-(7,29)
_result :: t1 () = _
5
vv
6 in_another_decl _ = do line1 0
7 line2 0
^^
8
Instead of
Stopped at break020.hs:(6,20)-(7,29)
_result :: t1 () = _
5
6 in_another_decl _ = do line1 0
^^
7 line2 0
^^
8
Pepe Iborra [Mon, 10 Sep 2007 14:21:29 +0000 (14:21 +0000)]
FIX #1669 (GHCi debugger underlining is in the wrong place)
We weren't taking into account the offset added by the line numbers:
Stopped at break020.hs:10:2-8
_result :: IO () = _
9 main = do
10 line1 0
^^^^^^^
11 line2 0
This patch adjusts that
Ian Lynagh [Mon, 10 Sep 2007 12:27:56 +0000 (12:27 +0000)]
Turn off orphan warnings
We also avoid using -fno-warn-orphans with older GHCs that don't understand
the flag.
Ian Lynagh [Fri, 7 Sep 2007 21:22:08 +0000 (21:22 +0000)]
Add some more bits to the boring file
Ian Lynagh [Fri, 7 Sep 2007 18:19:44 +0000 (18:19 +0000)]
Add a --names-only flag for list --simple-output
We use this in the testsuite to find out which libraries we should run
the tests from.
Simon Marlow [Mon, 10 Sep 2007 10:38:30 +0000 (10:38 +0000)]
FIX #903: mkWWcpr: not a product
This fixes the long-standing bug that prevents some code with
mutally-recursive modules from being compiled with --make and -O,
including GHC itself. See the comments for details.
There are some additional cleanups that were forced/enabled by this
patch: I removed importedSrcLoc/importedSrcSpan: it wasn't adding any
useful information, since a Name already contains its defining Module.
In fact when re-typechecking an interface file we were wrongly
replacing the interesting SrcSpans in the Names with boring
importedSrcSpans, which meant that location information could degrade
after reloading modules. Also, recreating all these Names was a waste
of space/time.
Manuel M T Chakravarty [Mon, 10 Sep 2007 08:34:57 +0000 (08:34 +0000)]
Cleaned up version of Tom's unflattened skolemOccurs
sven.panne@aedion.de [Mon, 10 Sep 2007 06:57:59 +0000 (06:57 +0000)]
The RTS is Haddock-less, tell make about it
MERGE TO STABLE
sven.panne@aedion.de [Sun, 9 Sep 2007 15:40:53 +0000 (15:40 +0000)]
Include package documentation, n-th attempt...
MERGE TO STABLE
sven.panne@aedion.de [Sun, 9 Sep 2007 12:49:22 +0000 (12:49 +0000)]
Yet another attempt to get the paths for the installed documentation correct
MERGE TO STABLE
sven.panne@aedion.de [Sun, 9 Sep 2007 12:38:13 +0000 (12:38 +0000)]
Add a "show" target here, too, quite useful for debugging the build process
MERGE TO STABLE
sven.panne@aedion.de [Sun, 9 Sep 2007 12:34:01 +0000 (12:34 +0000)]
Never try to build Haddock docs in ghc/compiler, even with HADDOCK_DOCS=YES
MERGE TO STABLE
sven.panne@aedion.de [Sun, 9 Sep 2007 12:11:57 +0000 (12:11 +0000)]
Removed install-dirs target, it is unnecessary and leads to stray empty directories
MERGE TO STABLE
sven.panne@aedion.de [Sun, 9 Sep 2007 10:28:15 +0000 (10:28 +0000)]
Removed install-dirs from phony targets, it is unused
MERGE TO STABLE
Ian Lynagh [Sat, 8 Sep 2007 23:10:24 +0000 (23:10 +0000)]
Add a crucial missing ;
Norman Ramsey [Sat, 8 Sep 2007 15:51:41 +0000 (15:51 +0000)]
implement the outOfLine primitive in MkZipCfg (proposed as mkBlock)
Norman Ramsey [Fri, 7 Sep 2007 17:20:30 +0000 (17:20 +0000)]
withUnique and mkBlock as requested by SLPJ (but only one is implemented)
Norman Ramsey [Fri, 7 Sep 2007 17:08:43 +0000 (17:08 +0000)]
no registers are available after a call
Norman Ramsey [Fri, 7 Sep 2007 16:59:55 +0000 (16:59 +0000)]
wrote an analysis to help in sinking Reload instructions
sven.panne@aedion.de [Sat, 8 Sep 2007 14:27:12 +0000 (14:27 +0000)]
We seem to use Outputable unconditionally these days
MERGE TO STABLE
sven.panne@aedion.de [Sat, 8 Sep 2007 13:18:09 +0000 (13:18 +0000)]
Removed setting of default values for variables which are never empty
The standard autoconf variables like prefix, exec_prefix, ... are always set by
configure, so there is no need to provide explicit defaults in the Makefile.
The lines were introduced about a decade ago, perhaps there were some bugs in
ancient autoconfs, but today I can't think of a reason why this should be still
necessary.
sven.panne@aedion.de [Sat, 8 Sep 2007 12:46:45 +0000 (12:46 +0000)]
Use := for PACKAGE_TARNAME, no reason for not doing so
MERGE TO STABLE
sven.panne@aedion.de [Sat, 8 Sep 2007 12:44:48 +0000 (12:44 +0000)]
Removed unused oldincludedir, things are already complicated enough
MERGE TO STABLE
sven.panne@aedion.de [Sat, 8 Sep 2007 12:33:17 +0000 (12:33 +0000)]
Added comment about GNU coding standards/autoconf history
MERGE TO STABLE
andy@galois.com [Sat, 8 Sep 2007 05:53:20 +0000 (05:53 +0000)]
Fixing Hpc's Finite Map compat lib for ghc 6.2.1
andy@galois.com [Sat, 8 Sep 2007 05:16:00 +0000 (05:16 +0000)]
updating hpc toolkit
The hpc overlay has been ported from hpc-0.4
The new API for readMix is now used.
andy@galois.com [Fri, 7 Sep 2007 22:33:57 +0000 (22:33 +0000)]
Fixing hpc to allow use of hash function to seperate source files on source path
Ian Lynagh [Sat, 8 Sep 2007 00:31:12 +0000 (00:31 +0000)]
Make various assertions work when !DEBUG
Ian Lynagh [Fri, 7 Sep 2007 23:33:30 +0000 (23:33 +0000)]
Fix assertions in RtClosureInspect
Ian Lynagh [Fri, 7 Sep 2007 23:33:24 +0000 (23:33 +0000)]
In ASSERT and friends, use all the expressions we are passed even if !DEBUG
Otherwise we may get unused variable warnings. GHC should optimise them
all out for us.