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