1. 08 Aug, 2007 4 commits
  2. 07 Aug, 2007 12 commits
  3. 03 Aug, 2007 3 commits
  4. 09 Aug, 2007 6 commits
  5. 03 Aug, 2007 1 commit
  6. 09 Aug, 2007 1 commit
  7. 14 Jul, 2007 1 commit
    • Clemens Fruhwirth's avatar
      joinToTargets to emit fixup code even when movement graph contains cycles · 64f0661e
      Clemens Fruhwirth authored
      First, cycles can only start of with registers and their destination
      must involve a register location. This is because memory locations are
      allocated exclusively for a virtual register and hence can never cause
      a conflict in the assignment, hence need no fixup code. Therefore, we
      only have to deal with InReg -> InReg, or InReg -> InReg/InMem
      The strategy is to take the first cycle element, which is guaranteed
      to start with a register, spill it to a fresh memory location, compute
      the fixup for the rest, and restore from the spill slot to its
      destinations. The "rest" will degenerate into an acyclic scc, so we do
      not need take care of the empty list case in CyclicScc. 
      Place the long patch description above the ***END OF DESCRIPTION*** marker.
      The first line of this file will be the patch name.
      This patch contains the following changes:
      M ./compiler/nativeGen/RegisterAlloc.hs -6 +27
  8. 05 Aug, 2007 2 commits
    • simonpj@microsoft.com's avatar
      Make SpecConstr specialise for constant arguments again · 57a4597d
      simonpj@microsoft.com authored
        lvl = Just True
        foo :: Maybe Bool -> Int -> Int
        foo (Just True) i = i
        foo _           i = foo lvl i
      SpecConstr should specialise foo, but it wasn't doing so (spotted
      by Roman).
      Reason: lvl's unfolding wasn't in the cloned version of lvl.
      Solution: extend the value environment to record top-level bindings too
      At the same time I made it work if 'lvl' is a lambda, in which case it
      is again worth specialisg.  This meant renaming ConEnv to ValueEnv,
      and adding a case for 'LambdaVal'.
      (To make specialisation on lambdas work properly, we have to do lambda
      lifting as well, but this gets part of the way, and fixes a bug too.)
    • simonpj@microsoft.com's avatar
  9. 04 Aug, 2007 4 commits
  10. 09 Aug, 2007 1 commit
  11. 08 Aug, 2007 2 commits
  12. 07 Aug, 2007 1 commit
  13. 06 Aug, 2007 1 commit
  14. 07 Aug, 2007 1 commit