Commit 7d61cb61 authored by partain's avatar partain

[project @ 1996-04-05 08:26:04 by partain]

Add SLPJ/WDP 1.3 changes through 960404
parent b8875f2f
......@@ -95,17 +95,19 @@ hsSyn/HsTypes.lhs \
hsSyn/HsSyn.lhs
#define NOT_SO_BASICSRCS_LHS \
basicTypes/Unique.lhs \
basicTypes/UniqSupply.lhs \
basicTypes/ProtoName.lhs \
basicTypes/Name.lhs \
basicTypes/NameTypes.lhs \
basicTypes/SrcLoc.lhs \
basicTypes/FieldLabel.lhs \
basicTypes/Id.lhs \
basicTypes/IdInfo.lhs \
basicTypes/IdUtils.lhs \
basicTypes/PragmaInfo.lhs \
basicTypes/Literal.lhs \
basicTypes/Name.lhs \
basicTypes/NameTypes.lhs \
basicTypes/PprEnv.lhs \
basicTypes/PragmaInfo.lhs \
basicTypes/ProtoName.lhs \
basicTypes/SrcLoc.lhs \
basicTypes/UniqSupply.lhs \
basicTypes/Unique.lhs \
\
types/Class.lhs \
types/Kind.lhs \
......@@ -181,6 +183,22 @@ deSugar/DsUtils.lhs \
coreSyn/CoreLift.lhs \
coreSyn/CoreLint.lhs
#if GhcWithDeforester != YES
#define __omit_deforester_flag -DOMIT_DEFORESTER=1
#define DEFORESTER_SRCS_LHS /*none*/
#else
#define __omit_deforester_flag /*nope*/
#define DEFORESTER_SRCS_LHS \
deforest/DefSyn.lhs \
deforest/Core2Def.lhs \
deforest/Def2Core.lhs \
deforest/Deforest.lhs \
deforest/DefUtils.lhs \
deforest/DefExpr.lhs \
deforest/Cyclic.lhs \
deforest/TreelessForm.lhs
#endif /* GhcWithDeforester */
#define SIMPL_SRCS_LHS \
coreSyn/AnnCoreSyn.lhs \
coreSyn/FreeVars.lhs \
......@@ -215,30 +233,14 @@ stranal/SaAbsInt.lhs \
stranal/WwLib.lhs \
stranal/WorkWrap.lhs \
\
profiling/SCCauto.lhs \
profiling/SCCfinal.lhs
profiling/SCCauto.lhs DEFORESTER_SRCS_LHS
#if GhcWithDeforester != YES
#define __omit_deforester_flag -DOMIT_DEFORESTER=1
#define DEFORESTER_SRCS_LHS /*none*/
#else
#define __omit_deforester_flag /*nope*/
#define DEFORESTER_SRCS_LHS \
deforest/DefSyn.lhs \
deforest/Core2Def.lhs \
deforest/Def2Core.lhs \
deforest/Deforest.lhs \
deforest/DefUtils.lhs \
deforest/DefExpr.lhs \
deforest/Cyclic.lhs \
deforest/TreelessForm.lhs
#endif /* GhcWithDeforester */
#define BACKSRCS_LHS \
#define STG_SRCS_LHS \
stgSyn/CoreToStg.lhs \
stgSyn/StgSyn.lhs \
stgSyn/StgUtils.lhs \
stgSyn/StgLint.lhs \
profiling/SCCfinal.lhs \
\
simplStg/SatStgRhs.lhs \
simplStg/LambdaLift.lhs \
......@@ -247,8 +249,9 @@ simplStg/UpdAnal.lhs \
simplStg/StgStats.lhs \
simplStg/StgSATMonad.lhs \
simplStg/StgSAT.lhs \
simplStg/SimplStg.lhs \
\
simplStg/SimplStg.lhs
#define BACKSRCS_LHS \
absCSyn/AbsCUtils.lhs \
absCSyn/AbsCSyn.lhs \
absCSyn/CLabel.lhs \
......@@ -283,36 +286,21 @@ codeGen/CgUpdate.lhs
# define NATIVEGEN_SRCS_LHS /*none*/
#else
# define __omit_ncg_maybe /*none*/
# if i386_TARGET_ARCH
# define __machdep_nativegen_lhs \
nativeGen/I386Desc.lhs \
nativeGen/I386Code.lhs \
nativeGen/I386Gen.lhs
# endif
# if sparc_TARGET_ARCH
# define __machdep_nativegen_lhs \
nativeGen/SparcDesc.lhs \
nativeGen/SparcCode.lhs \
nativeGen/SparcGen.lhs
# endif
# if alpha_TARGET_ARCH
# define __machdep_nativegen_lhs \
nativeGen/AlphaDesc.lhs \
nativeGen/AlphaCode.lhs \
nativeGen/AlphaGen.lhs
# endif
# define NATIVEGEN_SRCS_LHS \
nativeGen/AbsCStixGen.lhs \
nativeGen/AsmCodeGen.lhs \
nativeGen/AsmRegAlloc.lhs \
nativeGen/MachDesc.lhs \
nativeGen/MachCode.lhs \
nativeGen/MachMisc.lhs \
nativeGen/MachRegs.lhs \
nativeGen/PprMach.lhs \
nativeGen/RegAllocInfo.lhs \
nativeGen/Stix.lhs \
nativeGen/StixInfo.lhs \
nativeGen/StixInteger.lhs \
nativeGen/StixPrim.lhs \
nativeGen/StixMacro.lhs \
__machdep_nativegen_lhs /*arch-specific ones */
nativeGen/StixMacro.lhs
#endif
#define UTILSRCS_LHS \
......@@ -366,22 +354,20 @@ simplCore/MagicUFs.lhs
ALLSRCS_HS = READERSRCS_HS
ALLSRCS_LHS = /* all pieces of the compiler */ \
VBASICSRCS_LHS \
NOT_SO_BASICSRCS_LHS \
UTILSRCS_LHS \
MAIN_SRCS_LHS \
READERSRCS_LHS \
RENAMERSRCS_LHS \
TCSRCS_LHS \
DSSRCS_LHS
VBASICSRCS_LHS \
NOT_SO_BASICSRCS_LHS \
UTILSRCS_LHS \
MAIN_SRCS_LHS \
READERSRCS_LHS \
RENAMERSRCS_LHS \
TCSRCS_LHS \
DSSRCS_LHS \
SIMPL_SRCS_LHS \
STG_SRCS_LHS \
BACKSRCS_LHS NATIVEGEN_SRCS_LHS
/*
SIMPL_SRCS_LHS
BACKSRCS_LHS
*/
/*
NATIVEGEN_SRCS_LHS DEFORESTER_SRCS_LHS */
/* NB: all the ones that may be empty (e.g., NATIVEGEN_SRCS_LHS)
need to be on the last line.
*/
......@@ -405,13 +391,6 @@ ALLINTS=$(ALLSRCS_LHS:.lhs=.hi) $(ALLSRCS_HS:.hs=.hi)
#define __version_sensitive_flags -fomit-reexported-instances
#endif
#if GhcWithRegisterised == NO
/* doing a raw boot from .hc files, presumably */
#define __unreg_opts_maybe -O -unregisterised
#else
#define __unreg_opts_maybe /*none*/
#endif
/* avoid use of AllProjectsHcOpts; then put in HcMaxHeapFlag "by hand" */
#undef AllProjectsHcOpts
#define AllProjectsHcOpts /**/
......@@ -419,10 +398,9 @@ ALLINTS=$(ALLSRCS_LHS:.lhs=.hi) $(ALLSRCS_HS:.hs=.hi)
HC_OPTS = -cpp HcMaxHeapFlag -fhaskell-1.3 -fglasgow-exts -DCOMPILING_GHC \
-fomit-derived-read \
-I. -i$(SUBDIR_LIST) \
use_DDEBUG __version_sensitive_flags __unreg_opts_maybe __omit_ncg_maybe
use_DDEBUG __version_sensitive_flags __omit_ncg_maybe __omit_deforester_flag
#undef __version_sensitive_flags
#undef __unreg_opts_maybe
#undef __omit_ncg_maybe
#undef __omit_deforester_flag
......@@ -505,14 +483,22 @@ HaskellCompileWithExtraFlags_Recursive(module,isuf,o,-c,extra_flags)
utils/Ubiq.hi : utils/Ubiq.lhi
$(GHC_UNLIT) utils/Ubiq.lhi utils/Ubiq.hi
absCSyn/AbsCLoop.hi : absCSyn/AbsCLoop.lhi
$(GHC_UNLIT) absCSyn/AbsCLoop.lhi absCSyn/AbsCLoop.hi
basicTypes/IdLoop.hi : basicTypes/IdLoop.lhi
$(GHC_UNLIT) basicTypes/IdLoop.lhi basicTypes/IdLoop.hi
basicTypes/NameLoop.hi : basicTypes/NameLoop.lhi
$(GHC_UNLIT) basicTypes/NameLoop.lhi basicTypes/NameLoop.hi
codeGen/CgLoop1.hi : codeGen/CgLoop1.lhi
$(GHC_UNLIT) codeGen/CgLoop1.lhi codeGen/CgLoop1.hi
codeGen/CgLoop2.hi : codeGen/CgLoop2.lhi
$(GHC_UNLIT) codeGen/CgLoop2.lhi codeGen/CgLoop2.hi
deSugar/DsLoop.hi : deSugar/DsLoop.lhi
$(GHC_UNLIT) deSugar/DsLoop.lhi deSugar/DsLoop.hi
hsSyn/HsLoop.hi : hsSyn/HsLoop.lhi
$(GHC_UNLIT) hsSyn/HsLoop.lhi hsSyn/HsLoop.hi
nativeGen/NcgLoop.hi : nativeGen/NcgLoop.lhi
$(GHC_UNLIT) nativeGen/NcgLoop.lhi nativeGen/NcgLoop.hi
prelude/PrelLoop.hi : prelude/PrelLoop.lhi
$(GHC_UNLIT) prelude/PrelLoop.lhi prelude/PrelLoop.hi
reader/RdrLoop.hi : reader/RdrLoop.lhi
......@@ -548,12 +534,14 @@ compile(hsSyn/HsPragmas,lhs,)
compile(hsSyn/HsTypes,lhs,)
compile(hsSyn/HsSyn,lhs,if_ghc(-fno-omit-reexported-instances))
compile(basicTypes/FieldLabel,lhs,)
compile(basicTypes/Id,lhs,)
compile(basicTypes/IdInfo,lhs,-K2m)
compile(basicTypes/IdUtils,lhs,)
compile(basicTypes/Literal,lhs,)
compile(basicTypes/Name,lhs,)
compile(basicTypes/NameTypes,lhs,)
compile(basicTypes/PprEnv,lhs,)
compile(basicTypes/PragmaInfo,lhs,)
compile(basicTypes/ProtoName,lhs,)
compile(basicTypes/SrcLoc,lhs,)
......@@ -611,27 +599,16 @@ compile(main/MkIface,lhs,)
compile(nativeGen/AbsCStixGen,lhs,)
compile(nativeGen/AsmCodeGen,lhs,-I$(COMPINFO_DIR))
compile(nativeGen/AsmRegAlloc,lhs,-I$(COMPINFO_DIR))
compile(nativeGen/MachDesc,lhs,)
compile(nativeGen/MachCode,lhs,)
compile(nativeGen/MachMisc,lhs,)
compile(nativeGen/MachRegs,lhs,)
compile(nativeGen/PprMach,lhs,)
compile(nativeGen/RegAllocInfo,lhs,)
compile(nativeGen/Stix,lhs,)
compile(nativeGen/StixInfo,lhs,-I$(NATIVEGEN_DIR))
compile(nativeGen/StixInteger,lhs,)
compile(nativeGen/StixMacro,lhs,-I$(NATIVEGEN_DIR))
compile(nativeGen/StixPrim,lhs,)
# if i386_TARGET_ARCH
compile(nativeGen/I386Desc,lhs,)
compile(nativeGen/I386Code,lhs,-I$(NATIVEGEN_DIR) if_ghc(-monly-4-regs))
compile(nativeGen/I386Gen,lhs,)
# endif
# if sparc_TARGET_ARCH
compile(nativeGen/SparcDesc,lhs,)
compile(nativeGen/SparcCode,lhs,-I$(NATIVEGEN_DIR))
compile(nativeGen/SparcGen,lhs,)
# endif
# if alpha_TARGET_ARCH
compile(nativeGen/AlphaDesc,lhs,)
compile(nativeGen/AlphaCode,lhs,-I$(NATIVEGEN_DIR))
compile(nativeGen/AlphaGen,lhs,)
# endif
#endif
compile(prelude/PrelInfo,lhs,)
......@@ -923,7 +900,7 @@ compile(parser/U_ttype,hs,$(PARSER_HS_OPTS) '-#include"hspincl.h"')
/* *** misc *************************************************** */
DEPSRCS = $(ALLSRCS_LHS) $(ALLSRCS_HS) SIMPL_SRCS_LHS
DEPSRCS = $(ALLSRCS_LHS) $(ALLSRCS_HS)
#if GhcWithHscBuiltViaC == NO
MKDEPENDHS_OPTS= -I$(MAIN_INCLUDE_DIR) -I$(COMPINFO_DIR) -x HsVersions.h
......
Breaks the loop caused by PprAbsC needing to
see big swathes of ClosureInfo.
Also from CLabel needing a couple of CgRetConv things.
Also from HeapOffs needing some MachMisc things.
\begin{code}
interface AbsCLoop where
import PreludeStdIO ( Maybe )
import CgRetConv ( ctrlReturnConvAlg,
CtrlReturnConvention(..)
)
import ClosureInfo ( closureKind, closureLabelFromCI,
closureNonHdrSize, closurePtrsSize,
closureSMRep, closureSemiTag,
closureSizeWithoutFixedHdr,
closureTypeDescr, closureUpdReqd,
infoTableLabelFromCI, maybeSelectorInfo,
entryLabelFromCI,fastLabelFromCI,
ClosureInfo
)
import CLabel ( CLabel )
import HeapOffs ( HeapOffset )
import Id ( Id(..) )
import MachMisc ( fixedHdrSizeInWords, varHdrSizeInWords )
import SMRep ( SMRep )
import TyCon ( TyCon )
closureKind :: ClosureInfo -> [Char]
closureLabelFromCI :: ClosureInfo -> CLabel
closureNonHdrSize :: ClosureInfo -> Int
closurePtrsSize :: ClosureInfo -> Int
closureSMRep :: ClosureInfo -> SMRep
closureSemiTag :: ClosureInfo -> Int
closureSizeWithoutFixedHdr :: ClosureInfo -> HeapOffset
closureTypeDescr :: ClosureInfo -> [Char]
closureUpdReqd :: ClosureInfo -> Bool
entryLabelFromCI :: ClosureInfo -> CLabel
fastLabelFromCI :: ClosureInfo -> CLabel
infoTableLabelFromCI :: ClosureInfo -> CLabel
maybeSelectorInfo :: ClosureInfo -> Maybe (Id, Int)
ctrlReturnConvAlg :: TyCon -> CtrlReturnConvention
data CtrlReturnConvention = VectoredReturn Int | UnvectoredReturn Int
fixedHdrSizeInWords :: Int
varHdrSizeInWords :: SMRep -> Int
\end{code}
......@@ -14,7 +14,7 @@ raw assembler/machine code.
\begin{code}
#include "HsVersions.h"
module AbsCSyn (
module AbsCSyn {- (
-- export everything
AbstractC(..),
CStmtMacro(..),
......@@ -26,68 +26,37 @@ module AbsCSyn (
mkAbsCStmtList,
mkCCostCentre,
-- HeapOffsets, plus some convenient synonyms...
HeapOffset,
zeroOff, intOff, fixedHdrSize, totHdrSize, varHdrSize,
maxOff, addOff, subOff, intOffsetIntoGoods,
isZeroOff, possiblyEqualHeapOffset,
pprHeapOffset,
VirtualHeapOffset(..), HpRelOffset(..),
VirtualSpAOffset(..), VirtualSpBOffset(..),
SpARelOffset(..), SpBRelOffset(..),
-- RegRelatives
RegRelative(..),
-- registers
MagicId(..), node, infoptr,
isVolatileReg,
-- closure info
ClosureInfo, LambdaFormInfo, UpdateFlag, SMRep,
-- stuff from AbsCUtils and PprAbsC...
nonemptyAbsC, flattenAbsC, getAmodeRep,
mixedTypeLocn, mixedPtrLocn,
writeRealC,
dumpRealC,
kindFromMagicId,
amodeCanSurviveGC
isVolatileReg, noLiveRegsMask, mkLiveRegsMask
#ifdef GRAN
, CostRes(Cost)
#endif
)-} where
-- and stuff to make the interface self-sufficient
) where
import AbsCUtils -- used, and re-exported
import ClosureInfo -- ditto
import Costs
import PprAbsC -- ditto
import HeapOffs hiding ( hpRelToInt )
import Ubiq{-uitous-}
import PrelInfo ( PrimOp
IF_ATTACK_PRAGMAS(COMMA tagOf_PrimOp)
IF_ATTACK_PRAGMAS(COMMA pprPrimOp)
import CgCompInfo ( mAX_Vanilla_REG, mAX_Float_REG,
mAX_Double_REG, lIVENESS_R1, lIVENESS_R2,
lIVENESS_R3, lIVENESS_R4, lIVENESS_R5,
lIVENESS_R6, lIVENESS_R7, lIVENESS_R8
)
import Literal ( mkMachInt, mkMachWord, Literal(..) )
import CLabel
import CgCompInfo ( mAX_Vanilla_REG, mAX_Float_REG, mAX_Double_REG )
import CostCentre -- for CostCentre type
import Id ( Id, ConTag(..), DataCon(..) )
import Maybes ( Maybe )
import Outputable
import PrimRep ( PrimRep(..) )
import StgSyn ( GenStgExpr, GenStgArg, StgBinderInfo )
import UniqSet ( UniqSet(..), UniqFM )
import Unpretty -- ********** NOTE **********
import Util
import HeapOffs ( VirtualSpAOffset(..), VirtualSpBOffset(..),
VirtualHeapOffset(..)
)
import Literal ( mkMachInt )
import PrimRep ( isFollowableRep, PrimRep(..) )
\end{code}
@AbstractC@ is a list of Abstract~C statements, but the data structure
is tree-ish, for easier and more efficient putting-together.
\begin{code}
absCNop = AbsCNop
data AbstractC
= AbsCNop
| AbsCStmts AbstractC AbstractC
......@@ -436,7 +405,6 @@ data ReturnInfo
= DirectReturn -- Jump directly, if possible
| StaticVectoredReturn Int -- Fixed tag, starting at zero
| DynamicVectoredReturn CAddrMode -- Dynamic tag given by amode, starting at zero
\end{code}
%************************************************************************
......@@ -512,6 +480,27 @@ data MagicId
node = VanillaReg PtrRep ILIT(1) -- A convenient alias for Node
infoptr = VanillaReg DataPtrRep ILIT(2) -- An alias for InfoPtr
--------------------
noLiveRegsMask :: Int -- Mask indicating nothing live
noLiveRegsMask = 0
mkLiveRegsMask
:: [MagicId] -- Candidate live regs; depends what they have in them
-> Int
mkLiveRegsMask regs
= foldl do_reg noLiveRegsMask regs
where
do_reg acc (VanillaReg kind reg_no)
| isFollowableRep kind
= acc + (reg_tbl !! IBOX(reg_no _SUB_ ILIT(1)))
do_reg acc anything_else = acc
reg_tbl -- ToDo: mk Array!
= [lIVENESS_R1, lIVENESS_R2, lIVENESS_R3, lIVENESS_R4,
lIVENESS_R5, lIVENESS_R6, lIVENESS_R7, lIVENESS_R8]
\end{code}
We need magical @Eq@ because @VanillaReg@s come in multiple flavors.
......
......@@ -10,31 +10,28 @@ module AbsCUtils (
nonemptyAbsC,
mkAbstractCs, mkAbsCStmts,
mkAlgAltsCSwitch,
kindFromMagicId,
magicIdPrimRep,
getAmodeRep, amodeCanSurviveGC,
mixedTypeLocn, mixedPtrLocn,
flattenAbsC,
mkAbsCStmtList
-- printing/forcing stuff comes from PprAbsC
-- and for interface self-sufficiency...
) where
import Ubiq{-uitous-}
import AbsCSyn
import PrelInfo ( PrimOp(..)
IF_ATTACK_PRAGMAS(COMMA tagOf_PrimOp)
IF_ATTACK_PRAGMAS(COMMA pprPrimOp)
)
import Literal ( literalPrimRep )
import CLabel ( CLabel, mkReturnPtLabel, mkVecTblLabel )
import CLabel ( mkReturnPtLabel )
import Digraph ( stronglyConnComp )
import Id ( fIRST_TAG, ConTag(..), DataCon(..), Id )
import Maybes ( Maybe(..) )
import PrimRep ( getPrimRepSize, retPrimRepSize, PrimRep(..) )
import UniqSupply
import StgSyn ( GenStgArg )
import HeapOffs ( possiblyEqualHeapOffset )
import Id ( fIRST_TAG, ConTag(..) )
import Literal ( literalPrimRep, Literal(..) )
import PrimRep ( getPrimRepSize, PrimRep(..) )
import Unique ( Unique{-instance Eq-} )
import UniqSupply ( getUnique, getUniques, splitUniqSupply )
import Util ( panic )
infixr 9 `thenFlt`
\end{code}
......@@ -148,24 +145,24 @@ mkAlgAltsCSwitch scrutinee tagged_alts deflt_absc
%************************************************************************
\begin{code}
kindFromMagicId BaseReg = PtrRep
kindFromMagicId StkOReg = PtrRep
kindFromMagicId (VanillaReg kind _) = kind
kindFromMagicId (FloatReg _) = FloatRep
kindFromMagicId (DoubleReg _) = DoubleRep
kindFromMagicId TagReg = IntRep
kindFromMagicId RetReg = RetRep
kindFromMagicId SpA = PtrRep
kindFromMagicId SuA = PtrRep
kindFromMagicId SpB = PtrRep
kindFromMagicId SuB = PtrRep
kindFromMagicId Hp = PtrRep
kindFromMagicId HpLim = PtrRep
kindFromMagicId LivenessReg = IntRep
kindFromMagicId StdUpdRetVecReg = PtrRep
kindFromMagicId StkStubReg = PtrRep
kindFromMagicId CurCostCentre = CostCentreRep
kindFromMagicId VoidReg = VoidRep
magicIdPrimRep BaseReg = PtrRep
magicIdPrimRep StkOReg = PtrRep
magicIdPrimRep (VanillaReg kind _) = kind
magicIdPrimRep (FloatReg _) = FloatRep
magicIdPrimRep (DoubleReg _) = DoubleRep
magicIdPrimRep TagReg = IntRep
magicIdPrimRep RetReg = RetRep
magicIdPrimRep SpA = PtrRep
magicIdPrimRep SuA = PtrRep
magicIdPrimRep SpB = PtrRep
magicIdPrimRep SuB = PtrRep
magicIdPrimRep Hp = PtrRep
magicIdPrimRep HpLim = PtrRep
magicIdPrimRep LivenessReg = IntRep
magicIdPrimRep StdUpdRetVecReg = PtrRep
magicIdPrimRep StkStubReg = PtrRep
magicIdPrimRep CurCostCentre = CostCentreRep
magicIdPrimRep VoidReg = VoidRep
\end{code}
%************************************************************************
......@@ -183,7 +180,7 @@ getAmodeRep :: CAddrMode -> PrimRep
getAmodeRep (CVal _ kind) = kind
getAmodeRep (CAddr _) = PtrRep
getAmodeRep (CReg magic_id) = kindFromMagicId magic_id
getAmodeRep (CReg magic_id) = magicIdPrimRep magic_id
getAmodeRep (CTemp uniq kind) = kind
getAmodeRep (CLbl label kind) = kind
getAmodeRep (CUnVecLbl _ _) = PtrRep
......
......@@ -39,40 +39,35 @@ module CLabel (
needsCDecl, isReadOnly, isAsmTemp, externallyVisibleCLabel,
pprCLabel
pprCLabel, pprCLabel_asm
#ifdef GRAN
, isSlowEntryCCodeBlock
#endif
-- and to make the interface self-sufficient...
) where
import Ubiq{-uitous-}
import AbsCLoop ( CtrlReturnConvention(..),
ctrlReturnConvAlg
)
import NcgLoop ( underscorePrefix, fmtAsmLbl )
import CStrings ( pp_cSEP )
import Id ( externallyVisibleId, cmpId_withSpecDataCon,
isDataCon, isDictFunId,
isConstMethodId_maybe, isClassOpId,
isConstMethodId_maybe,
isDefaultMethodId_maybe,
isSuperDictSelId_maybe, fIRST_TAG,
DataCon(..), ConTag(..), Id
ConTag(..), GenId{-instance Outputable-}
)
import Maybes ( maybeToBool )
import PprStyle ( PprStyle(..) )
import PprType ( showTyCon, GenType{-instance Outputable-} )
import Pretty ( prettyToUn )
import TyCon ( TyCon{-instance Eq-} )
import Unique ( showUnique, pprUnique, Unique{-instance Eq-} )
import Unpretty -- NOTE!! ********************
{-
import Outputable
import Pretty ( ppNil, ppChar, ppStr, ppPStr, ppDouble, ppInt,
ppInteger, ppBeside, ppIntersperse, prettyToUn
)
#ifdef USE_ATTACK_PRAGMAS
import CharSeq
#endif
import Unique ( pprUnique, showUnique, Unique )
import Util
-- Sigh... Shouldn't this file (CLabel) live in codeGen?
import CgRetConv ( CtrlReturnConvention(..), ctrlReturnConvAlg )
-}
import Util ( assertPanic )
\end{code}
things we want to find out:
......@@ -290,14 +285,13 @@ externallyVisibleCLabel (IdLabel (CLabelId id) _)
| isDataCon id = True
| is_ConstMethodId id = True -- These are here to ensure splitting works
| isDictFunId id = True -- when these values have not been exported
| isClassOpId id = True
| is_DefaultMethodId id = True