%
% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
%
-% $Id: CgTailCall.lhs,v 1.37 2003/05/14 09:13:56 simonmar Exp $
+% $Id: CgTailCall.lhs,v 1.38 2003/06/02 13:27:34 simonpj Exp $
%
%********************************************************
%* *
import AbsCUtils ( mkAbstractCs, getAmodeRep )
import AbsCSyn
-import CLabel ( mkUpdInfoLabel, mkRtsPrimOpLabel, mkSeqInfoLabel )
+import CLabel ( mkRtsPrimOpLabel, mkSeqInfoLabel )
import Id ( Id, idType, idName )
import DataCon ( DataCon, dataConTyCon, dataConTag, fIRST_TAG )
import AbsCSyn
import CgStackery ( allocStackTop, updateFrameSize, setStackFrame )
-import CgUsages ( getVirtSp, getSpRelOffset )
+import CgUsages ( getVirtSp )
import Panic ( assertPanic )
\end{code}
tyVarsOfType, mkForAllTys, mkTyConApp,
isPrimitiveType, splitTyConApp_maybe,
splitNewType_maybe, splitForAllTy_maybe,
- splitTyConApp,
isUnboxedTupleType
)
unboxedSingletonTyCon, unboxedPairTyCon,
trueDataCon, falseDataCon,
trueDataConId, falseDataConId,
- listTyCon, charTyCon, stringTy,
+ listTyCon, charTyCon,
tupleTyCon, tupleCon
)
import BasicTypes ( Boxity(..) )
import Desugar
import Flattening ( flatten )
import SimplCore
-import CoreUtils ( coreBindsSize )
import TidyPgm ( tidyCorePgm )
import CorePrep ( corePrepPgm )
import StgSyn
import ParserCoreUtils
import FiniteMap ( emptyFM )
import Name ( nameModule )
-import NameEnv ( emptyNameEnv )
-import NameSet ( emptyNameSet )
import Module ( Module, ModLocation(..), showModMsg )
import FastString
import Maybes ( expectJust )
import Util ( naturalMergeSortLe )
import Panic ( panic )
import TyCon ( tyConDataCons )
-import Constants ( wORD_SIZE, bITMAP_BITS_SHIFT )
import Name ( NamedThing(..) )
-import CmdLineOpts ( opt_Static, opt_EnsureSplittableC )
+import CmdLineOpts ( opt_EnsureSplittableC )
import Outputable ( assertPanic )
-- DEBUGGING ONLY
-- DEBUGGING ONLY
--import OrdList
+#ifdef NCG_DEBUG
import List ( intersperse )
+#endif
\end{code}
The 96/03 native-code generator has machine-independent and
import AbsCSyn ( MagicId(..) )
import CLabel ( CLabel, mkMainCapabilityLabel )
-import MachOp ( MachOp(..) )
import PrimRep ( PrimRep(..), isFloatingRep )
import Stix ( StixExpr(..), StixReg(..),
getUniqueNat, returnNat, thenNat, NatM )
-import Unique ( mkPseudoUnique2, Uniquable(..), Unique )
+import Unique ( Unique )
import Pretty
import Outputable ( Outputable(..), pprPanic, panic )
import qualified Outputable
import CLabel ( pprCLabel, externallyVisibleCLabel, labelDynamic )
import Stix ( CodeSegment(..) )
-import Unique ( pprUnique )
import Panic ( panic )
import Pretty
import FastString
import MachOp ( MachOp(..) )
import PrimRep ( PrimRep(..), getPrimRepSizeInBytes )
import UniqSupply ( returnUs, thenUs, getUniqueUs, UniqSM )
-import Constants ( wORD_SIZE,
- mIN_INTLIKE, mIN_CHARLIKE, uF_UPDATEE, bLOCK_SIZE,
+import Constants ( mIN_INTLIKE, mIN_CHARLIKE, uF_UPDATEE, bLOCK_SIZE,
rESERVED_STACK_WORDS )
import CLabel ( mkIntlikeClosureLabel, mkCharlikeClosureLabel,
mkMAP_FROZEN_infoLabel,
import TcRnMonad
import FiniteMap
-import PrelNames ( pRELUDE_Name, mAIN_Name, isBuiltInSyntaxName )
+import PrelNames ( pRELUDE_Name, isBuiltInSyntaxName )
import Module ( Module, ModuleName, ModuleEnv, moduleName,
moduleNameUserString, isHomeModule,
emptyModuleEnv, unitModuleEnvByName, unitModuleEnv,
Deprecations(..), ModIface(..), Dependencies(..),
GlobalRdrElt(..), unQualInScope, isLocalGRE, pprNameProvenance
)
-import OccName ( varName )
import RdrName ( RdrName, rdrNameOcc, setRdrNameSpace, lookupRdrEnv, rdrEnvToList,
- emptyRdrEnv, foldRdrEnv, rdrEnvElts, mkRdrUnqual, isQual, mkUnqual )
+ emptyRdrEnv, foldRdrEnv, rdrEnvElts, mkRdrUnqual, isQual )
import Outputable
import Maybe ( isJust, isNothing, catMaybes )
import Maybes ( orElse )
#include "HsVersions.h"
-import HsSyn ( HsBinds(..), MonoBinds(..), TyClDecl(..),
+import HsSyn ( HsBinds(..), TyClDecl(..),
andMonoBindList, collectMonoBinders )
import RdrHsSyn ( RdrNameMonoBinds )
-import RnHsSyn ( RenamedHsBinds, RenamedMonoBinds, RenamedTyClDecl, RenamedHsPred )
+import RnHsSyn ( RenamedHsBinds, RenamedTyClDecl, RenamedHsPred )
import CmdLineOpts ( DynFlag(..) )
import TcRnMonad
import MkId ( mkDictFunId )
import DataCon ( dataConOrigArgTys, isNullaryDataCon, isExistentialDataCon )
import Maybes ( maybeToBool, catMaybes )
-import Name ( Name, getSrcLoc, nameUnique )
+import Name ( Name, getSrcLoc )
import Unique ( getUnique )
import NameSet
import RdrName ( RdrName )
import TcExpr ( tcCheckSigma )
import ErrUtils ( Message )
-import Id ( Id, mkLocalId, mkVanillaGlobal, setIdLocalExported )
-import IdInfo ( noCafIdInfo )
+import Id ( Id, mkLocalId, setIdLocalExported )
import PrimRep ( getPrimRepSize, isFloatingRep )
import Type ( typePrimRep )
import OccName ( mkForeignExportOcc )
isFFIDynResultTy, isFFIDotnetTy, isFFIDotnetObjTy,
toDNType
)
-import ForeignCall ( CExportSpec(..), CCallTarget(..), CCallConv(..),
+import ForeignCall ( CExportSpec(..), CCallTarget(..),
isDynamicTarget, isCasmTarget, withDNTypes, DNKind(..), DNCallSpec(..) )
import CStrings ( CLabelString, isCLabelString )
import PrelNames ( hasKey, ioTyConKey )
import VarSet
import Var ( Id )
import Bag
-import Util ( isSingleton, lengthExceeds, notNull, zipEqual )
+import Util ( isSingleton, notNull, zipEqual )
import Outputable
import List ( nub )