Tue Jun 19 23:49:43 PDT 2007  [EMAIL PROTECTED]
  * Turning off case liberation when using the hpc option, for now
  
  Consider the following code
  
       f = g (case v of
                V a b -> a : t f)
  
  where g is expensive. Liberate case will turn this into
  
       f = g (case v of
               V a b -> a : t (letrec f = g (case v of
                                             V a b -> a : f t)
                                in f)
             )
  
  Yikes! We evaluate g twice. This leads to a O(2^n) explosion
  if g calls back to the same code recursively.
  
  This happen sometimes in HPC, because every tick is a liberate-able case,
  but is a general problem to case liberation (I think). 
  

    M ./compiler/main/DynFlags.hs -1 +2

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to