Tag ForeignCalls with the package they correspond to
[ghc-hetmet.git] / compiler / main / StaticFlags.hs
index 3bcf28c..56242b7 100644 (file)
@@ -51,6 +51,7 @@ module StaticFlags (
        opt_UF_CreationThreshold,
        opt_UF_UseThreshold,
        opt_UF_FunAppDiscount,
+       opt_UF_DictDiscount,
        opt_UF_KeenessFactor,
        opt_UF_DearOp,
 
@@ -72,6 +73,7 @@ module StaticFlags (
        v_Ld_inputs,
        tablesNextToCode,
         opt_StubDeadValues,
+        opt_Ticky,
 
     -- For the parser
     addOpt, removeOpt, addWay, getWayFlags, v_opt_C_ready
@@ -251,23 +253,26 @@ opt_SimplExcessPrecision :: Bool
 opt_SimplExcessPrecision       = lookUp  (fsLit "-fexcess-precision")
 
 -- Unfolding control
-opt_UF_CreationThreshold :: Int
-opt_UF_CreationThreshold       = lookup_def_int "-funfolding-creation-threshold"  (45::Int)
-opt_UF_UseThreshold :: Int
-opt_UF_UseThreshold            = lookup_def_int "-funfolding-use-threshold"       (6::Int)     -- Discounts can be big
-opt_UF_FunAppDiscount :: Int
-opt_UF_FunAppDiscount          = lookup_def_int "-funfolding-fun-discount"        (6::Int)     -- It's great to inline a fn
+-- See Note [Discounts and thresholds] in CoreUnfold
+
+opt_UF_CreationThreshold, opt_UF_UseThreshold :: Int
+opt_UF_DearOp, opt_UF_FunAppDiscount, opt_UF_DictDiscount :: Int
 opt_UF_KeenessFactor :: Float
-opt_UF_KeenessFactor           = lookup_def_float "-funfolding-keeness-factor"    (1.5::Float)
 
-opt_UF_DearOp :: Int
-opt_UF_DearOp   = ( 4 :: Int)
+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_KeenessFactor    = lookup_def_float "-funfolding-keeness-factor"   (1.5::Float)
+opt_UF_DearOp            = ( 4 :: Int)
 
 
 -- Related to linking
 opt_PIC :: Bool
 #if darwin_TARGET_OS && x86_64_TARGET_ARCH
 opt_PIC                         = True
+#elif darwin_TARGET_OS
+opt_PIC                         = lookUp (fsLit "-fPIC") || not opt_Static
 #else
 opt_PIC                         = lookUp (fsLit "-fPIC")
 #endif
@@ -288,6 +293,8 @@ tablesNextToCode            = not opt_Unregisterised
 opt_ErrorSpans :: Bool
 opt_ErrorSpans                 = lookUp (fsLit "-ferror-spans")
 
+opt_Ticky :: Bool
+opt_Ticky                       = lookUp (fsLit "-ticky")
 
 -- object files and libraries to be linked in are collected here.
 -- ToDo: perhaps this could be done without a global, it wasn't obvious
@@ -304,7 +311,7 @@ GLOBAL_VAR(v_Ld_inputs,     [],      [String])
 -- non-profiling objects.
 
 -- After parsing the command-line options, we determine which "way" we
--- are building - this might be a combination way, eg. profiling+ticky-ticky.
+-- are building - this might be a combination way, eg. profiling+threaded.
 
 -- We then find the "build-tag" associated with this way, and this
 -- becomes the suffix used to find .hi files and libraries used in
@@ -315,7 +322,6 @@ data WayName
   | WayDebug
   | WayProf
   | WayEventLog
-  | WayTicky
   | WayPar
   | WayGran
   | WayNDP
@@ -336,11 +342,6 @@ allowed_combination way = and [ x `allowedWith` y
        _ `allowedWith` WayDyn                  = True
        WayDyn `allowedWith` _                  = True
 
-       -- ticky is (now) allowed with everything
-       -- Indeed, ticky should no longer be a 'way' at all
-       _ `allowedWith` WayTicky                = True
-       WayTicky `allowedWith` _                = True
-
        -- debug is allowed with everything
        _ `allowedWith` WayDebug                = True
        WayDebug `allowedWith` _                = True
@@ -406,7 +407,14 @@ way_details =
 
     Way WayDyn "dyn" False "Dynamic"
        [ "-DDYNAMIC"
-       , "-optc-DDYNAMIC" ],
+       , "-optc-DDYNAMIC" 
+#if defined(mingw32_TARGET_OS)
+       -- On Windows, code that is to be linked into a dynamic library must be compiled
+       --      with -fPIC. Labels not in the current package are assumed to be in a DLL 
+       --      different from the current one.
+       , "-fPIC"
+#endif
+       ],
 
     Way WayProf "p" False "Profiling"
        [ "-fscc-profiling"
@@ -417,10 +425,6 @@ way_details =
        [ "-DTRACING"
        , "-optc-DTRACING" ],
 
-    Way WayTicky "t" True "Ticky-ticky Profiling"  
-       [ "-DTICKY_TICKY"
-       , "-optc-DTICKY_TICKY" ],
-
     Way WayPar "mp" False "Parallel" 
        [ "-fparallel"
        , "-D__PARALLEL_HASKELL__"