• simonpj's avatar
    [project @ 1999-07-06 16:45:31 by simonpj] · 9d38678e
    simonpj authored
    All Simon's recent tuning changes.  Rough summary follows:
    * Fix Kevin Atkinson's cant-find-instance bug.  Turns out that Rename.slurpSourceRefs
      needs to repeatedly call getImportedInstDecls, and then go back to slurping
      source-refs.  Comments with Rename.slurpSourceRefs.
    * Add a case to Simplify.mkDupableAlt for the quite-common case where there's
      a very simple alternative, in which case there's no point in creating a
      join-point binding.
    * Fix CoreUtils.exprOkForSpeculation so that it returns True of (==# a# b#).
      This lack meant that
    	case ==# a# b# of { True -> x; False -> x }
      was not simplifying
    * Make float-out dump bindings at the top of a function argument, as
      at the top of a let(rec) rhs.  See notes with FloatOut.floatRhs
    * Make the ArgOf case of mkDupableAlt generate a OneShot lambda.
      This gave a noticeable boost to spectral/boyer2
    * Reduce the number of coerces, using worker/wrapper stuff.
      The main idea is in WwLib.mkWWcoerce.  The gloss is that we must do
      the w/w split even for small non-recursive things.  See notes with
    * This further complicated getWorkerId, so I finally bit the bullet and
      make the workerInfo field of the IdInfo work properly, including
      under substitutions.  Death to getWorkerId.  Kevin Glynn will be happy.
    * Make all lambdas over realWorldStatePrimTy
      into one-shot lambdas.  This is a GROSS HACK.
    * Also make the occurrence analyser aware of one-shot lambdas.
    * Make various Prelude things into INLINE, so that foldr doesn't
      get inlined in their body, so that the caller gets the benefit
      of fusion.  Notably in PrelArr.lhs.
RnIfaces.lhs 33.6 KB