1. 08 Sep, 2000 3 commits
  2. 07 Sep, 2000 14 commits
    • simonpj's avatar
      [project @ 2000-09-07 16:32:23 by simonpj] · 4e6d5798
      simonpj authored
      A list of simplifier-related stuff, triggered
      	by looking at GHC's performance.
      	I don't guarantee that this lot will lead to
      	a uniform improvement over 4.08, but it it should
      	be a bit better.  More work probably required.
      * Make the simplifier's Stop continuation record whether the expression being
        simplified is the RHS of a thunk, or (say) the body of a lambda or case RHS.
        In the thunk case we want to be a bit keener about inlining if the type of
        the thunk is amenable to update in place.
      * Fix interestingArg, which was being too liberal, and hence doing
        too much inlining.
      * Extended CoreUtils.exprIsCheap to make two more things cheap:
          - 	case (coerce x) of ...
          -   let x = y +# z
        This makes a bit more eta expansion happen.  It was provoked by
        a program of Marcin's.
      * MkIface.ifaceBinds.   Make sure that we emit rules for things
        (like class operations) that don't get a top-level binding in the
        interface file.  Previously such rules were silently forgotten.
      * Move transformRhs to *after* simplification, which makes it a
        little easier to do, and means that the arity it computes is
        readily available to completeBinding.  This gets much better
      * Do coerce splitting in completeBinding. This gets good code for
      	newtype CInt = CInt Int
      	test:: CInt -> Int
      	test x = case x of
      	      	   1 -> 2
      	      	   2 -> 4
      	      	   3 -> 8
      	      	   4 -> 16
      	      	   _ -> 0
      * Modify the meaning of "arity" so that during compilation it means
        "if you apply this function to fewer args, it will do virtually
        no work".   So, for example
      	f = coerce t (\x -> e)
        has arity at least 1.  When a function is exported, it's arity becomes
        the number of exposed, top-level lambdas, which is subtly different.
        But that's ok.
        I removed CoreUtils.exprArity altogether: it looked only at the exposed
        lambdas.  Instead, we use exprEtaExpandArity exclusively.
        All of this makes I/O programs work much better.
    • simonpj's avatar
      [project @ 2000-09-07 16:31:45 by simonpj] · e9f0fa88
      simonpj authored
      * The simplifier used to glom together all the top-level bindings into
        a single Rec every time it was invoked.  The reason for this is explained
        in SimplCore.lhs, but for at least one simple program it meant that the
        simplifier never got around to unravelling the recursive group into
        non-recursive pieces.  So I've put the glomming under explicit flag
        control with a -fglom-binds simplifier pass.   A side benefit is
        that because it happens less often, the (expensive) SCC algorithm
        runs less often.
    • simonpj's avatar
      [project @ 2000-09-07 16:29:36 by simonpj] · 0f70a20e
      simonpj authored
      Omit unnecessary import
    • simonpj's avatar
      [project @ 2000-09-07 16:28:44 by simonpj] · 2c7fe84e
      simonpj authored
      Do the begin-pass/end-pass stuff like the other core passes
    • simonpj's avatar
      [project @ 2000-09-07 16:27:55 by simonpj] · 5439bab7
      simonpj authored
      Add comment
    • simonpj's avatar
      [project @ 2000-09-07 16:25:32 by simonpj] · 17fff931
      simonpj authored
      Add an access function substEnvEnv
    • simonpj's avatar
      [project @ 2000-09-07 16:24:14 by simonpj] · cefef156
      simonpj authored
      Get the worker and wrapper in the right order
    • simonpj's avatar
      [project @ 2000-09-07 13:25:28 by simonpj] · 04a28507
      simonpj authored
      Primitives can return ThreadId# values
    • simonpj's avatar
      [project @ 2000-09-07 11:42:49 by simonpj] · c77080dd
      simonpj authored
      1) Fix a bad bug in Subst.lhs that made uniqAway go into an
         infinite loop when the 'hash code' in the in-scope set was
      2) Rename BasicTypes.isFragileOccInfo to isFragileOcc
         Add isDeadOcc to BasisTypes
      (2) is just a tidy-up.  I have to commit it now because of (1), which
      is a bad bug.  I hope that I've committed all the files involved in (2).
    • rrt's avatar
      [project @ 2000-09-07 11:23:59 by rrt] · 02086d37
      rrt authored
      Added support for building gmp.dll again.
    • rrt's avatar
      [project @ 2000-09-07 11:23:22 by rrt] · 0221fd81
      rrt authored
      Gave version of RedHat in DocBook note.
    • rrt's avatar
      [project @ 2000-09-07 11:22:28 by rrt] · 3e27303f
      rrt authored
      Added note on how to fix RedHat 6.2 DocBook installation.
    • simonpj's avatar
      [project @ 2000-09-07 10:14:52 by simonpj] · 1264eac2
      simonpj authored
      Improve -ddump-types
    • simonpj's avatar
      [project @ 2000-09-07 09:10:07 by simonpj] · c1994342
      simonpj authored
      * Make the desugarer use string equality for string literal
        patterns longer than 1 character.  And put a specialised
        eqString into PrelBase, with a suitable specialisation rule.
        This makes a huge difference to the size of the code generated
        by deriving(Read) notably in Time.lhs
  3. 06 Sep, 2000 10 commits
  4. 05 Sep, 2000 11 commits
  5. 04 Sep, 2000 2 commits