1. 16 Jan, 2012 2 commits
  2. 15 Jan, 2012 7 commits
  3. 14 Jan, 2012 7 commits
  4. 13 Jan, 2012 14 commits
  5. 12 Jan, 2012 10 commits
    • Simon Peyton Jones's avatar
    • Simon Peyton Jones's avatar
      Fix if-def-ery for DEBUG · 4ada19d8
      Simon Peyton Jones authored
    • Simon Peyton Jones's avatar
      Comments only · 3b75c4e6
      Simon Peyton Jones authored
    • Simon Peyton Jones's avatar
      Fix Trac #5658: strict bindings not floated in · 3beb1a83
      Simon Peyton Jones authored
      Two changes here
      * The main change here is to enhance the FloatIn pass so that it can
        float case-bindings inwards.  In particular the case bindings for
        array indexing.
      * Also change the code in Simplify, to allow a case on array
        indexing (ie can_fail is true) to be discarded altogether if its
        results are unused.
      Lots of new comments in PrimOp about can_fail and has_side_effects
      Some refactoring to share the FloatBind data structure between
      FloatIn and FloatOut
    • Simon Peyton Jones's avatar
    • Simon Peyton Jones's avatar
    • Simon Peyton Jones's avatar
      Implememt -fdefer-type-errors (Trac #5624) · 5508ada4
      Simon Peyton Jones authored
      This patch implements the idea of deferring (most) type errors to
      runtime, instead emitting only a warning at compile time.  The
      basic idea is very simple:
       * The on-the-fly unifier in TcUnify never fails; instead if it
         gets stuck it emits a constraint.
       * The constraint solver tries to solve the constraints (and is
         entirely unchanged, hooray).
       * The remaining, unsolved constraints (if any) are passed to
         TcErrors.reportUnsolved.  With -fdefer-type-errors, instead of
         emitting an error message, TcErrors emits a warning, AND emits
         a binding for the constraint witness, binding it
         to (error "the error message"), via the new form of evidence
         TcEvidence.EvDelayedError.  So, when the program is run,
         when (and only when) that witness is needed, the program will
         crash with the exact same error message that would have been
         given at compile time.
      Simple really.  But, needless to say, the exercise forced me
      into some major refactoring.
       * TcErrors is almost entirely rewritten
       * EvVarX and WantedEvVar have gone away entirely
       * ErrUtils is changed a bit:
           * New Severity field in ErrMsg
           * Renamed the type Message to MsgDoc (this change
             touches a lot of files trivially)
       * One minor change is that in the constraint solver we try
         NOT to combine insoluble constraints, like Int~Bool, else
         all such type errors get combined together and result in
         only one error message!
       * I moved some definitions from TcSMonad to TcRnTypes,
         where they seem to belong more
    • Simon Marlow's avatar
    • dterei's avatar
      Use Type Based Alias Analysis (TBAA) in LLVM backend (#5567) · 71e5ee7d
      dterei authored
      TBAA allows us to specify a type hierachy in metadata with
      the property that nodes on different branches don't alias.
      This should somewhat improve the optimizations LLVM does that
      rely on alias information.
    • dterei's avatar
      Add Metadata support to LLVM bindings. · 0f15f8a7
      dterei authored