Skip to content
  • Simon Peyton Jones's avatar
    Improve LiberateCase · 800009d9
    Simon Peyton Jones authored
    This patch, which fixes Trac #14566, makes LiberateCase a little
    more conservative.  In particular:
    
    * In libCaseBind, treat a recursive group as a whole, rather than
      binding-by-binding, allowing the group to be duplicated only if
        - the bindings /considered together/ are smaller than the
          liberate-case threshold (which is large by default)
        - none of them are thunks
        - none of them are guaranteed-diverging
    
      The latter condidtion is new, and happens to apply in the
      case of Data/Typeable/Internal.mkTrApp
    800009d9