1. 12 Aug, 2006 1 commit
  2. 23 Aug, 2006 2 commits
  3. 22 Aug, 2006 8 commits
  4. 21 Aug, 2006 4 commits
    • Simon Marlow's avatar
      fixes to PPC version of cas(), from David Kirkman <dkirkman@gmail.com> · 7adc29e8
      Simon Marlow authored
      From David's email:
      The problem is that the inline assembler code was placing the result
      of an operation in a register that is used as input later in the code.
      At the bottom of this message I've extracted a short short code
      fragment that you can run through gcc (on a powerpc machine) to see
      the generated assembly output.
      The changes to fix the problem are fairly simple.  The first adds an
      ampersand to the output list of the assembly fragment ("=r" (result)
      --> "=&r" (result)) The ampersand just tells gcc that result can not
      be placed in a register used for any of the input parameters (o, n, or
      p).  Otherwise, it feels free to place output parameters in the same
      registers used by the inputs -- but because of the flow of control
      here we need everything in a distinct register.  This change fixes the
      TVar program above.
      The second change adds a clobber list (the :"cc", "memory").  This
      tells gcc that the condition code (due to the compare) and memory (due
      to the store) might be changed during the asm execution.  The lack of
      a clobber list did not seem to be causing any trouble, but without it
      gcc is free to assume that no state is changed during the execution.
    • Simon Marlow's avatar
      Always use -funbox-strict-fields for Binary · 3b1f598f
      Simon Marlow authored
      For some reason this was only enabled when $(bootstrapped)=YES.  This
      would be one reason why the stage1 compiler is slow.  I guess we'll
      find out if anything goes wrong.
    • Simon Marlow's avatar
    • Simon Marlow's avatar
  5. 16 Aug, 2006 1 commit
  6. 21 Aug, 2006 2 commits
  7. 20 Aug, 2006 1 commit
  8. 21 Aug, 2006 3 commits
  9. 19 Aug, 2006 1 commit
  10. 18 Aug, 2006 7 commits
  11. 17 Aug, 2006 6 commits
  12. 16 Aug, 2006 4 commits
    • simonpj@microsoft.com's avatar
      Add ad-hoc typing checks for tagToEnum# · c938c386
      simonpj@microsoft.com authored
      The problem with tagToEnum# is that it is not overloaded (in the
      Haskell sense) but you are only supposed to apply it to a TyCon
      that is an enumeration (isEnumerationTyCon).
      The Real Way to do this is to have some special kind of type constraint
      for the purpose, but that is wild overkill. So this patch adds a small
      rather ad-hoc check to TcExpr.instFun.  Crude, simple, but it works fine.
      Fixes Trac #786
      Test is tcfail164
    • simonpj@microsoft.com's avatar
      Get dead-ness right in knownCon · c55001c5
      simonpj@microsoft.com authored
    • simonpj@microsoft.com's avatar
      Tuning for argToPat · d66ea3ef
      simonpj@microsoft.com authored
      argToPat is a crucial function for SpecConstr, because it decides
      what patterns are worth specialising.  I was being much too gung-ho about
      constants.  This patch makes it much better.
    • simonpj@microsoft.com's avatar
      Re-factor mkAtomicArgs and completeNonRecX · ad0cc1df
      simonpj@microsoft.com authored
      This refactoring ensures that when mkAtomicArgs adds new bindings,
      it does so using completeNonRecX, which adds unfoldings etc.  More
      modular, and saves passes too.
      (This was important when getting rules to work right.  We want tob
      fire a rule as soon as possible, taking into account all inlinings,
      else a less-good rule applies.  That's what I found when doing 
      stream fusion anyway.)
      Regardless, this is an improvement.