ghc-hetmet.git
17 years agoUse timer_create() for the interval timer, if available
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.

17 years agofurther improvements to the x86/x86_64 NCG
Simon Marlow [Thu, 1 Mar 2007 13:06:28 +0000 (13:06 +0000)]
further improvements to the x86/x86_64 NCG

17 years agoFix typo in primops docs
Ian Lynagh [Thu, 1 Mar 2007 13:03:39 +0000 (13:03 +0000)]
Fix typo in primops docs

17 years agoDo not go into an infinite loop when pretty-printer finds a negative indent (Trac...
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)

17 years agoUse the most complex form of addressing modes on x86
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).

17 years agois64BitInteger: truncate to 64 bits before testing
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.

17 years agoFix -keep-s-file with --make
Simon Marlow [Thu, 1 Mar 2007 09:57:49 +0000 (09:57 +0000)]
Fix -keep-s-file with --make

17 years agosome more vectored return stuff to be removed
Simon Marlow [Thu, 1 Mar 2007 09:22:50 +0000 (09:22 +0000)]
some more vectored return stuff to be removed

17 years agoFix #839 (Generate documentation for built-in types and primitve operations)
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#).

17 years agoFix #249 (-caf-all bugs)
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.

17 years agouse -fforce-recomp when compiling Main.hs against the ghc package.
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.

17 years agoRemove vectored returns.
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.

17 years agoWindows: the .hp file is <prog>.exe.hp
Simon Marlow [Wed, 28 Feb 2007 12:03:19 +0000 (12:03 +0000)]
Windows: the .hp file is <prog>.exe.hp

17 years agoMake let-matching work in Rules again
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.

17 years agoFixes for the mangler on IA64
Ian Lynagh [Tue, 27 Feb 2007 17:45:42 +0000 (17:45 +0000)]
Fixes for the mangler on IA64
From heatsink, in trac #1150.

17 years agoRemove the itbls field of BCO, put itbls in with the literals
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

17 years agofix data con patch for 64-bit architectures
Simon Marlow [Tue, 27 Feb 2007 13:43:58 +0000 (13:43 +0000)]
fix data con patch for 64-bit architectures

17 years agoConstructor names in info tables
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.

17 years agoDoc typo
Ian Lynagh [Tue, 27 Feb 2007 12:57:31 +0000 (12:57 +0000)]
Doc typo

17 years agoDon't hardwire RELEASE into configure.ac
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.

17 years agoFix parsing of parallel array literals
Manuel M T Chakravarty [Sat, 24 Feb 2007 06:11:50 +0000 (06:11 +0000)]
Fix parsing of parallel array literals

17 years agoTidy up typechecking for newtypes
simonpj@microsoft.com [Fri, 23 Feb 2007 14:10:32 +0000 (14:10 +0000)]
Tidy up typechecking for newtypes

17 years agopthread_key_delete wants the key itself, not a pointer to it
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

17 years agoWibble
Pepe Iborra [Fri, 23 Feb 2007 10:29:57 +0000 (10:29 +0000)]
Wibble

17 years agoMoved argument position info of ATs into tycon rhs info
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

17 years agoUnbreak HEAD
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.

17 years agoFree thread local storage on shutdown
Ian Lynagh [Thu, 22 Feb 2007 14:43:06 +0000 (14:43 +0000)]
Free thread local storage on shutdown

17 years agoupload documentation too
Simon Marlow [Thu, 22 Feb 2007 10:28:23 +0000 (10:28 +0000)]
upload documentation too

17 years agorefactoring
Simon Marlow [Thu, 22 Feb 2007 10:03:49 +0000 (10:03 +0000)]
refactoring

17 years agorefactoring only: remove unused code/imports
Simon Marlow [Thu, 11 Jan 2007 09:19:44 +0000 (09:19 +0000)]
refactoring only: remove unused code/imports

17 years agoImproving the performance of breakpoints up to 50% (by playing with laziness)
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).

17 years agoFix the behaviour of :print with functions
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

17 years agoFix an incomplete pattern in the code for :print
Pepe Iborra [Wed, 21 Feb 2007 15:09:42 +0000 (15:09 +0000)]
Fix an incomplete pattern in the code for :print

17 years agoRemoved unnecessary code
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.

17 years agoAllow GADT syntax for newtypes
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.

17 years agoImport trimming
simonpj@microsoft.com [Wed, 21 Feb 2007 16:53:12 +0000 (16:53 +0000)]
Import trimming

17 years agoDeal more correctly with orphan instances
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.

17 years agoRemove dead code from FunDeps
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!

17 years agoFix a deriving bug, arising from recent refactoring
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.

17 years agoFix defaulting for overloaded strings
simonpj@microsoft.com [Wed, 21 Feb 2007 10:36:45 +0000 (10:36 +0000)]
Fix defaulting for overloaded strings

This patch fixes the typechecking of the default declaration itself,
when overloaded strings are involved.  It also documents the behaviour
in the user manual.

nofib/spectral/power should work again now!

17 years agoMERGE from 6.6: Windows fix for stdcall foreign-import-wrapper, fixes ffi012(ghci)
Simon Marlow [Wed, 21 Feb 2007 09:29:50 +0000 (09:29 +0000)]
MERGE from 6.6: Windows fix for stdcall foreign-import-wrapper, fixes ffi012(ghci)

17 years agoFix case-merge bug that was breaking the HEAD
simonpj@microsoft.com [Wed, 21 Feb 2007 09:11:23 +0000 (09:11 +0000)]
Fix case-merge bug that was breaking the HEAD

My re-org of the case-merging transformation introduced a bug, which led
to incorrect code.   This only showed up occasionally, but it generated
incorrect code for PprC.pprCastReg in the stage-2 compiler. As a result
the stage-2 compiler ran without crashing, but itself generated bogus C.

For a change, this is one that Core Lint couldn't find, so the trail was
a bit longer.  The fix is easy (and commented).

17 years agoFix obscure bug in reportDeprecations
simonpj@microsoft.com [Tue, 20 Feb 2007 17:47:14 +0000 (17:47 +0000)]
Fix obscure bug in reportDeprecations

Fixes Trac #1128
Please merge to STABLE

A rather obscure bug related to -fno-implicit-prelude.
See Note [Used names with interface not loaded] in RnNames.

Easily fixed, however.  Test is rn051

17 years agodescribe the Z-encoding for __stginit symbol names (addresses #1014)
Simon Marlow [Tue, 20 Feb 2007 13:25:32 +0000 (13:25 +0000)]
describe the Z-encoding for __stginit symbol names (addresses #1014)

17 years agofreeTaskManager: don't free Tasks that are still in use
Simon Marlow [Tue, 20 Feb 2007 09:54:56 +0000 (09:54 +0000)]
freeTaskManager: don't free Tasks that are still in use
See conc059.

17 years agoFix sleep delay for the non-threaded Windows RTS
Simon Marlow [Tue, 20 Feb 2007 09:07:16 +0000 (09:07 +0000)]
Fix sleep delay for the non-threaded Windows RTS
This is the Windows counterpart to "Make the non-threaded-RTS
threadDelay wait at least as long as asked"

17 years agoSignature type variables must not be instantiated with tycons
simonpj@microsoft.com [Mon, 19 Feb 2007 17:52:48 +0000 (17:52 +0000)]
Signature type variables must not be instantiated with tycons

An egregious bug in the type checker meant that it was possible for a
"signature type variable" (a MetaTv of SigTv form) to be instantatiated
with a type-constructor application.  This destroys the invariant for
SigTv.

The fix is easy; adding the predicate TcType.isTyConableTyVar

Fixes Trac #1153

17 years agoFixed a bug with the :print command spotted by Bernie Pope.
Pepe Iborra [Fri, 16 Feb 2007 20:10:52 +0000 (20:10 +0000)]
Fixed a bug with the :print command spotted by Bernie Pope.

Test ghci.debugger/scripts/print018 covers this

17 years agoUniform user interface
Pepe Iborra [Fri, 16 Feb 2007 19:54:24 +0000 (19:54 +0000)]
Uniform user interface

Print

"Breakpoint set at Main:26:13"

instead of

"Breakpoint set at (26,13)"

17 years agoTaught :breakpoint add to guess the module name if not given
Pepe Iborra [Fri, 16 Feb 2007 19:38:10 +0000 (19:38 +0000)]
Taught :breakpoint add to guess the module name if not given

Now the user can say

> :break add 13

at the ghci prompt and the debugger will use the first top level module as the target for the breakpoint

17 years agoFix left-bias in ghci tab-completion code
Judah Jacobson [Wed, 14 Feb 2007 03:42:34 +0000 (03:42 +0000)]
Fix left-bias in ghci tab-completion code

17 years agoFixed a bug in the datacon names extension in the dynamic linker
Pepe Iborra [Thu, 15 Feb 2007 18:19:34 +0000 (18:19 +0000)]
Fixed a bug in the datacon names extension in the dynamic linker

My code was doing unnecessary work when trying to get hold of all the BCOs in order to sniff the datacon names.
This involved calculating the transitive closure of a relation and was causing a huge performance slowdown in GHCi, as benchmarks uncovered. It turns out that this calculation was unnecessary.

17 years agoModify the breakpoint desugaring to introduce more laziness
Pepe Iborra [Tue, 13 Feb 2007 20:30:43 +0000 (20:30 +0000)]
Modify the breakpoint desugaring to introduce more laziness

Benchmarks have shown that making the formation of the list of locals more lazy can improve performance of -fdebugging up to 50% in some cases

17 years agoWhen the pipeline just copies the file, prepend a LINE pragma
Simon Marlow [Thu, 15 Feb 2007 11:58:52 +0000 (11:58 +0000)]
When the pipeline just copies the file, prepend a LINE pragma
For example, "ghc -E Foo.hs -o Foo.bar" just copies Foo.hs to
Foo.bar.  This patch adds a LINE pragma to the beginning of Foo.bar so
that further processing can track the location of the original file.

The motiviation for this is bug #1044.  When generating Haddock docs,
we preprocess the .hs to a .raw-hs, sometimes this doesn't involve any
actual preprocessing and in those cases we lose track of the original
filename.

17 years agoadd a ToDo, reference bug #1147
Simon Marlow [Wed, 14 Feb 2007 14:47:16 +0000 (14:47 +0000)]
add a ToDo, reference bug #1147

17 years agofix closure_sizeW_() for AP closures
Simon Marlow [Wed, 14 Feb 2007 12:04:01 +0000 (12:04 +0000)]
fix closure_sizeW_() for AP closures
Since thunks grew an extra padding word in GHC 6.6, closure_sizeW()
has been wrong for AP closures because it assumed compatible layout
between PAPs and APs.  One symptom is that the compacting GC would
crash if it encountered an AP.  APs conly crop up in GHCi or
when using asynchronous exceptions.

Fixes #1010

17 years agoFixing bad allocation of tix box breakpointing array.
andy@galois.com [Tue, 13 Feb 2007 22:02:03 +0000 (22:02 +0000)]
Fixing bad allocation of tix box breakpointing array.

17 years agoUsing RTS debug tracing support inside Hpc.c
andy@galois.com [Tue, 13 Feb 2007 18:44:02 +0000 (18:44 +0000)]
Using RTS debug tracing support inside Hpc.c

17 years agoMajor improvement to SpecConstr
simonpj@microsoft.com [Fri, 9 Feb 2007 17:36:45 +0000 (17:36 +0000)]
Major improvement to SpecConstr

This patch improves the SpecConstr pass, by
  a) making it work with join points
  b) making it generate specialisations transitively

As part of it, SpecConstr now carries a substitution with it, which
runs over the whole program as it goes.  This turned out to be
a big win; simplified the implementation quite a bit.

I have *disabled* the specialisation on lambdas; it's pretty fragile,
and sometimes generates more and more specialisations. Something to
come back to, perhaps.

I rejigged the flag-handling a bit.  Now the specification of passes
in DynFlags is a bit nicer; see
- optLevelFlags top-level data structure
- runWhen function
- CoreDoPasses constructor

There are now command-line flags
-fspec-constr
-fliberate-case
-fspec-threshold=N
which do the obvious thing.  -O2 switches on both spec-constr and liberate-case.
You can use -fno-liberate-case, -fno-spec-constr after -O2 to switch them off again.

The spec-threshold applies to both these transformations; default value 200 for now.

17 years agoRefactor the simplifier's treatment of case expressions
simonpj@microsoft.com [Fri, 9 Feb 2007 17:29:38 +0000 (17:29 +0000)]
Refactor the simplifier's treatment of case expressions

(NB: this patch could conceivably require some bits of the
following SpecConstr patch to compile cleanly.  It's conceptually
independent, but I'm not 100% certain that I've included all
the necessary bits here.)

This patch cleans up the simplifier's handling of various
otimisations for case expressions, notably
  - case elimination (discarding the case altogether)
  - merging identical alternatives
  - discarding impossible alternative
  - merging nested cases

Previously this was partly handled before, and partly after,
simplifying the case alternatives. The trouble with that is
that the dead-ness information on the case binders gets munged
during simplification, and that turned out to mean that
case elmination essentially never happened -- stupid.

Now I've moved it all to before simplifying the alterntives.
In fact this reduces the amount of code, I think, and it's
certainly tidier.  I don't think there is any loss.

17 years agoTicky is an RTS-only way; also fix collateral damage to other ways
Simon Marlow [Fri, 9 Feb 2007 14:08:18 +0000 (14:08 +0000)]
Ticky is an RTS-only way; also fix collateral damage to other ways
The ticky static flag was being poked too early, which lead to
breakage in the -prof way amongst other things.  I've installed some
sanity checking to make sure we catch this earlier if it happens again.

17 years agoMake it a warning, not an error, if the version date cannot be determined
Simon Marlow [Thu, 8 Feb 2007 15:13:23 +0000 (15:13 +0000)]
Make it a warning, not an error, if the version date cannot be determined
This happens when the build tree is a link-tree to the source tree,
because lndir will normally omit the _darcs directory.

17 years agomake VERSION a dependency of dist
Simon Marlow [Thu, 8 Feb 2007 12:15:55 +0000 (12:15 +0000)]
make VERSION a dependency of dist

17 years agofix cut-and-pasto in code for binary-dist upload
Simon Marlow [Thu, 8 Feb 2007 12:07:12 +0000 (12:07 +0000)]
fix cut-and-pasto in code for binary-dist upload

17 years agoFixed typo in devel1 flavor
Kirsten Chevalier [Wed, 7 Feb 2007 22:59:57 +0000 (22:59 +0000)]
Fixed typo in devel1 flavor

Under GhcStage2HcOpts, "O" should be "-O"; fixed.

17 years agoType reconstruction/RTTI: improve handling of newtypes
Pepe Iborra [Wed, 7 Feb 2007 20:59:47 +0000 (20:59 +0000)]
Type reconstruction/RTTI: improve handling of newtypes

  Newtypes have always been a problem because they are not there at runtime, but we need to take them into account.

  Tests ghci.debugger/print011 and ghci.debugger/print012 cover this

17 years agoOptimize dynamic breakpoints for speed
Pepe Iborra [Wed, 7 Feb 2007 08:21:10 +0000 (08:21 +0000)]
Optimize dynamic breakpoints for speed

Made a bit faster the test which gets done every time a running program hits a dynamic breakpoint. I moved the bounds checking inside a DEBUG pragma and replaced (IArray.!) for unsafeAt

17 years agoTeach darcs-all how to get testsuite and nofib
Ian Lynagh [Wed, 7 Feb 2007 16:53:44 +0000 (16:53 +0000)]
Teach darcs-all how to get testsuite and nofib

17 years agoImproved naming of generated HTML files by using nice IDs
sven.panne@aedion.de [Wed, 7 Feb 2007 16:34:04 +0000 (16:34 +0000)]
Improved naming of generated HTML files by using nice IDs

17 years agoMake the User's Guide DocBook XML 4.2 conformant again
sven.panne@aedion.de [Wed, 7 Feb 2007 16:19:27 +0000 (16:19 +0000)]
Make the User's Guide DocBook XML 4.2 conformant again

17 years agoupdate version hack to work on partial repositories
Simon Marlow [Wed, 7 Feb 2007 10:59:29 +0000 (10:59 +0000)]
update version hack to work on partial repositories
Instead of asking for the last 100 patches, we just get the first 500
lines of output from darcs changes (ugh, better ideas welcome).

17 years agoForce recompilation on all -ddump flags
simonpj@microsoft.com [Wed, 7 Feb 2007 10:02:45 +0000 (10:02 +0000)]
Force recompilation on all -ddump flags

17 years agoForce recompilation with -ddump-minimal-imports
simonpj@microsoft.com [Wed, 7 Feb 2007 10:00:53 +0000 (10:00 +0000)]
Force recompilation with -ddump-minimal-imports

17 years agoSpelling fix
simonpj@microsoft.com [Wed, 7 Feb 2007 09:51:53 +0000 (09:51 +0000)]
Spelling fix

17 years agoFix bug in -ddump-minimal imports Trac #1025
simonpj@microsoft.com [Wed, 7 Feb 2007 09:49:45 +0000 (09:49 +0000)]
Fix bug in -ddump-minimal imports Trac #1025

The code for -ddump-minimal-imports was erroneously using loadSrcInterface,
which looks only for *exposed* modules.  It should instead use loadSysInterface
which looks for all interfaces.

The fix is straightforward.  MERGE to 6.6 branch.

17 years agoUpdate to manual section for ticky-ticky
Kirsten Chevalier [Wed, 7 Feb 2007 08:45:27 +0000 (08:45 +0000)]
Update to manual section for ticky-ticky

I added a slightly more helpful remark in the profiling
section of the manual about how to use ticky-ticky.

17 years agoLightweight ticky-ticky profiling
Kirsten Chevalier [Wed, 7 Feb 2007 08:14:04 +0000 (08:14 +0000)]
Lightweight ticky-ticky profiling

The following changes restore ticky-ticky profiling to functionality
from its formerly bit-rotted state. Sort of. (It got bit-rotted as part
of the switch to the C-- back-end.)

The way that ticky-ticky is supposed to work is documented in Section 5.7
of the GHC manual (though the manual doesn't mention that it hasn't worked
since sometime around 6.0, alas). Changes from this are as follows (which
I'll document on the wiki):

* In the past, you had to build all of the libraries with way=t in order to
use ticky-ticky, because it entailed a different closure layout. No longer.
You still need to do make way=t in rts/ in order to build the ticky RTS,
but you should now be able to mix ticky and non-ticky modules.

* Some of the counters that worked in the past aren't implemented yet.
I was originally just trying to get entry counts to work, so those should
be correct. The list of counters was never documented in the first place,
so I hope it's not too much of a disaster that some don't appear anymore.
Someday, someone (perhaps me) should document all the counters and what
they do. For now, all of the counters are either accurate (or at least as
accurate as they always were), zero, or missing from the ticky profiling
report altogether.

This hasn't been particularly well-tested, but these changes shouldn't
affect anything except when compiling with -fticky-ticky (famous last
words...)

Implementation details:

I got rid of StgTicky.h, which in the past had the macros and declarations
for all of the ticky counters. Now, those macros are defined in Cmm.h.
StgTicky.h was still there for inclusion in C code. Now, any remaining C
code simply cannot call the ticky macros -- or rather, they do call those
macros, but from the perspective of C code, they're defined as no-ops.
(This shouldn't be too big a problem.)

I added a new file TickyCounter.h that has all the declarations for ticky
counters, as well as dummy macros for use in C code. Someday, these
declarations should really be automatically generated, since they need
to be kept consistent with the macros defined in Cmm.h.

Other changes include getting rid of the header that was getting added to
closures before, and getting rid of various code having to do with eager
blackholing and permanent indirections (the changes under compiler/
and rts/Updates.*).

17 years agoDetect the snapshot version number using darcs
Simon Marlow [Tue, 6 Feb 2007 21:25:36 +0000 (21:25 +0000)]
Detect the snapshot version number using darcs
For non-release builds, we want to append a date to the version number
(e.g. 6.7.20070206).  Previously this was done by the nightly build
script, this new method figures out the snapshot version by querying
the darcs repository and finding the date of the most recent patch
(actually it finds the most recent of the last 100 patches, but that
should be good enough).  This is done by the configure script.

To handle source distributions, we create a file VERSION in the
top-level directory that contains the version number, and ship this in
the source distribution.  The configure script picks up the version
from this file if it doesn't see a _darcs directory.

17 years agoCheck for escape when unifying forall-types
simonpj@microsoft.com [Tue, 6 Feb 2007 16:54:56 +0000 (16:54 +0000)]
Check for escape when unifying forall-types

This egregious omission led to Trac #1128.

17 years agoRename local variable (no semantic effect)
simonpj@microsoft.com [Tue, 6 Feb 2007 12:24:56 +0000 (12:24 +0000)]
Rename local variable (no semantic effect)

17 years agoComments and debug output
simonpj@microsoft.com [Tue, 6 Feb 2007 12:24:35 +0000 (12:24 +0000)]
Comments and debug output

17 years agoImprove rule-matching for let expressions
simonpj@microsoft.com [Tue, 6 Feb 2007 12:22:33 +0000 (12:22 +0000)]
Improve rule-matching for let expressions

17 years agoDo more wild-carding in SpecConstr; I'm not quite sure about this, but it does no...
simonpj@microsoft.com [Tue, 6 Feb 2007 12:15:52 +0000 (12:15 +0000)]
Do more wild-carding in SpecConstr; I'm not quite sure about this, but it does no harm

17 years agoFix a small bug when comparing patterns for equality
simonpj@microsoft.com [Tue, 6 Feb 2007 12:15:18 +0000 (12:15 +0000)]
Fix a small bug when comparing patterns for equality

17 years agoExpose rnInScopeSet from VarEnv
simonpj@microsoft.com [Tue, 6 Feb 2007 12:07:37 +0000 (12:07 +0000)]
Expose rnInScopeSet from VarEnv

17 years agoDon't use compat when compiling utils with stage1
Ian Lynagh [Tue, 6 Feb 2007 00:32:32 +0000 (00:32 +0000)]
Don't use compat when compiling utils with stage1

17 years agoFix syntax error
Ian Lynagh [Mon, 5 Feb 2007 20:31:25 +0000 (20:31 +0000)]
Fix syntax error

17 years agofix memory leak in allocExec/freeExec (see bug #985)
Simon Marlow [Mon, 5 Feb 2007 10:21:02 +0000 (10:21 +0000)]
fix memory leak in allocExec/freeExec (see bug #985)

17 years agoImplement the PushT rule from the FC paper
simonpj@microsoft.com [Mon, 5 Feb 2007 17:43:34 +0000 (17:43 +0000)]
Implement the PushT rule from the FC paper

17 years agoImprove handling of partial applications involving casts
simonpj@microsoft.com [Mon, 5 Feb 2007 17:40:58 +0000 (17:40 +0000)]
Improve handling of partial applications involving casts

This patch improves prepareRhs, so that it deals better with casts.

We want to deal well cases like this
v = (f e1 `cast` co) e2
Here we want to make e1,e2 trivial and get
x1 = e1; x2 = e2; v = (f x1 `cast` co) v2

This really happens in parser libraries, which wrap functions in newtypes.

17 years agoFloat casts out of lambdas
simonpj@microsoft.com [Mon, 5 Feb 2007 17:35:44 +0000 (17:35 +0000)]
Float casts out of lambdas

See Note [Casts and lambdas] in SimplUtils.  I found this transformation
when staring at some cast-heavy code generated by
Language.Haskell.Lexer.hs in the haskell-src library.

The basic transformation is this:
(\x. e `cast` g1)  -->  (\x.e) `cast` (tx -> g1)
where x:tx.

17 years agoUse exprIsCheap in floating, just as the simplifier does
simonpj@microsoft.com [Mon, 5 Feb 2007 17:34:56 +0000 (17:34 +0000)]
Use exprIsCheap in floating, just as the simplifier does

17 years agoEstablish the CoreSyn let/app invariant
simonpj@microsoft.com [Mon, 5 Feb 2007 17:31:50 +0000 (17:31 +0000)]
Establish the CoreSyn let/app invariant

This patch clears up a long-standing wart.   For some time it's been the
case that
the RHS of a non-recursive let can be unlifed iff
the RHS is ok-for-speculation

This patch extends the invariant to the argument of an App, and
establishes it by the smart constructors mkDsApp, mkDsApps in the desugarer.

Once established, it should be maintained by the optimiser.

This tides up some awkward cases, notably in exprIsHNF, and I think it
fixes a outright strictness bug in Simplify.prepareRhs.

17 years agoImprove simplification of coercions
simonpj@microsoft.com [Mon, 5 Feb 2007 16:33:24 +0000 (16:33 +0000)]
Improve simplification of coercions

At the moment GHC really does very little simplification of coercions.
This patch improves matters, but it's still not great, especially when
you have chains linked together with 'trans'.

I'm also concerned that I have not yet implemented the 'leftc' and 'rightc'
coercions we added to the paper.

But at least things are better than they were.  In particular
g `trans` sym g
now cancels to give the identity.

17 years agoMove #ifdef __GLASGOW_HASKELL__ < 604 to cover the CSIDL definitions too
Simon Marlow [Mon, 5 Feb 2007 16:02:29 +0000 (16:02 +0000)]
Move #ifdef __GLASGOW_HASKELL__ < 604 to cover the CSIDL definitions too
Fixes bug exposed by compiling base w/ -fasm on Windows

17 years agoMake binary-dist tarballs automatically, and add support for uploading
Simon Marlow [Mon, 5 Feb 2007 14:48:47 +0000 (14:48 +0000)]
Make binary-dist tarballs automatically, and add support for uploading
Moving functionality that was previously in the nightly build scripts
into the top-level Makefile, so it's easier to use from BuildBot.

17 years agoSemi-tagging optimisation
Simon Marlow [Mon, 22 Jan 2007 11:40:16 +0000 (11:40 +0000)]
Semi-tagging optimisation
In the generated code for case-of-variable, test the tag of the
scrutinee closure and only enter if it is unevaluated.  Also turn
*off* vectored returns.

17 years agodon't forget to remove html-docs as part of 'make clean'
Simon Marlow [Mon, 5 Feb 2007 14:08:00 +0000 (14:08 +0000)]
don't forget to remove html-docs as part of 'make clean'

17 years agoSimpler, more self-contained, "make dist"
Simon Marlow [Mon, 5 Feb 2007 14:07:27 +0000 (14:07 +0000)]
Simpler, more self-contained, "make dist"
This version does all its work in a subdirectory (no more destructive
'make distclean' in the current build tree), and results in the exact
-src.tar.bz2 distributions that we will put up for download.

17 years agooptimisation: shortcut branches when possible (x86/x86_64 only for now)
mrchebas@gmail.com [Mon, 22 Jan 2007 11:42:01 +0000 (11:42 +0000)]
optimisation: shortcut branches when possible (x86/x86_64 only for now)
This is only turned on with -O, and probably won't make much
difference at the moment, but it will be important for semi-tagging.