1. 06 Sep, 2007 4 commits
  2. 05 Sep, 2007 1 commit
  3. 06 Sep, 2007 6 commits
  4. 05 Sep, 2007 1 commit
  5. 06 Sep, 2007 1 commit
    • Simon Marlow's avatar
      FIX #1465, error messages could sometimes say things like "A.T doesn't match A.T" · 42181975
      Simon Marlow authored
      This turned out to be a black hole, however we believe we now have a
      plan that does the right thing and shouldn't need to change again.
      Error messages will only ever refer to a name in an unambiguous way,
      falling back to <package>:<module>.<name> if no unambiguous shorter
      variant can be found.  See HscTypes.mkPrintUnqualified for the
      Earlier hacks to work around this problem have been removed (TcSimplify).
  6. 05 Sep, 2007 2 commits
    • Simon Marlow's avatar
      fix error in .hi-boot-6 · c02da7d1
      Simon Marlow authored
    • Ben.Lippmeier@anu.edu.au's avatar
      Improve GraphColor.colorScan · 1dd44153
      Ben.Lippmeier@anu.edu.au authored
      Testing whether a node in the conflict graph is trivially 
      colorable (triv) is still a somewhat expensive operation.
      When we find a triv node during scanning, even though we remove
      it and its edges from the graph, this is unlikely to to make the
      nodes we've just scanned become triv - so there's not much point
      re-scanning them right away.
      Scanning now takes place in passes. We scan the whole graph for
      triv nodes and remove all the ones found in a batch before rescanning
      old nodes.
      Register allocation for SHA1.lhs now takes (just) 40% of total
      compile time with -O2 -fregs-graph on x86
  7. 06 Sep, 2007 2 commits
  8. 05 Sep, 2007 8 commits
    • chak@cse.unsw.edu.au.'s avatar
    • Ian Lynagh's avatar
      Add an OPTIONS -w pragma to utils/genprimopcode/Lexer.xx · 7d6363d6
      Ian Lynagh authored
      SPJ reports that it has warnings (=> errors with -Werror) on Windows.
    • Ian Lynagh's avatar
    • Ian Lynagh's avatar
      Don't give warnings in compat · d3b882ae
      Ian Lynagh authored
      There are lots of warnings in here due to things like modules being
      imported that, in some versions of GHC, aren't used. Thus we don't
      give any warnings in here, and therefore validating with -Werror won't
      make the build fail.
      An alternative would be to do
      SRC_HC_OPTS := $(filter-out -Werror,$(SRC_HC_OPTS))
      but if warnings are expected then there is little point in spewing them
      out anyway.
      On the other hand, there aren't any warnings for me (GHC 6.6 on Linux/amd64),
      so perhaps it would be worth fixing them instead.
    • Ian Lynagh's avatar
      Typo · 1ee0b69e
      Ian Lynagh authored
    • Ian Lynagh's avatar
      Fix bindist creation on Windows · b18545dd
      Ian Lynagh authored
    • Ian Lynagh's avatar
      Fix up bindist creation and publishing · cafb1e0f
      Ian Lynagh authored
    • simonpj@microsoft.com's avatar
      Refactor, improve, and document the deriving mechanism · 25f84fa7
      simonpj@microsoft.com authored
      This patch does a fairly major clean-up of the code that implements 'deriving.
      * The big changes are in TcDeriv, which is dramatically cleaned up.
        In particular, there is a clear split into
      	a) inference of instance contexts for deriving clauses
      	b) generation of the derived code, given a context 
        Step (a) is skipped for standalone instance decls, which 
        have an explicitly provided context.
      * The handling of "taggery", which is cooperative between TcDeriv and
        TcGenDeriv, is cleaned up a lot
      * I have added documentation for standalone deriving (which was 
        previously wrong).
      * The Haskell report is vague on exactly when a deriving clause should
        succeed.  Prodded by Conal I have loosened the rules slightly, thereyb
        making drv015 work again, and documented the rules in the user manual.
      I believe this patch validates ok (once I've update the test suite)
      and can go into the 6.8 branch.
  9. 29 Aug, 2007 1 commit
  10. 05 Sep, 2007 6 commits
    • Ben.Lippmeier@anu.edu.au's avatar
      Refactor MachRegs.trivColorable to do unboxed accumulation · a8312580
      Ben.Lippmeier@anu.edu.au authored
      trivColorable was soaking up total 31% time, 41% alloc when
      compiling SHA1.lhs with -O2 -fregs-graph on x86.
      Refactoring to use unboxed accumulators and walk directly
      over the UniqFM holding the set of conflicts reduces this 
      to 17% time, 6% alloc.
    • nr@eecs.harvard.edu's avatar
      change of representation for GenCmm, GenCmmTop, CmmProc · 16dc208a
      nr@eecs.harvard.edu authored
      The type parameter to a C-- procedure now represents a control-flow
      graph, not a single instruction.  The newtype ListGraph preserves the 
      current representation while enabling other representations and a
      sensible way of prettyprinting.  Except for a few changes in the
      prettyprinter the new compiler binary should be bit-for-bit identical
      to the old.
    • nr@eecs.harvard.edu's avatar
    • Simon Marlow's avatar
      fix warnings · 81f944da
      Simon Marlow authored
    • Simon Marlow's avatar
      FIX #1650: ".boot modules interact badly with the ghci debugger" · e2782137
      Simon Marlow authored
      In fact hs-boot files had nothing to do with it: the problem was that
      GHCi would forget the breakpoint information for a module that had
      been reloaded but not recompiled.  It's amazing that we never noticed
      this before.
      The ModBreaks were in the ModDetails, which was the wrong place.  When
      we avoid recompiling a module, ModDetails is regenerated from ModIface
      by typecheckIface, and at that point it has no idea what the ModBreaks
      should be, so typecheckIface made it empty.  The right place for the
      ModBreaks to go is with the Linkable, which is retained when
      compilation is avoided.  So now I've placed the ModBreaks in with the
      CompiledByteCode, which also makes it clear that only byte-code
      modules have breakpoints.
      This fixes break022/break023
    • Simon Marlow's avatar
      Fix boot: it was avoiding autoreconfing · b1f0cd39
      Simon Marlow authored
      Two problems here: find needs to dereference symbolic links (-L
      option, I really hope that's portable), and we need to notice when
      aclocal.m4 is updated.  
      Somehow I think this was easier when it just always ran
      autoreconf... what was wrong with that?
  11. 04 Sep, 2007 4 commits
  12. 05 Sep, 2007 2 commits
  13. 03 Sep, 2007 1 commit
    • Ben.Lippmeier@anu.edu.au's avatar
      Do conservative coalescing in register allocator · a7f409e8
      Ben.Lippmeier@anu.edu.au authored
      Avoid coalescing nodes in the register conflict graph if the
      new node will not be trivially colorable. Also remove the
      front end aggressive coalescing pass.
      For typical Haskell code the graph coloring allocator now does
      about as well as the linear allocator.
      For code with a large amount of register pressure it does much
      better, but takes longer.
      For SHA1.lhs from darcs on x86
                spills    reloads    reg-reg-moves
                inserted   inserted  left in code   compile-time
        linear    1068      1311        229            7.69(s)
        graph      387       902        340           16.12(s)
  14. 05 Sep, 2007 1 commit
    • rl@cse.unsw.edu.au's avatar
      Use dlsym on OS X if available · 6f69004a
      rl@cse.unsw.edu.au authored
      On OS X 10.4 and newer, we have to use dlsym because the old NS* interface has
      been deprecated. The patch checks for HAVE_DLFCN_H instead of switching on
      the OS version.
      There is one additional quirk: although OS X prefixes global symbols with an
      underscore, dlsym expects its argument NOT to have a leading underscore. As a
      hack, we simply strip it off in lookupSymbol. Something a bit more elaborate
      might be cleaner.