1. 17 Jun, 2011 1 commit
  2. 14 Jun, 2011 6 commits
  3. 13 Jun, 2011 4 commits
  4. 10 Jun, 2011 1 commit
  5. 09 Jun, 2011 1 commit
    • Ian Lynagh's avatar
      Refactor SrcLoc and SrcSpan · b2bd63f9
      Ian Lynagh authored
      The "Unhelpful" cases are now in a separate type. This allows us to
      improve various things, e.g.:
      * Most of the panic's in SrcLoc are now gone
      * The Lexer now works with RealSrcSpans rather than SrcSpans, i.e. it
        knows that it has real locations and thus can assume that the line
        number etc really exists
      * Some of the more suspicious cases are no longer necessary, e.g.
        we no longer need this case in advanceSrcLoc:
            advanceSrcLoc loc _ = loc -- Better than nothing
      
      More improvements can probably be made, e.g. tick locations can
      probably use RealSrcSpans too.
      b2bd63f9
  6. 01 Jun, 2011 2 commits
    • tibbe's avatar
      Fold constants during forward substitution in the Cmm mini-inliner · e97f2980
      tibbe authored
      This exposes new constants that can be propagated.
      e97f2980
    • tibbe's avatar
      Implement forward substitution of constants in the Cmm mini-inliner · ea44eadf
      tibbe authored
      Currently the mini-inliner would only forward substitute assignments
      to registers that were used exactly once, to not risk duplicating
      computation.  For constants there's no such risk so we always
      substitute.  Prior to the change the Cmm
      
          fn
          {
              bits64 a, b;
      
              a = 1;
              b = a + a;
              RET_N(b);
          }
      
      would be optimized as
      
          fn()    { []
                  }
              ca: _cb::I64 = 1;
                  R1 = _cb::I64 + _cb::I64;
                  jump (I64[Sp + 0]) ();
          }
      
      but after it would be optimized as
      
          fn()    { []
                  }
              ca: R1 = 2;
                  jump (I64[Sp + 0]) ();
          }
      
      Note that this pass does not deal with the now dead assignment.
      ea44eadf
  7. 31 May, 2011 1 commit
  8. 19 May, 2011 1 commit
  9. 15 May, 2011 5 commits
  10. 11 May, 2011 1 commit
  11. 09 May, 2011 1 commit
  12. 07 May, 2011 1 commit
  13. 05 May, 2011 1 commit
  14. 01 May, 2011 1 commit
  15. 30 Apr, 2011 2 commits
  16. 27 Apr, 2011 2 commits
  17. 26 Apr, 2011 2 commits
  18. 19 Apr, 2011 2 commits
    • Ian Lynagh's avatar
      Don't generate a prototype for cas · 40859045
      Ian Lynagh authored
      I'm not sure if this is the best way to fix this, but it fixes the
      unreg build.
      40859045
    • Simon Peyton Jones's avatar
      This BIG PATCH contains most of the work for the New Coercion Representation · fdf86568
      Simon Peyton Jones authored
      See the paper "Practical aspects of evidence based compilation in System FC"
      
      * Coercion becomes a data type, distinct from Type
      
      * Coercions become value-level things, rather than type-level things,
        (although the value is zero bits wide, like the State token)
        A consequence is that a coerion abstraction increases the arity by 1
        (just like a dictionary abstraction)
      
      * There is a new constructor in CoreExpr, namely Coercion, to inject
        coercions into terms
      fdf86568
  19. 15 Apr, 2011 4 commits
  20. 13 Apr, 2011 1 commit