Make -funfolding-dict-threshold work properly
authorsimonpj@microsoft.com <unknown>
Thu, 23 Sep 2010 13:00:32 +0000 (13:00 +0000)
committersimonpj@microsoft.com <unknown>
Thu, 23 Sep 2010 13:00:32 +0000 (13:00 +0000)
and increase its default value. This makes overloaded functions
a bit keener to inline.  Which fixes Trac #4321

compiler/main/StaticFlagParser.hs
compiler/main/StaticFlags.hs

index 6536a13..7d499e6 100644 (file)
@@ -194,6 +194,7 @@ isStaticFlag f =
     "fmax-worker-args",
     "fhistory-size",
     "funfolding-creation-threshold",
+    "funfolding-dict-threshold",
     "funfolding-use-threshold",
     "funfolding-fun-discount",
     "funfolding-keeness-factor"
index 52a8694..bc2ae38 100644 (file)
@@ -277,7 +277,11 @@ opt_UF_KeenessFactor :: Float
 opt_UF_CreationThreshold = lookup_def_int "-funfolding-creation-threshold" (45::Int)
 opt_UF_UseThreshold     = lookup_def_int "-funfolding-use-threshold"      (6::Int)
 opt_UF_FunAppDiscount   = lookup_def_int "-funfolding-fun-discount"       (6::Int)
-opt_UF_DictDiscount     = lookup_def_int "-funfolding-dict-discount"      (1::Int)
+
+opt_UF_DictDiscount     = lookup_def_int "-funfolding-dict-discount"      (3::Int)
+   -- Be fairly keen to inline a fuction if that means
+   -- we'll be able to pick the right method from a dictionary
+
 opt_UF_KeenessFactor    = lookup_def_float "-funfolding-keeness-factor"   (1.5::Float)
 opt_UF_DearOp            = ( 4 :: Int)