opt_UF_KeenessFactor,
opt_UF_CheapOp, opt_UF_DearOp,
opt_UnfoldCasms, opt_PprStyle_Debug,
- opt_D_dump_inlinings
+ DynFlags, dopt_D_dump_inlinings
)
import CoreSyn
import PprCore ( pprCoreExpr )
StrictAnal.addStrictnessInfoToTopId
\begin{code}
-callSiteInline :: Bool -- True <=> the Id is black listed
+callSiteInline :: DynFlags
+ -> Bool -- True <=> the Id is black listed
-> Bool -- 'inline' note at call site
-> OccInfo
-> Id -- The Id
-> Maybe CoreExpr -- Unfolding, if any
-callSiteInline black_listed inline_call occ id arg_infos interesting_cont
+callSiteInline dflags black_listed inline_call occ id arg_infos interesting_cont
= case idUnfolding id of {
NoUnfolding -> Nothing ;
OtherCon cs -> Nothing ;
in
#ifdef DEBUG
- if opt_D_dump_inlinings then
+ if dopt_D_dump_inlinings dflags then
pprTrace "Considering inlining"
(ppr id <+> vcat [text "black listed:" <+> ppr black_listed,
text "occ info:" <+> ppr occ,
import SrcLoc ( SrcLoc, noSrcLoc )
import Util ( sortLt )
import Outputable
+import CmdLineOpts ( DynFlags )
import System ( ExitCode(..), exitWith )
import IO ( hPutStr, stderr )
\begin{code}
dumpIfSet :: DynFlags -> (DynFlags -> Bool) -> String -> SDoc -> IO ()
-dumpIfSet flag hdr doc
- | not flag = return ()
- | otherwise = printDump dump
+dumpIfSet dflags flag hdr doc
+ | not (flag dflags) = return ()
+ | otherwise = printDump dump
where
dump = vcat [text "",
line <+> text hdr <+> line,
TauType, ClassContext )
import Unique ( incrUnique, mkTupleTyConUnique, mkTupleDataConUnique )
import PrelNames
-import CmdLineOpts ( opt_GlasgowExts )
+import CmdLineOpts ( DynFlags, dopt_GlasgowExts )
import Array
import Maybe ( fromJust )
import FiniteMap ( lookupFM )
being the )
\begin{code}
-isFFIArgumentTy :: Bool -> Type -> Bool
+isFFIArgumentTy :: DynFlags -> Bool -> Type -> Bool
-- Checks for valid argument type for a 'foreign import'
-isFFIArgumentTy is_safe ty = checkRepTyCon (legalOutgoingTyCon is_safe) ty
+isFFIArgumentTy dflags is_safe ty
+ = checkRepTyCon (legalOutgoingTyCon dflags is_safe) ty
isFFIExternalTy :: Type -> Bool
-- Types that are allowed as arguments of a 'foreign export'
-- bytearrays from a _ccall_ / foreign declaration
-- (or be passed them as arguments in foreign exported functions).
legalIncomingTyCon tc
- | getUnique tc `elem` [ foreignObjTyConKey, byteArrayTyConKey, mutableByteArrayTyConKey ]
+ | getUnique tc `elem` [ foreignObjTyConKey, byteArrayTyConKey,
+ mutableByteArrayTyConKey ]
= False
-- It's also illegal to make foreign exports that take unboxed
-- arguments. The RTS API currently can't invoke such things. --SDM 7/2000
| otherwise
= boxedMarshalableTyCon tc
-legalOutgoingTyCon :: Bool -> TyCon -> Bool
+legalOutgoingTyCon :: DynFlags -> Bool -> TyCon -> Bool
-- Checks validity of types going from Haskell -> external world
-- The boolean is true for a 'safe' call (when we don't want to
-- pass Haskell pointers to the world)
-legalOutgoingTyCon be_safe tc
+legalOutgoingTyCon dflags be_safe tc
| be_safe && getUnique tc `elem` [byteArrayTyConKey, mutableByteArrayTyConKey]
= False
| otherwise
- = marshalableTyCon tc
+ = marshalableTyCon dflags tc
-marshalableTyCon tc
- = (opt_GlasgowExts && isUnLiftedTyCon tc)
+marshalableTyCon dflags tc
+ = (dopt_GlasgowExts dflags && isUnLiftedTyCon tc)
|| boxedMarshalableTyCon tc
boxedMarshalableTyCon tc