patch applied (ghc): Turning off case liberation when using the hpc option, for now

Andy Gill andy at galois.com
Wed Jun 20 02:53:20 EDT 2007


Tue Jun 19 23:49:43 PDT 2007  andy at galois.com
  * 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



More information about the Cvs-ghc mailing list