[project @ 1998-12-02 13:17:09 by simonm]
authorsimonm <unknown>
Wed, 2 Dec 1998 13:32:30 +0000 (13:32 +0000)
committersimonm <unknown>
Wed, 2 Dec 1998 13:32:30 +0000 (13:32 +0000)
Move 4.01 onto the main trunk.

1331 files changed:
acconfig.h
aclocal.m4
configure.in
ghc/ANNOUNCE
ghc/Makefile
ghc/PATCHLEVEL
ghc/README
ghc/compiler/DEPEND-NOTES [new file with mode: 0644]
ghc/compiler/Makefile
ghc/compiler/absCSyn/AbsCSyn.lhs
ghc/compiler/absCSyn/AbsCUtils.lhs
ghc/compiler/absCSyn/CLabel.hi-boot [deleted file]
ghc/compiler/absCSyn/CLabel.lhs
ghc/compiler/absCSyn/CStrings.lhs
ghc/compiler/absCSyn/CallConv.lhs
ghc/compiler/absCSyn/Costs.lhs
ghc/compiler/absCSyn/HeapOffs.lhs [deleted file]
ghc/compiler/absCSyn/PprAbsC.lhs
ghc/compiler/basicTypes/BasicTypes.lhs
ghc/compiler/basicTypes/Const.hi-boot [new file with mode: 0644]
ghc/compiler/basicTypes/Const.hi-boot-5 [new file with mode: 0644]
ghc/compiler/basicTypes/Const.lhs [new file with mode: 0644]
ghc/compiler/basicTypes/DataCon.hi-boot [new file with mode: 0644]
ghc/compiler/basicTypes/DataCon.hi-boot-5 [new file with mode: 0644]
ghc/compiler/basicTypes/DataCon.lhs [new file with mode: 0644]
ghc/compiler/basicTypes/Demand.lhs
ghc/compiler/basicTypes/FieldLabel.hi-boot [deleted file]
ghc/compiler/basicTypes/FieldLabel.lhs
ghc/compiler/basicTypes/Id.hi-boot [deleted file]
ghc/compiler/basicTypes/Id.lhs
ghc/compiler/basicTypes/IdInfo.hi-boot [new file with mode: 0644]
ghc/compiler/basicTypes/IdInfo.hi-boot-5 [new file with mode: 0644]
ghc/compiler/basicTypes/IdInfo.lhs
ghc/compiler/basicTypes/IdUtils.lhs [deleted file]
ghc/compiler/basicTypes/Literal.hi-boot [deleted file]
ghc/compiler/basicTypes/Literal.lhs [deleted file]
ghc/compiler/basicTypes/MkId.hi-boot
ghc/compiler/basicTypes/MkId.hi-boot-5 [new file with mode: 0644]
ghc/compiler/basicTypes/MkId.lhs
ghc/compiler/basicTypes/Name.hi-boot-5 [new file with mode: 0644]
ghc/compiler/basicTypes/Name.lhs
ghc/compiler/basicTypes/NameSet.lhs [new file with mode: 0644]
ghc/compiler/basicTypes/PprEnv.lhs
ghc/compiler/basicTypes/SrcLoc.lhs
ghc/compiler/basicTypes/UniqSupply.lhs
ghc/compiler/basicTypes/Unique.lhs
ghc/compiler/basicTypes/Var.hi-boot [new file with mode: 0644]
ghc/compiler/basicTypes/Var.hi-boot-5 [new file with mode: 0644]
ghc/compiler/basicTypes/Var.lhs [new file with mode: 0644]
ghc/compiler/basicTypes/VarEnv.lhs [new file with mode: 0644]
ghc/compiler/basicTypes/VarSet.lhs [new file with mode: 0644]
ghc/compiler/codeGen/CgBindery.hi-boot
ghc/compiler/codeGen/CgBindery.hi-boot-4 [new file with mode: 0644]
ghc/compiler/codeGen/CgBindery.hi-boot-5 [new file with mode: 0644]
ghc/compiler/codeGen/CgBindery.lhs
ghc/compiler/codeGen/CgCase.lhs
ghc/compiler/codeGen/CgClosure.lhs
ghc/compiler/codeGen/CgCon.lhs
ghc/compiler/codeGen/CgConTbls.lhs
ghc/compiler/codeGen/CgExpr.hi-boot
ghc/compiler/codeGen/CgExpr.hi-boot-5 [new file with mode: 0644]
ghc/compiler/codeGen/CgExpr.lhs
ghc/compiler/codeGen/CgHeapery.lhs
ghc/compiler/codeGen/CgLetNoEscape.lhs
ghc/compiler/codeGen/CgMonad.lhs
ghc/compiler/codeGen/CgRetConv.lhs
ghc/compiler/codeGen/CgStackery.lhs
ghc/compiler/codeGen/CgTailCall.lhs
ghc/compiler/codeGen/CgUpdate.lhs
ghc/compiler/codeGen/CgUsages.hi-boot
ghc/compiler/codeGen/CgUsages.hi-boot-5 [new file with mode: 0644]
ghc/compiler/codeGen/CgUsages.lhs
ghc/compiler/codeGen/ClosureInfo.hi-boot
ghc/compiler/codeGen/ClosureInfo.hi-boot-5 [new file with mode: 0644]
ghc/compiler/codeGen/ClosureInfo.lhs
ghc/compiler/codeGen/CodeGen.lhs
ghc/compiler/codeGen/SMRep.lhs
ghc/compiler/coreSyn/AnnCoreSyn.lhs [deleted file]
ghc/compiler/coreSyn/CoreLift.lhs [deleted file]
ghc/compiler/coreSyn/CoreLint.lhs
ghc/compiler/coreSyn/CoreSyn.hi-boot
ghc/compiler/coreSyn/CoreSyn.hi-boot-5 [new file with mode: 0644]
ghc/compiler/coreSyn/CoreSyn.lhs
ghc/compiler/coreSyn/CoreUnfold.hi-boot
ghc/compiler/coreSyn/CoreUnfold.hi-boot-5 [new file with mode: 0644]
ghc/compiler/coreSyn/CoreUnfold.lhs
ghc/compiler/coreSyn/CoreUtils.lhs
ghc/compiler/coreSyn/FreeVars.lhs
ghc/compiler/coreSyn/PprCore.lhs
ghc/compiler/deSugar/Check.lhs
ghc/compiler/deSugar/Desugar.lhs
ghc/compiler/deSugar/DsBinds.hi-boot [deleted file]
ghc/compiler/deSugar/DsBinds.lhs
ghc/compiler/deSugar/DsCCall.lhs
ghc/compiler/deSugar/DsExpr.hi-boot
ghc/compiler/deSugar/DsExpr.hi-boot-5 [new file with mode: 0644]
ghc/compiler/deSugar/DsExpr.lhs
ghc/compiler/deSugar/DsForeign.lhs
ghc/compiler/deSugar/DsGRHSs.lhs
ghc/compiler/deSugar/DsHsSyn.lhs
ghc/compiler/deSugar/DsListComp.lhs
ghc/compiler/deSugar/DsMonad.lhs
ghc/compiler/deSugar/DsUtils.lhs
ghc/compiler/deSugar/Match.hi-boot
ghc/compiler/deSugar/Match.hi-boot-5 [new file with mode: 0644]
ghc/compiler/deSugar/Match.lhs
ghc/compiler/deSugar/MatchCon.lhs
ghc/compiler/deSugar/MatchLit.lhs
ghc/compiler/hsSyn/HsBasic.lhs
ghc/compiler/hsSyn/HsBinds.hi-boot [deleted file]
ghc/compiler/hsSyn/HsBinds.lhs
ghc/compiler/hsSyn/HsCore.lhs
ghc/compiler/hsSyn/HsDecls.lhs
ghc/compiler/hsSyn/HsExpr.hi-boot-5 [new file with mode: 0644]
ghc/compiler/hsSyn/HsExpr.lhs
ghc/compiler/hsSyn/HsImpExp.lhs
ghc/compiler/hsSyn/HsMatches.hi-boot-5 [new file with mode: 0644]
ghc/compiler/hsSyn/HsMatches.lhs
ghc/compiler/hsSyn/HsPat.lhs
ghc/compiler/hsSyn/HsPragmas.lhs
ghc/compiler/hsSyn/HsSyn.lhs
ghc/compiler/hsSyn/HsTypes.lhs
ghc/compiler/main/CmdLineOpts.lhs
ghc/compiler/main/Constants.lhs
ghc/compiler/main/ErrUtils.lhs
ghc/compiler/main/Main.lhs
ghc/compiler/main/MkIface.lhs
ghc/compiler/nativeGen/AbsCStixGen.lhs
ghc/compiler/nativeGen/AsmCodeGen.lhs
ghc/compiler/nativeGen/AsmRegAlloc.lhs
ghc/compiler/nativeGen/MachCode.lhs
ghc/compiler/nativeGen/MachMisc.hi-boot
ghc/compiler/nativeGen/MachMisc.hi-boot-5 [new file with mode: 0644]
ghc/compiler/nativeGen/MachMisc.lhs
ghc/compiler/nativeGen/MachRegs.lhs
ghc/compiler/nativeGen/NCG.h
ghc/compiler/nativeGen/PprMach.lhs
ghc/compiler/nativeGen/RegAllocInfo.lhs
ghc/compiler/nativeGen/Stix.lhs
ghc/compiler/nativeGen/StixInfo.lhs
ghc/compiler/nativeGen/StixInteger.lhs
ghc/compiler/nativeGen/StixMacro.lhs
ghc/compiler/nativeGen/StixPrim.hi-boot-5 [new file with mode: 0644]
ghc/compiler/nativeGen/StixPrim.lhs
ghc/compiler/parser/constr.ugn
ghc/compiler/parser/ctypes.c [new file with mode: 0644]
ghc/compiler/parser/ctypes.h [new file with mode: 0644]
ghc/compiler/parser/hschooks.c
ghc/compiler/parser/hslexer.flex
ghc/compiler/parser/hsparser.y
ghc/compiler/parser/printtree.c
ghc/compiler/parser/syntax.c
ghc/compiler/parser/tree.ugn
ghc/compiler/parser/ttype.ugn
ghc/compiler/parser/type2context.c
ghc/compiler/prelude/PrelInfo.lhs
ghc/compiler/prelude/PrelMods.lhs
ghc/compiler/prelude/PrelVals.lhs
ghc/compiler/prelude/PrimOp.hi-boot [deleted file]
ghc/compiler/prelude/PrimOp.lhs
ghc/compiler/prelude/PrimRep.lhs
ghc/compiler/prelude/TysPrim.hi-boot [deleted file]
ghc/compiler/prelude/TysPrim.lhs
ghc/compiler/prelude/TysWiredIn.hi-boot
ghc/compiler/prelude/TysWiredIn.lhs
ghc/compiler/profiling/CostCentre.lhs
ghc/compiler/profiling/SCCfinal.lhs
ghc/compiler/reader/Lex.lhs
ghc/compiler/reader/PrefixSyn.lhs
ghc/compiler/reader/PrefixToHs.lhs
ghc/compiler/reader/RdrHsSyn.lhs
ghc/compiler/reader/ReadPrefix.lhs
ghc/compiler/rename/ParseIface.y
ghc/compiler/rename/Rename.lhs
ghc/compiler/rename/RnBinds.hi-boot-5 [new file with mode: 0644]
ghc/compiler/rename/RnBinds.lhs
ghc/compiler/rename/RnEnv.lhs
ghc/compiler/rename/RnExpr.lhs
ghc/compiler/rename/RnHsSyn.lhs
ghc/compiler/rename/RnIfaces.lhs
ghc/compiler/rename/RnMonad.lhs
ghc/compiler/rename/RnNames.lhs
ghc/compiler/rename/RnSource.hi-boot-5 [new file with mode: 0644]
ghc/compiler/rename/RnSource.lhs
ghc/compiler/simplCore/AnalFBWW.lhs
ghc/compiler/simplCore/BinderInfo.lhs
ghc/compiler/simplCore/ConFold.lhs
ghc/compiler/simplCore/FloatIn.lhs
ghc/compiler/simplCore/FloatOut.lhs
ghc/compiler/simplCore/FoldrBuildWW.lhs
ghc/compiler/simplCore/LiberateCase.lhs
ghc/compiler/simplCore/MagicUFs.hi-boot-5 [new file with mode: 0644]
ghc/compiler/simplCore/MagicUFs.lhs
ghc/compiler/simplCore/OccurAnal.lhs
ghc/compiler/simplCore/SAT.lhs
ghc/compiler/simplCore/SATMonad.lhs
ghc/compiler/simplCore/SetLevels.lhs
ghc/compiler/simplCore/SimplCase.lhs [deleted file]
ghc/compiler/simplCore/SimplCore.lhs
ghc/compiler/simplCore/SimplEnv.lhs [deleted file]
ghc/compiler/simplCore/SimplMonad.lhs
ghc/compiler/simplCore/SimplPgm.lhs [deleted file]
ghc/compiler/simplCore/SimplUtils.lhs
ghc/compiler/simplCore/SimplVar.lhs [deleted file]
ghc/compiler/simplCore/Simplify.hi-boot [deleted file]
ghc/compiler/simplCore/Simplify.lhs
ghc/compiler/simplStg/LambdaLift.lhs
ghc/compiler/simplStg/SRT.lhs [new file with mode: 0644]
ghc/compiler/simplStg/SimplStg.lhs
ghc/compiler/simplStg/StgStats.lhs
ghc/compiler/simplStg/StgVarInfo.lhs
ghc/compiler/simplStg/UpdAnal.lhs
ghc/compiler/specialise/SpecEnv.hi-boot-5 [new file with mode: 0644]
ghc/compiler/specialise/SpecEnv.lhs
ghc/compiler/specialise/SpecUtils.lhs [deleted file]
ghc/compiler/specialise/Specialise.lhs
ghc/compiler/stgSyn/CoreToStg.lhs
ghc/compiler/stgSyn/StgLint.lhs
ghc/compiler/stgSyn/StgSyn.lhs
ghc/compiler/stranal/SaAbsInt.lhs
ghc/compiler/stranal/SaLib.lhs
ghc/compiler/stranal/StrictAnal.lhs
ghc/compiler/stranal/WorkWrap.lhs
ghc/compiler/stranal/WwLib.lhs
ghc/compiler/typecheck/Inst.lhs
ghc/compiler/typecheck/TcBinds.lhs
ghc/compiler/typecheck/TcClassDcl.lhs
ghc/compiler/typecheck/TcDefaults.lhs
ghc/compiler/typecheck/TcDeriv.lhs
ghc/compiler/typecheck/TcEnv.hi-boot-5 [new file with mode: 0644]
ghc/compiler/typecheck/TcEnv.lhs
ghc/compiler/typecheck/TcExpr.hi-boot
ghc/compiler/typecheck/TcExpr.hi-boot-5 [new file with mode: 0644]
ghc/compiler/typecheck/TcExpr.lhs
ghc/compiler/typecheck/TcForeign.lhs
ghc/compiler/typecheck/TcGRHSs.hi-boot
ghc/compiler/typecheck/TcGRHSs.hi-boot-5 [new file with mode: 0644]
ghc/compiler/typecheck/TcGRHSs.lhs
ghc/compiler/typecheck/TcGenDeriv.lhs
ghc/compiler/typecheck/TcHsSyn.lhs
ghc/compiler/typecheck/TcIfaceSig.lhs
ghc/compiler/typecheck/TcInstDcls.lhs
ghc/compiler/typecheck/TcInstUtil.lhs
ghc/compiler/typecheck/TcKind.lhs [deleted file]
ghc/compiler/typecheck/TcMatches.lhs
ghc/compiler/typecheck/TcModule.lhs
ghc/compiler/typecheck/TcMonad.lhs
ghc/compiler/typecheck/TcMonoType.lhs
ghc/compiler/typecheck/TcPat.lhs
ghc/compiler/typecheck/TcSimplify.lhs
ghc/compiler/typecheck/TcTyClsDecls.lhs
ghc/compiler/typecheck/TcTyDecls.lhs
ghc/compiler/typecheck/TcType.lhs
ghc/compiler/typecheck/TcUnify.lhs [new file with mode: 0644]
ghc/compiler/typecheck/Unify.lhs [deleted file]
ghc/compiler/types/Class.hi-boot [deleted file]
ghc/compiler/types/Class.lhs
ghc/compiler/types/Kind.lhs [deleted file]
ghc/compiler/types/PprType.lhs
ghc/compiler/types/TyCon.hi-boot
ghc/compiler/types/TyCon.hi-boot-5 [new file with mode: 0644]
ghc/compiler/types/TyCon.lhs
ghc/compiler/types/TyVar.lhs [deleted file]
ghc/compiler/types/Type.hi-boot
ghc/compiler/types/Type.hi-boot-5 [new file with mode: 0644]
ghc/compiler/types/Type.lhs
ghc/compiler/types/Unify.lhs [new file with mode: 0644]
ghc/compiler/utils/Argv.lhs
ghc/compiler/utils/Bag.lhs
ghc/compiler/utils/BitSet.lhs
ghc/compiler/utils/FastString.lhs
ghc/compiler/utils/FiniteMap.lhs
ghc/compiler/utils/ListSetOps.lhs
ghc/compiler/utils/Maybes.lhs
ghc/compiler/utils/OrdList.lhs
ghc/compiler/utils/Outputable.lhs
ghc/compiler/utils/PrimPacked.lhs
ghc/compiler/utils/SST.lhs
ghc/compiler/utils/StringBuffer.lhs
ghc/compiler/utils/UniqFM.lhs
ghc/compiler/utils/UniqSet.lhs
ghc/compiler/utils/Util.lhs
ghc/docs/README [deleted file]
ghc/docs/libraries/Addr.sgml [new file with mode: 0644]
ghc/docs/libraries/Bits.sgml [new file with mode: 0644]
ghc/docs/libraries/Concurrent.sgml [new file with mode: 0644]
ghc/docs/libraries/Dynamic.sgml [new file with mode: 0644]
ghc/docs/libraries/Exception.sgml [new file with mode: 0644]
ghc/docs/libraries/GlaExts.sgml [new file with mode: 0644]
ghc/docs/libraries/IOExts.sgml [new file with mode: 0644]
ghc/docs/libraries/Int.sgml [new file with mode: 0644]
ghc/docs/libraries/Makefile
ghc/docs/libraries/NumExts.sgml [new file with mode: 0644]
ghc/docs/libraries/Pretty.sgml [new file with mode: 0644]
ghc/docs/libraries/ST.sgml [new file with mode: 0644]
ghc/docs/libraries/Weak.sgml [new file with mode: 0644]
ghc/docs/libraries/Word.sgml [new file with mode: 0644]
ghc/docs/libraries/libs.sgml
ghc/docs/users_guide/2-01-notes.vsgml [deleted file]
ghc/docs/users_guide/2-02-notes.vsgml [deleted file]
ghc/docs/users_guide/2-03-notes.vsgml [deleted file]
ghc/docs/users_guide/2-04-notes.vsgml [deleted file]
ghc/docs/users_guide/2-06-notes.vsgml [deleted file]
ghc/docs/users_guide/2-08-notes.vsgml [deleted file]
ghc/docs/users_guide/2-09-notes.vsgml [deleted file]
ghc/docs/users_guide/2-10-notes.vsgml [deleted file]
ghc/docs/users_guide/3-00-notes.lit [deleted file]
ghc/docs/users_guide/3-00-notes.vsgml [deleted file]
ghc/docs/users_guide/3-01-notes.vsgml [deleted file]
ghc/docs/users_guide/3-02-notes.vsgml [deleted file]
ghc/docs/users_guide/3-03-notes.vsgml [deleted file]
ghc/docs/users_guide/4-00-notes.vsgml [new file with mode: 0644]
ghc/docs/users_guide/4-01-notes.vsgml [new file with mode: 0644]
ghc/docs/users_guide/Makefile
ghc/docs/users_guide/debugging.vsgml
ghc/docs/users_guide/glasgow_exts.vsgml
ghc/docs/users_guide/gone_wrong.vsgml
ghc/docs/users_guide/intro.vsgml
ghc/docs/users_guide/libmisc.vsgml
ghc/docs/users_guide/libraries.vsgml
ghc/docs/users_guide/parallel.vsgml
ghc/docs/users_guide/profiling.vsgml
ghc/docs/users_guide/runtime_control.vsgml
ghc/docs/users_guide/sooner.vsgml
ghc/docs/users_guide/user.vsgml [deleted file]
ghc/docs/users_guide/users_guide.vsgml [new file with mode: 0644]
ghc/docs/users_guide/using.vsgml
ghc/docs/users_guide/utils.vsgml
ghc/docs/users_guide/vs_haskell.vsgml
ghc/driver/Makefile
ghc/driver/ghc-asm.lprl
ghc/driver/ghc-iface.lprl
ghc/driver/ghc.lprl
ghc/includes/Assembler.h [new file with mode: 0644]
ghc/includes/Block.h [new file with mode: 0644]
ghc/includes/CCall.h [new file with mode: 0644]
ghc/includes/COptJumps.lh [deleted file]
ghc/includes/COptRegs.lh [deleted file]
ghc/includes/COptWraps.lh [deleted file]
ghc/includes/ClosureMacros.h [new file with mode: 0644]
ghc/includes/ClosureTypes.h [new file with mode: 0644]
ghc/includes/Closures.h [new file with mode: 0644]
ghc/includes/Constants.h [new file with mode: 0644]
ghc/includes/CostCentre.lh [deleted file]
ghc/includes/GhcConstants.lh [deleted file]
ghc/includes/GranSim.lh [deleted file]
ghc/includes/HLC.h [deleted file]
ghc/includes/Hooks.h [new file with mode: 0644]
ghc/includes/Info.lh [deleted file]
ghc/includes/InfoMacros.h [new file with mode: 0644]
ghc/includes/InfoTables.h [new file with mode: 0644]
ghc/includes/LLC.h [deleted file]
ghc/includes/MachDeps.h [new file with mode: 0644]
ghc/includes/MachDeps.lh [deleted file]
ghc/includes/MachRegs.h [new file with mode: 0644]
ghc/includes/MachRegs.lh [deleted file]
ghc/includes/Makefile
ghc/includes/NativeGen.h [deleted file]
ghc/includes/Parallel.lh [deleted file]
ghc/includes/Prelude.h [new file with mode: 0644]
ghc/includes/PrimOps.h [new file with mode: 0644]
ghc/includes/Profiling.h [new file with mode: 0644]
ghc/includes/Regs.h [new file with mode: 0644]
ghc/includes/Rts.h [new file with mode: 0644]
ghc/includes/RtsAPI.h [new file with mode: 0644]
ghc/includes/RtsFlags.lh [deleted file]
ghc/includes/RtsTypes.lh [deleted file]
ghc/includes/SMClosures.lh [deleted file]
ghc/includes/SMInfoTables.lh [deleted file]
ghc/includes/SMcompact.lh [deleted file]
ghc/includes/SMcopying.lh [deleted file]
ghc/includes/SMinterface.lh [deleted file]
ghc/includes/SMmark.lh [deleted file]
ghc/includes/SMupdate.lh [deleted file]
ghc/includes/SchedAPI.h [new file with mode: 0644]
ghc/includes/Stg.h [new file with mode: 0644]
ghc/includes/StgDirections.h [deleted file]
ghc/includes/StgMachDeps.h [deleted file]
ghc/includes/StgMacros.h [new file with mode: 0644]
ghc/includes/StgMacros.lh [deleted file]
ghc/includes/StgMiscClosures.h [new file with mode: 0644]
ghc/includes/StgProf.h [new file with mode: 0644]
ghc/includes/StgRegs.lh [deleted file]
ghc/includes/StgStorage.h [new file with mode: 0644]
ghc/includes/StgTypes.h [new file with mode: 0644]
ghc/includes/StgTypes.lh [deleted file]
ghc/includes/TSO.h [new file with mode: 0644]
ghc/includes/TailCalls.h [new file with mode: 0644]
ghc/includes/Threads.lh [deleted file]
ghc/includes/Ticky.h [new file with mode: 0644]
ghc/includes/Ticky.lh [deleted file]
ghc/includes/Updates.h [new file with mode: 0644]
ghc/includes/closure.ps [deleted file]
ghc/includes/config.h.in [deleted file]
ghc/includes/error.h [deleted file]
ghc/includes/mkNativeHdr.c [new file with mode: 0644]
ghc/includes/mkNativeHdr.lc [deleted file]
ghc/includes/options.h [new file with mode: 0644]
ghc/includes/platform.h.in [deleted file]
ghc/includes/pvm3.h [deleted file]
ghc/includes/rtsdefs.h [deleted file]
ghc/includes/stgdefs.h [deleted file]
ghc/includes/update-frame.ps [deleted file]
ghc/interpreter/adr.mk [new file with mode: 0644]
ghc/interpreter/charset.c [new file with mode: 0644]
ghc/interpreter/charset.h [new file with mode: 0644]
ghc/interpreter/codegen.c [new file with mode: 0644]
ghc/interpreter/codegen.h [new file with mode: 0644]
ghc/interpreter/command.h [new file with mode: 0644]
ghc/interpreter/compiler.c [new file with mode: 0644]
ghc/interpreter/compiler.h [new file with mode: 0644]
ghc/interpreter/connect.c [new file with mode: 0644]
ghc/interpreter/connect.h [new file with mode: 0644]
ghc/interpreter/derive.c [new file with mode: 0644]
ghc/interpreter/derive.h [new file with mode: 0644]
ghc/interpreter/desugar.c [new file with mode: 0644]
ghc/interpreter/desugar.h [new file with mode: 0644]
ghc/interpreter/dynamic.c [new file with mode: 0644]
ghc/interpreter/dynamic.h [new file with mode: 0644]
ghc/interpreter/errors.h [new file with mode: 0644]
ghc/interpreter/free.c [new file with mode: 0644]
ghc/interpreter/free.h [new file with mode: 0644]
ghc/interpreter/hugs.c [new file with mode: 0644]
ghc/interpreter/hugs.h [new file with mode: 0644]
ghc/interpreter/iface.g [new file with mode: 0644]
ghc/interpreter/input.c [new file with mode: 0644]
ghc/interpreter/input.h [new file with mode: 0644]
ghc/interpreter/interface.c [new file with mode: 0644]
ghc/interpreter/interface.h [new file with mode: 0644]
ghc/interpreter/kind.c [new file with mode: 0644]
ghc/interpreter/library/Array.hs [new file with mode: 0644]
ghc/interpreter/library/Char.hs [new file with mode: 0644]
ghc/interpreter/library/Complex.hs [new file with mode: 0644]
ghc/interpreter/library/Directory.hs [new file with mode: 0644]
ghc/interpreter/library/IO.hs [new file with mode: 0644]
ghc/interpreter/library/Int.hs [new file with mode: 0644]
ghc/interpreter/library/Ix.hs [new file with mode: 0644]
ghc/interpreter/library/List.hs [new file with mode: 0644]
ghc/interpreter/library/Maybe.hs [new file with mode: 0644]
ghc/interpreter/library/Monad.hs [new file with mode: 0644]
ghc/interpreter/library/Numeric.hs [new file with mode: 0644]
ghc/interpreter/library/Ratio.hs [new file with mode: 0644]
ghc/interpreter/library/UnicodePrims.hs [new file with mode: 0644]
ghc/interpreter/library/Word.hs [new file with mode: 0644]
ghc/interpreter/lift.c [new file with mode: 0644]
ghc/interpreter/lift.h [new file with mode: 0644]
ghc/interpreter/link.c [new file with mode: 0644]
ghc/interpreter/link.h [new file with mode: 0644]
ghc/interpreter/machdep.c [new file with mode: 0644]
ghc/interpreter/machdep.h [new file with mode: 0644]
ghc/interpreter/modules.c [new file with mode: 0644]
ghc/interpreter/modules.h [new file with mode: 0644]
ghc/interpreter/optimise.c [new file with mode: 0644]
ghc/interpreter/optimise.h [new file with mode: 0644]
ghc/interpreter/output.c [new file with mode: 0644]
ghc/interpreter/output.h [new file with mode: 0644]
ghc/interpreter/parser.y [new file with mode: 0644]
ghc/interpreter/pat.c [new file with mode: 0644]
ghc/interpreter/pat.h [new file with mode: 0644]
ghc/interpreter/pmc.c [new file with mode: 0644]
ghc/interpreter/pmc.h [new file with mode: 0644]
ghc/interpreter/pp.c [new file with mode: 0644]
ghc/interpreter/pp.h [new file with mode: 0644]
ghc/interpreter/preds.c [new file with mode: 0644]
ghc/interpreter/prelude.h [new file with mode: 0644]
ghc/interpreter/prelude/PrelConc.hs [new file with mode: 0644]
ghc/interpreter/prelude/Prelude.hs [new file with mode: 0644]
ghc/interpreter/prelude/PreludeIO.hs [new file with mode: 0644]
ghc/interpreter/prelude/PreludeList.hs [new file with mode: 0644]
ghc/interpreter/prelude/PreludePackString.hs [new file with mode: 0644]
ghc/interpreter/prelude/PreludeText.hs [new file with mode: 0644]
ghc/interpreter/scc.c [new file with mode: 0644]
ghc/interpreter/static.c [new file with mode: 0644]
ghc/interpreter/static.h [new file with mode: 0644]
ghc/interpreter/stg.c [new file with mode: 0644]
ghc/interpreter/stg.h [new file with mode: 0644]
ghc/interpreter/stgSubst.c [new file with mode: 0644]
ghc/interpreter/stgSubst.h [new file with mode: 0644]
ghc/interpreter/storage.c [new file with mode: 0644]
ghc/interpreter/storage.h [new file with mode: 0644]
ghc/interpreter/subst.c [new file with mode: 0644]
ghc/interpreter/subst.h [new file with mode: 0644]
ghc/interpreter/test/after [new file with mode: 0644]
ghc/interpreter/test/before [new file with mode: 0644]
ghc/interpreter/test/exts/FixIO.in1 [new file with mode: 0644]
ghc/interpreter/test/exts/FixIO.lhs [new file with mode: 0644]
ghc/interpreter/test/exts/FixIO.out1 [new file with mode: 0644]
ghc/interpreter/test/exts/intTest.hs [new file with mode: 0644]
ghc/interpreter/test/exts/intTest.in1 [new file with mode: 0644]
ghc/interpreter/test/exts/intTest.out1 [new file with mode: 0644]
ghc/interpreter/test/exts/mvar.hs [new file with mode: 0644]
ghc/interpreter/test/exts/mvar.in1 [new file with mode: 0644]
ghc/interpreter/test/exts/mvar.out1 [new file with mode: 0644]
ghc/interpreter/test/exts/refs1.hs [new file with mode: 0644]
ghc/interpreter/test/exts/refs1.in1 [new file with mode: 0644]
ghc/interpreter/test/exts/refs1.out1 [new file with mode: 0644]
ghc/interpreter/test/exts/refs2.hs [new file with mode: 0644]
ghc/interpreter/test/exts/refs2.in1 [new file with mode: 0644]
ghc/interpreter/test/exts/refs2.out1 [new file with mode: 0644]
ghc/interpreter/test/exts/refs3.hs [new file with mode: 0644]
ghc/interpreter/test/exts/refs3.in1 [new file with mode: 0644]
ghc/interpreter/test/exts/refs3.out1 [new file with mode: 0644]
ghc/interpreter/test/runstdtest [new file with mode: 0644]
ghc/interpreter/test/runtests [new file with mode: 0644]
ghc/interpreter/test/runtime/fix [new file with mode: 0644]
ghc/interpreter/test/runtime/msg [new file with mode: 0644]
ghc/interpreter/test/runtime/r000.hs [new file with mode: 0644]
ghc/interpreter/test/runtime/r000.in1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r000.out1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r001.hs [new file with mode: 0644]
ghc/interpreter/test/runtime/r001.in1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r001.out1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r002.hs [new file with mode: 0644]
ghc/interpreter/test/runtime/r002.in1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r002.out1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r003.hs [new file with mode: 0644]
ghc/interpreter/test/runtime/r003.in1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r003.out1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r004.hs [new file with mode: 0644]
ghc/interpreter/test/runtime/r004.in1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r004.out1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r005.hs [new file with mode: 0644]
ghc/interpreter/test/runtime/r005.in1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r005.out1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r006.hs [new file with mode: 0644]
ghc/interpreter/test/runtime/r006.in1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r006.out1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r007.hs [new file with mode: 0644]
ghc/interpreter/test/runtime/r007.in1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r007.out1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r008.hs [new file with mode: 0644]
ghc/interpreter/test/runtime/r008.in1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r008.out1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r009.hs [new file with mode: 0644]
ghc/interpreter/test/runtime/r009.in1 [new file with mode: 0644]
ghc/interpreter/test/runtime/r009.out1 [new file with mode: 0644]
ghc/interpreter/test/static/fix [new file with mode: 0644]
ghc/interpreter/test/static/msg [new file with mode: 0644]
ghc/interpreter/test/static/s001.hs [new file with mode: 0644]
ghc/interpreter/test/static/s001.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s002.hs [new file with mode: 0644]
ghc/interpreter/test/static/s002.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s003.hs [new file with mode: 0644]
ghc/interpreter/test/static/s003.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s004.hs [new file with mode: 0644]
ghc/interpreter/test/static/s004.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s005.hs [new file with mode: 0644]
ghc/interpreter/test/static/s005.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s006.hs [new file with mode: 0644]
ghc/interpreter/test/static/s006.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s007.hs [new file with mode: 0644]
ghc/interpreter/test/static/s007.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s008.hs [new file with mode: 0644]
ghc/interpreter/test/static/s008.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s009.hs [new file with mode: 0644]
ghc/interpreter/test/static/s009.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s010.hs [new file with mode: 0644]
ghc/interpreter/test/static/s010.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s011.hs [new file with mode: 0644]
ghc/interpreter/test/static/s011.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s012.hs [new file with mode: 0644]
ghc/interpreter/test/static/s012.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s013.hs [new file with mode: 0644]
ghc/interpreter/test/static/s013.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s014.hs [new file with mode: 0644]
ghc/interpreter/test/static/s014.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s015.hs [new file with mode: 0644]
ghc/interpreter/test/static/s015.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s016.hs [new file with mode: 0644]
ghc/interpreter/test/static/s016.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s017.hs [new file with mode: 0644]
ghc/interpreter/test/static/s017.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s018.hs [new file with mode: 0644]
ghc/interpreter/test/static/s018.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s019.hs [new file with mode: 0644]
ghc/interpreter/test/static/s019.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s020.hs [new file with mode: 0644]
ghc/interpreter/test/static/s020.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s021.hs [new file with mode: 0644]
ghc/interpreter/test/static/s021.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s022.hs [new file with mode: 0644]
ghc/interpreter/test/static/s022.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s023.hs [new file with mode: 0644]
ghc/interpreter/test/static/s023.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s024.hs [new file with mode: 0644]
ghc/interpreter/test/static/s024.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s025.hs [new file with mode: 0644]
ghc/interpreter/test/static/s025.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s026.hs [new file with mode: 0644]
ghc/interpreter/test/static/s026.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s027.hs [new file with mode: 0644]
ghc/interpreter/test/static/s027.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s028.hs [new file with mode: 0644]
ghc/interpreter/test/static/s028.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s029.hs [new file with mode: 0644]
ghc/interpreter/test/static/s029.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s030.hs [new file with mode: 0644]
ghc/interpreter/test/static/s030.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s031.hs [new file with mode: 0644]
ghc/interpreter/test/static/s031.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s032.hs [new file with mode: 0644]
ghc/interpreter/test/static/s032.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s033.hs [new file with mode: 0644]
ghc/interpreter/test/static/s033.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s034.hs [new file with mode: 0644]
ghc/interpreter/test/static/s034.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s035.hs [new file with mode: 0644]
ghc/interpreter/test/static/s035.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s036.hs [new file with mode: 0644]
ghc/interpreter/test/static/s036.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s037.hs [new file with mode: 0644]
ghc/interpreter/test/static/s037.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s038.hs [new file with mode: 0644]
ghc/interpreter/test/static/s038.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s039.hs [new file with mode: 0644]
ghc/interpreter/test/static/s039.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s040.hs [new file with mode: 0644]
ghc/interpreter/test/static/s040.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s041.hs [new file with mode: 0644]
ghc/interpreter/test/static/s041.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s042.hs [new file with mode: 0644]
ghc/interpreter/test/static/s042.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s043.hs [new file with mode: 0644]
ghc/interpreter/test/static/s043.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s044.hs [new file with mode: 0644]
ghc/interpreter/test/static/s044.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s045.hs [new file with mode: 0644]
ghc/interpreter/test/static/s045.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s046.hs [new file with mode: 0644]
ghc/interpreter/test/static/s046.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s047.hs [new file with mode: 0644]
ghc/interpreter/test/static/s047.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s048.hs [new file with mode: 0644]
ghc/interpreter/test/static/s048.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s049.hs [new file with mode: 0644]
ghc/interpreter/test/static/s049.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s050.hs [new file with mode: 0644]
ghc/interpreter/test/static/s050.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s051.hs [new file with mode: 0644]
ghc/interpreter/test/static/s051.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s052.hs [new file with mode: 0644]
ghc/interpreter/test/static/s052.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s053.hs [new file with mode: 0644]
ghc/interpreter/test/static/s053.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s054.hs [new file with mode: 0644]
ghc/interpreter/test/static/s054.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s055.hs [new file with mode: 0644]
ghc/interpreter/test/static/s055.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s056.hs [new file with mode: 0644]
ghc/interpreter/test/static/s056.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s057.hs [new file with mode: 0644]
ghc/interpreter/test/static/s057.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s058.hs [new file with mode: 0644]
ghc/interpreter/test/static/s058.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s059.hs [new file with mode: 0644]
ghc/interpreter/test/static/s059.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s060.hs [new file with mode: 0644]
ghc/interpreter/test/static/s060.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s061.hs [new file with mode: 0644]
ghc/interpreter/test/static/s061.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s062.hs [new file with mode: 0644]
ghc/interpreter/test/static/s062.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s064.hs [new file with mode: 0644]
ghc/interpreter/test/static/s064.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s065.hs [new file with mode: 0644]
ghc/interpreter/test/static/s065.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s066.hs [new file with mode: 0644]
ghc/interpreter/test/static/s066.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s067.hs [new file with mode: 0644]
ghc/interpreter/test/static/s067.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s068.hs [new file with mode: 0644]
ghc/interpreter/test/static/s068.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s069.hs [new file with mode: 0644]
ghc/interpreter/test/static/s069.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s070.hs [new file with mode: 0644]
ghc/interpreter/test/static/s070.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s071.hs [new file with mode: 0644]
ghc/interpreter/test/static/s071.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s072.hs [new file with mode: 0644]
ghc/interpreter/test/static/s072.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s073.hs [new file with mode: 0644]
ghc/interpreter/test/static/s073.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s074.hs [new file with mode: 0644]
ghc/interpreter/test/static/s074.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s075.hs [new file with mode: 0644]
ghc/interpreter/test/static/s075.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s076.hs [new file with mode: 0644]
ghc/interpreter/test/static/s076.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s077.hs [new file with mode: 0644]
ghc/interpreter/test/static/s077.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s078.hs [new file with mode: 0644]
ghc/interpreter/test/static/s078.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s079.hs [new file with mode: 0644]
ghc/interpreter/test/static/s079.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s080.hs [new file with mode: 0644]
ghc/interpreter/test/static/s080.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s081.hs [new file with mode: 0644]
ghc/interpreter/test/static/s081.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s082.hs [new file with mode: 0644]
ghc/interpreter/test/static/s082.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s083.hs [new file with mode: 0644]
ghc/interpreter/test/static/s083.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s084.hs [new file with mode: 0644]
ghc/interpreter/test/static/s084.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s085.hs [new file with mode: 0644]
ghc/interpreter/test/static/s085.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s086.hs [new file with mode: 0644]
ghc/interpreter/test/static/s086.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s087.hs [new file with mode: 0644]
ghc/interpreter/test/static/s087.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s088.hs [new file with mode: 0644]
ghc/interpreter/test/static/s088.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s089.hs [new file with mode: 0644]
ghc/interpreter/test/static/s089.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s090.hs [new file with mode: 0644]
ghc/interpreter/test/static/s090.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s091.hs [new file with mode: 0644]
ghc/interpreter/test/static/s091.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s092.hs [new file with mode: 0644]
ghc/interpreter/test/static/s092.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s093.hs [new file with mode: 0644]
ghc/interpreter/test/static/s093.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s094.hs [new file with mode: 0644]
ghc/interpreter/test/static/s094.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s095.hs [new file with mode: 0644]
ghc/interpreter/test/static/s095.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s096.hs [new file with mode: 0644]
ghc/interpreter/test/static/s096.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s097.hs [new file with mode: 0644]
ghc/interpreter/test/static/s097.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s098.hs [new file with mode: 0644]
ghc/interpreter/test/static/s098.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s099.hs [new file with mode: 0644]
ghc/interpreter/test/static/s099.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s100.hs [new file with mode: 0644]
ghc/interpreter/test/static/s100.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s101.hs [new file with mode: 0644]
ghc/interpreter/test/static/s101.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s102.hs [new file with mode: 0644]
ghc/interpreter/test/static/s102.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s103.hs [new file with mode: 0644]
ghc/interpreter/test/static/s103.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s104.hs [new file with mode: 0644]
ghc/interpreter/test/static/s104.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s105.hs [new file with mode: 0644]
ghc/interpreter/test/static/s105.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s106.hs [new file with mode: 0644]
ghc/interpreter/test/static/s106.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s107.hs [new file with mode: 0644]
ghc/interpreter/test/static/s107.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s108.hs [new file with mode: 0644]
ghc/interpreter/test/static/s108.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s109.hs [new file with mode: 0644]
ghc/interpreter/test/static/s109.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s110.hs [new file with mode: 0644]
ghc/interpreter/test/static/s110.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s111.hs [new file with mode: 0644]
ghc/interpreter/test/static/s111.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s112.hs [new file with mode: 0644]
ghc/interpreter/test/static/s112.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s113.hs [new file with mode: 0644]
ghc/interpreter/test/static/s113.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s114.hs [new file with mode: 0644]
ghc/interpreter/test/static/s114.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s115.hs [new file with mode: 0644]
ghc/interpreter/test/static/s116.hs [new file with mode: 0644]
ghc/interpreter/test/static/s117.hs [new file with mode: 0644]
ghc/interpreter/test/static/s117.out1 [new file with mode: 0644]
ghc/interpreter/test/static/s118.hs [new file with mode: 0644]
ghc/interpreter/test/static/s118.out1 [new file with mode: 0644]
ghc/interpreter/test/std/catch1.hs [new file with mode: 0644]
ghc/interpreter/test/std/catch1.in1 [new file with mode: 0644]
ghc/interpreter/test/std/catch1.out1 [new file with mode: 0644]
ghc/interpreter/test/std/catch2.hs [new file with mode: 0644]
ghc/interpreter/test/std/catch2.out1 [new file with mode: 0644]
ghc/interpreter/test/std/complex1.in1 [new file with mode: 0644]
ghc/interpreter/test/std/complex1.out1 [new file with mode: 0644]
ghc/interpreter/test/std/ioerror1.hs [new file with mode: 0644]
ghc/interpreter/test/std/ioerror1.in1 [new file with mode: 0644]
ghc/interpreter/test/std/ioerror1.out1 [new file with mode: 0644]
ghc/interpreter/test/std/ioerror2.hs [new file with mode: 0644]
ghc/interpreter/test/std/ioerror2.in1 [new file with mode: 0644]
ghc/interpreter/test/std/ioerror2.out1 [new file with mode: 0644]
ghc/interpreter/test/std/iohandle.hs [new file with mode: 0644]
ghc/interpreter/test/std/iohandle.in1 [new file with mode: 0644]
ghc/interpreter/test/std/iohandle.out1 [new file with mode: 0644]
ghc/interpreter/test/std/iohandle.tst [new file with mode: 0644]
ghc/interpreter/test/std/list1.hs [new file with mode: 0644]
ghc/interpreter/test/std/list1.in1 [new file with mode: 0644]
ghc/interpreter/test/std/list1.out1 [new file with mode: 0644]
ghc/interpreter/test/std/system1.hs [new file with mode: 0644]
ghc/interpreter/test/std/system1.in1 [new file with mode: 0644]
ghc/interpreter/test/std/system1.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/fix [new file with mode: 0644]
ghc/interpreter/test/typechecker/msg [new file with mode: 0644]
ghc/interpreter/test/typechecker/t000.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t000.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t001.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t001.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t002.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t002.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t003.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t003.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t004.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t004.in1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t004.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t005.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t005.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t006.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t006.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t007.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t007.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t008.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t008.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t009.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t009.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t010.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t010.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t011.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t011.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t012.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t012.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t013.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t013.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t014.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t014.out1 [new file with mode: 0644]
ghc/interpreter/test/typechecker/t015.hs [new file with mode: 0644]
ghc/interpreter/test/typechecker/t015.out1 [new file with mode: 0644]
ghc/interpreter/test/unused/DictHW.input [new file with mode: 0644]
ghc/interpreter/test/unused/DictHW.output [new file with mode: 0644]
ghc/interpreter/test/unused/DictHW1.hs [new file with mode: 0644]
ghc/interpreter/test/unused/DictHW2.hs [new file with mode: 0644]
ghc/interpreter/test/unused/HugsLibs.output [new file with mode: 0644]
ghc/interpreter/test/unused/Loaded.output [new file with mode: 0644]
ghc/interpreter/test/unused/T4.hs [new file with mode: 0644]
ghc/interpreter/test/unused/gc.hs [new file with mode: 0644]
ghc/interpreter/test/unused/gc1.input [new file with mode: 0644]
ghc/interpreter/test/unused/gc1.output [new file with mode: 0644]
ghc/interpreter/test/unused/gc2.input [new file with mode: 0644]
ghc/interpreter/test/unused/gc2.output [new file with mode: 0644]
ghc/interpreter/test/unused/infix.hs [new file with mode: 0644]
ghc/interpreter/test/unused/infix.input [new file with mode: 0644]
ghc/interpreter/test/unused/infix.output [new file with mode: 0644]
ghc/interpreter/test/unused/print.hs [new file with mode: 0644]
ghc/interpreter/test/unused/print.input [new file with mode: 0644]
ghc/interpreter/test/unused/print1.output [new file with mode: 0644]
ghc/interpreter/test/unused/print2.output [new file with mode: 0644]
ghc/interpreter/test/unused/ptrEq.hs [new file with mode: 0644]
ghc/interpreter/test/unused/ptrEq.input [new file with mode: 0644]
ghc/interpreter/test/unused/ptrEq.output [new file with mode: 0644]
ghc/interpreter/test/unused/syntax.hs [new file with mode: 0644]
ghc/interpreter/test/unused/syntax.output [new file with mode: 0644]
ghc/interpreter/test/unused/testDebug.hs [new file with mode: 0644]
ghc/interpreter/test/unused/testScript.in [new file with mode: 0644]
ghc/interpreter/test/unused/testcvar.hs [new file with mode: 0644]
ghc/interpreter/test/unused/unwritable.tst [new file with mode: 0644]
ghc/interpreter/timer.c [new file with mode: 0644]
ghc/interpreter/translate.c [new file with mode: 0644]
ghc/interpreter/translate.h [new file with mode: 0644]
ghc/interpreter/type.c [new file with mode: 0644]
ghc/interpreter/type.h [new file with mode: 0644]
ghc/interpreter/version.h [new file with mode: 0644]
ghc/lib/exts/Addr.lhs
ghc/lib/exts/Bits.lhs
ghc/lib/exts/Dynamic.lhs
ghc/lib/exts/Exception.lhs [new file with mode: 0644]
ghc/lib/exts/Foreign.lhs
ghc/lib/exts/GetOpt.lhs
ghc/lib/exts/GlaExts.lhs
ghc/lib/exts/IOExts.lhs
ghc/lib/exts/Int.lhs
ghc/lib/exts/LazyST.lhs
ghc/lib/exts/Makefile
ghc/lib/exts/MutableArray.lhs
ghc/lib/exts/NumExts.lhs
ghc/lib/exts/ST.lhs
ghc/lib/exts/Weak.lhs [new file with mode: 0644]
ghc/lib/exts/Word.lhs
ghc/lib/misc/BSD.lhs
ghc/lib/misc/ByteOps.lhs
ghc/lib/misc/CString.lhs
ghc/lib/misc/Makefile
ghc/lib/misc/PackedString.lhs
ghc/lib/misc/SocketPrim.lhs
ghc/lib/misc/cbits/ByteOps.c
ghc/lib/misc/cbits/ByteOps.h
ghc/lib/misc/cbits/Makefile
ghc/lib/misc/cbits/PackedString.c [new file with mode: 0644]
ghc/lib/misc/cbits/PackedString.h [new file with mode: 0644]
ghc/lib/misc/cbits/acceptSocket.c
ghc/lib/misc/cbits/bindSocket.c
ghc/lib/misc/cbits/connectSocket.c
ghc/lib/misc/cbits/createSocket.c
ghc/lib/misc/cbits/getPeerName.c
ghc/lib/misc/cbits/getSockName.c
ghc/lib/misc/cbits/ghcReadline.h
ghc/lib/misc/cbits/ghcSockets.h
ghc/lib/misc/cbits/listenSocket.c
ghc/lib/misc/cbits/md5.c
ghc/lib/misc/cbits/readDescriptor.c
ghc/lib/misc/cbits/recvFrom.c
ghc/lib/misc/cbits/sendTo.c
ghc/lib/misc/cbits/shutdownSocket.c
ghc/lib/misc/cbits/socketOpt.c
ghc/lib/misc/cbits/writeDescriptor.c
ghc/lib/posix/Makefile
ghc/lib/posix/PosixIO.lhs
ghc/lib/posix/PosixProcPrim.lhs
ghc/lib/posix/PosixUtil.lhs
ghc/lib/posix/cbits/env.c
ghc/lib/posix/cbits/execvpe.c
ghc/lib/posix/cbits/libposix.h
ghc/lib/posix/cbits/signal.c [new file with mode: 0644]
ghc/lib/std/Array.lhs
ghc/lib/std/CPUTime.lhs
ghc/lib/std/Char.lhs
ghc/lib/std/Directory.lhs
ghc/lib/std/IO.lhs
ghc/lib/std/Ix.lhs
ghc/lib/std/Main.hi-boot
ghc/lib/std/Makefile
ghc/lib/std/Maybe.lhs
ghc/lib/std/Numeric.lhs
ghc/lib/std/PrelAddr.lhs
ghc/lib/std/PrelArr.lhs
ghc/lib/std/PrelArrExtra.lhs [new file with mode: 0644]
ghc/lib/std/PrelBase.lhs
ghc/lib/std/PrelCCall.lhs
ghc/lib/std/PrelConc.lhs
ghc/lib/std/PrelDynamic.lhs [new file with mode: 0644]
ghc/lib/std/PrelErr.hi-boot
ghc/lib/std/PrelErr.lhs
ghc/lib/std/PrelException.hi-boot [new file with mode: 0644]
ghc/lib/std/PrelException.lhs [new file with mode: 0644]
ghc/lib/std/PrelForeign.lhs
ghc/lib/std/PrelGHC.hi-boot
ghc/lib/std/PrelHandle.lhs
ghc/lib/std/PrelIOBase.lhs
ghc/lib/std/PrelList.lhs
ghc/lib/std/PrelMain.lhs
ghc/lib/std/PrelNum.lhs
ghc/lib/std/PrelNumExtra.lhs [new file with mode: 0644]
ghc/lib/std/PrelPack.hi-boot [new file with mode: 0644]
ghc/lib/std/PrelPack.lhs
ghc/lib/std/PrelRead.lhs
ghc/lib/std/PrelST.lhs
ghc/lib/std/PrelWeak.lhs [new file with mode: 0644]
ghc/lib/std/Prelude.lhs
ghc/lib/std/Random.lhs
ghc/lib/std/Ratio.lhs
ghc/lib/std/System.lhs
ghc/lib/std/Time.lhs
ghc/lib/std/cbits/Makefile
ghc/lib/std/cbits/allocMem.c [new file with mode: 0644]
ghc/lib/std/cbits/allocMem.lc [deleted file]
ghc/lib/std/cbits/closeFile.c [new file with mode: 0644]
ghc/lib/std/cbits/closeFile.lc [deleted file]
ghc/lib/std/cbits/createDirectory.c [new file with mode: 0644]
ghc/lib/std/cbits/createDirectory.lc [deleted file]
ghc/lib/std/cbits/directoryAux.c [new file with mode: 0644]
ghc/lib/std/cbits/directoryAux.lc [deleted file]
ghc/lib/std/cbits/echoAux.c [new file with mode: 0644]
ghc/lib/std/cbits/echoAux.lc [deleted file]
ghc/lib/std/cbits/errno.c [new file with mode: 0644]
ghc/lib/std/cbits/errno.lc [deleted file]
ghc/lib/std/cbits/error.h [new file with mode: 0644]
ghc/lib/std/cbits/fileEOF.c [new file with mode: 0644]
ghc/lib/std/cbits/fileEOF.lc [deleted file]
ghc/lib/std/cbits/fileGetc.c [new file with mode: 0644]
ghc/lib/std/cbits/fileGetc.lc [deleted file]
ghc/lib/std/cbits/fileLookAhead.c [new file with mode: 0644]
ghc/lib/std/cbits/fileLookAhead.lc [deleted file]
ghc/lib/std/cbits/fileObject.c [new file with mode: 0644]
ghc/lib/std/cbits/fileObject.lc [deleted file]
ghc/lib/std/cbits/filePosn.c [new file with mode: 0644]
ghc/lib/std/cbits/filePosn.lc [deleted file]
ghc/lib/std/cbits/filePutc.c [new file with mode: 0644]
ghc/lib/std/cbits/filePutc.lc [deleted file]
ghc/lib/std/cbits/fileSize.c [new file with mode: 0644]
ghc/lib/std/cbits/fileSize.lc [deleted file]
ghc/lib/std/cbits/floatExtreme.lc [deleted file]
ghc/lib/std/cbits/flushFile.c [new file with mode: 0644]
ghc/lib/std/cbits/flushFile.lc [deleted file]
ghc/lib/std/cbits/freeFile.c [new file with mode: 0644]
ghc/lib/std/cbits/freeFile.lc [deleted file]
ghc/lib/std/cbits/getBufferMode.c [new file with mode: 0644]
ghc/lib/std/cbits/getBufferMode.lc [deleted file]
ghc/lib/std/cbits/getCPUTime.c [new file with mode: 0644]
ghc/lib/std/cbits/getCPUTime.lc [deleted file]
ghc/lib/std/cbits/getClockTime.c [new file with mode: 0644]
ghc/lib/std/cbits/getClockTime.lc [deleted file]
ghc/lib/std/cbits/getCurrentDirectory.c [new file with mode: 0644]
ghc/lib/std/cbits/getCurrentDirectory.lc [deleted file]
ghc/lib/std/cbits/getDirectoryContents.c [new file with mode: 0644]
ghc/lib/std/cbits/getLock.c [new file with mode: 0644]
ghc/lib/std/cbits/getLock.lc [deleted file]
ghc/lib/std/cbits/inputReady.c [new file with mode: 0644]
ghc/lib/std/cbits/inputReady.lc [deleted file]
ghc/lib/std/cbits/openFile.c [new file with mode: 0644]
ghc/lib/std/cbits/openFile.lc [deleted file]
ghc/lib/std/cbits/readFile.c [new file with mode: 0644]
ghc/lib/std/cbits/readFile.lc [deleted file]
ghc/lib/std/cbits/removeDirectory.c [new file with mode: 0644]
ghc/lib/std/cbits/removeDirectory.lc [deleted file]
ghc/lib/std/cbits/removeFile.c [new file with mode: 0644]
ghc/lib/std/cbits/removeFile.lc [deleted file]
ghc/lib/std/cbits/renameDirectory.c [new file with mode: 0644]
ghc/lib/std/cbits/renameDirectory.lc [deleted file]
ghc/lib/std/cbits/renameFile.c [new file with mode: 0644]
ghc/lib/std/cbits/renameFile.lc [deleted file]
ghc/lib/std/cbits/seekFile.c [new file with mode: 0644]
ghc/lib/std/cbits/seekFile.lc [deleted file]
ghc/lib/std/cbits/setBuffering.c [new file with mode: 0644]
ghc/lib/std/cbits/setBuffering.lc [deleted file]
ghc/lib/std/cbits/setCurrentDirectory.c [new file with mode: 0644]
ghc/lib/std/cbits/setCurrentDirectory.lc [deleted file]
ghc/lib/std/cbits/showTime.c [new file with mode: 0644]
ghc/lib/std/cbits/showTime.lc [deleted file]
ghc/lib/std/cbits/stgio.h
ghc/lib/std/cbits/system.c [new file with mode: 0644]
ghc/lib/std/cbits/system.lc [deleted file]
ghc/lib/std/cbits/timezone.c [new file with mode: 0644]
ghc/lib/std/cbits/timezone.h
ghc/lib/std/cbits/toClockSec.c [new file with mode: 0644]
ghc/lib/std/cbits/toClockSec.lc [deleted file]
ghc/lib/std/cbits/toLocalTime.c [new file with mode: 0644]
ghc/lib/std/cbits/toLocalTime.lc [deleted file]
ghc/lib/std/cbits/toUTCTime.c [new file with mode: 0644]
ghc/lib/std/cbits/toUTCTime.lc [deleted file]
ghc/lib/std/cbits/writeError.c [new file with mode: 0644]
ghc/lib/std/cbits/writeError.lc [deleted file]
ghc/lib/std/cbits/writeFile.c [new file with mode: 0644]
ghc/lib/std/cbits/writeFile.lc [deleted file]
ghc/rts/Adjustor.c [new file with mode: 0644]
ghc/rts/Assembler.c [new file with mode: 0644]
ghc/rts/BlockAlloc.c [new file with mode: 0644]
ghc/rts/BlockAlloc.h [new file with mode: 0644]
ghc/rts/Bytecodes.h [new file with mode: 0644]
ghc/rts/DebugProf.c [new file with mode: 0644]
ghc/rts/DebugProf.h [new file with mode: 0644]
ghc/rts/Disassembler.c [new file with mode: 0644]
ghc/rts/Disassembler.h [new file with mode: 0644]
ghc/rts/Evaluator.c [new file with mode: 0644]
ghc/rts/Evaluator.h [new file with mode: 0644]
ghc/rts/ForeignCall.c [new file with mode: 0644]
ghc/rts/ForeignCall.h [new file with mode: 0644]
ghc/rts/GC.c [new file with mode: 0644]
ghc/rts/GC.h [new file with mode: 0644]
ghc/rts/HeapStackCheck.h [new file with mode: 0644]
ghc/rts/HeapStackCheck.hc [new file with mode: 0644]
ghc/rts/Itimer.c [new file with mode: 0644]
ghc/rts/Itimer.h [new file with mode: 0644]
ghc/rts/MBlock.c [new file with mode: 0644]
ghc/rts/MBlock.h [new file with mode: 0644]
ghc/rts/Main.c [new file with mode: 0644]
ghc/rts/Main.h [new file with mode: 0644]
ghc/rts/Makefile [new file with mode: 0644]
ghc/rts/PrimOps.hc [new file with mode: 0644]
ghc/rts/Printer.c [new file with mode: 0644]
ghc/rts/Printer.h [new file with mode: 0644]
ghc/rts/ProfRts.h [new file with mode: 0644]
ghc/rts/Profiling.c [new file with mode: 0644]
ghc/rts/Proftimer.c [new file with mode: 0644]
ghc/rts/Proftimer.h [new file with mode: 0644]
ghc/rts/QueueTemplate.h [new file with mode: 0644]
ghc/rts/RtsAPI.c [new file with mode: 0644]
ghc/rts/RtsFlags.c [new file with mode: 0644]
ghc/rts/RtsFlags.h [new file with mode: 0644]
ghc/rts/RtsStartup.c [new file with mode: 0644]
ghc/rts/RtsUtils.c [new file with mode: 0644]
ghc/rts/RtsUtils.h [new file with mode: 0644]
ghc/rts/Sanity.c [new file with mode: 0644]
ghc/rts/Sanity.h [new file with mode: 0644]
ghc/rts/Schedule.c [new file with mode: 0644]
ghc/rts/Schedule.h [new file with mode: 0644]
ghc/rts/Signals.c [new file with mode: 0644]
ghc/rts/Signals.h [new file with mode: 0644]
ghc/rts/StablePtr.c [new file with mode: 0644]
ghc/rts/StablePtr.h [new file with mode: 0644]
ghc/rts/Stats.c [new file with mode: 0644]
ghc/rts/Stats.h [new file with mode: 0644]
ghc/rts/StgCRun.c [new file with mode: 0644]
ghc/rts/StgLongLong.c [new file with mode: 0644]
ghc/rts/StgMiscClosures.hc [new file with mode: 0644]
ghc/rts/StgPrimFloat.c [new file with mode: 0644]
ghc/rts/StgRun.h [new file with mode: 0644]
ghc/rts/StgStartup.h [new file with mode: 0644]
ghc/rts/StgStartup.hc [new file with mode: 0644]
ghc/rts/StgStdThunks.hc [new file with mode: 0644]
ghc/rts/Storage.c [new file with mode: 0644]
ghc/rts/Storage.h [new file with mode: 0644]
ghc/rts/StoragePriv.h [new file with mode: 0644]
ghc/rts/Updates.hc [new file with mode: 0644]
ghc/rts/Weak.c [new file with mode: 0644]
ghc/rts/Weak.h [new file with mode: 0644]
ghc/rts/adr [new file with mode: 0644]
ghc/rts/gum/FetchMe.c [new file with mode: 0644]
ghc/rts/gum/FetchMe.h [new file with mode: 0644]
ghc/rts/gum/HLC.h [new file with mode: 0644]
ghc/rts/gum/HLComms.c [new file with mode: 0644]
ghc/rts/gum/LLC.h [new file with mode: 0644]
ghc/rts/gum/LLComms.c [new file with mode: 0644]
ghc/rts/gum/PEOpCodes.h [moved from ghc/includes/PEOpCodes.h with 100% similarity]
ghc/rts/gum/ParInit.c [new file with mode: 0644]
ghc/rts/gum/ParInit.h [new file with mode: 0644]
ghc/rts/gum/ParTypes.h [new file with mode: 0644]
ghc/rts/gum/Parallel.h [new file with mode: 0644]
ghc/rts/gum/SysMan.c [new file with mode: 0644]
ghc/rts/hooks/ErrorHdr.c [new file with mode: 0644]
ghc/rts/hooks/FlagDefaults.c [new file with mode: 0644]
ghc/rts/hooks/InitEachPE.c [new file with mode: 0644]
ghc/rts/hooks/MallocFail.c [new file with mode: 0644]
ghc/rts/hooks/NoRunnableThreads.c [new file with mode: 0644]
ghc/rts/hooks/OnExit.c [new file with mode: 0644]
ghc/rts/hooks/OutOfHeap.c [new file with mode: 0644]
ghc/rts/hooks/PatErrorHdr.c [new file with mode: 0644]
ghc/rts/hooks/StackOverflow.c [new file with mode: 0644]
ghc/rts/hooks/Trace.c [new file with mode: 0644]
ghc/runtime/Makefile [deleted file]
ghc/runtime/c-as-asm/Adjustor.lc [deleted file]
ghc/runtime/c-as-asm/CallWrap_C.lc [deleted file]
ghc/runtime/c-as-asm/HpOverflow.lc [deleted file]
ghc/runtime/c-as-asm/PerformIO.lhc [deleted file]
ghc/runtime/c-as-asm/StablePtr.lc [deleted file]
ghc/runtime/c-as-asm/StablePtrOps.lc [deleted file]
ghc/runtime/c-as-asm/StgDebug.lc [deleted file]
ghc/runtime/c-as-asm/StgMiniInt.lc [deleted file]
ghc/runtime/gmp/COPYING [deleted file]
ghc/runtime/gmp/ChangeLog [deleted file]
ghc/runtime/gmp/INSTALL [deleted file]
ghc/runtime/gmp/Makefile [deleted file]
ghc/runtime/gmp/Makefile.original [deleted file]
ghc/runtime/gmp/README [deleted file]
ghc/runtime/gmp/TODO [deleted file]
ghc/runtime/gmp/VERSION [deleted file]
ghc/runtime/gmp/_mpz_get_str.c [deleted file]
ghc/runtime/gmp/_mpz_set_str.c [deleted file]
ghc/runtime/gmp/alloca.c [deleted file]
ghc/runtime/gmp/cre-conv-tab.c [deleted file]
ghc/runtime/gmp/cre-mparam.c [deleted file]
ghc/runtime/gmp/cre-stddefh.c [deleted file]
ghc/runtime/gmp/gmp-impl.h [deleted file]
ghc/runtime/gmp/gmp.h [deleted file]
ghc/runtime/gmp/gmp.texi [deleted file]
ghc/runtime/gmp/itom.c [deleted file]
ghc/runtime/gmp/longlong.h [deleted file]
ghc/runtime/gmp/mdiv.c [deleted file]
ghc/runtime/gmp/memory.c [deleted file]
ghc/runtime/gmp/mfree.c [deleted file]
ghc/runtime/gmp/min.c [deleted file]
ghc/runtime/gmp/mout.c [deleted file]
ghc/runtime/gmp/move.c [deleted file]
ghc/runtime/gmp/mp.h [deleted file]
ghc/runtime/gmp/mp_clz_tab.c [deleted file]
ghc/runtime/gmp/mp_set_fns.c [deleted file]
ghc/runtime/gmp/mpn_add.c [deleted file]
ghc/runtime/gmp/mpn_cmp.c [deleted file]
ghc/runtime/gmp/mpn_div.c [deleted file]
ghc/runtime/gmp/mpn_dm_1.c [deleted file]
ghc/runtime/gmp/mpn_lshift.c [deleted file]
ghc/runtime/gmp/mpn_mod_1.c [deleted file]
ghc/runtime/gmp/mpn_mul.c [deleted file]
ghc/runtime/gmp/mpn_mul_classic.c-EXTRA [deleted file]
ghc/runtime/gmp/mpn_rshift.c [deleted file]
ghc/runtime/gmp/mpn_rshiftci.c [deleted file]
ghc/runtime/gmp/mpn_sqrt.c [deleted file]
ghc/runtime/gmp/mpn_sub.c [deleted file]
ghc/runtime/gmp/mpq_add.c [deleted file]
ghc/runtime/gmp/mpq_clear.c [deleted file]
ghc/runtime/gmp/mpq_cmp.c [deleted file]
ghc/runtime/gmp/mpq_div.c [deleted file]
ghc/runtime/gmp/mpq_get_den.c [deleted file]
ghc/runtime/gmp/mpq_get_num.c [deleted file]
ghc/runtime/gmp/mpq_init.c [deleted file]
ghc/runtime/gmp/mpq_inv.c [deleted file]
ghc/runtime/gmp/mpq_mul.c [deleted file]
ghc/runtime/gmp/mpq_neg.c [deleted file]
ghc/runtime/gmp/mpq_set.c [deleted file]
ghc/runtime/gmp/mpq_set_den.c [deleted file]
ghc/runtime/gmp/mpq_set_num.c [deleted file]
ghc/runtime/gmp/mpq_set_si.c [deleted file]
ghc/runtime/gmp/mpq_set_ui.c [deleted file]
ghc/runtime/gmp/mpq_sub.c [deleted file]
ghc/runtime/gmp/mpz_abs.c [deleted file]
ghc/runtime/gmp/mpz_add.c [deleted file]
ghc/runtime/gmp/mpz_add_ui.c [deleted file]
ghc/runtime/gmp/mpz_and.c [deleted file]
ghc/runtime/gmp/mpz_clear.c [deleted file]
ghc/runtime/gmp/mpz_clrbit.c [deleted file]
ghc/runtime/gmp/mpz_cmp.c [deleted file]
ghc/runtime/gmp/mpz_cmp_si.c [deleted file]
ghc/runtime/gmp/mpz_cmp_ui.c [deleted file]
ghc/runtime/gmp/mpz_com.c [deleted file]
ghc/runtime/gmp/mpz_div.c [deleted file]
ghc/runtime/gmp/mpz_div_2exp.c [deleted file]
ghc/runtime/gmp/mpz_div_ui.c [deleted file]
ghc/runtime/gmp/mpz_dm.c [deleted file]
ghc/runtime/gmp/mpz_dm_ui.c [deleted file]
ghc/runtime/gmp/mpz_dmincl.c [deleted file]
ghc/runtime/gmp/mpz_fac_ui.c [deleted file]
ghc/runtime/gmp/mpz_gcd.c [deleted file]
ghc/runtime/gmp/mpz_gcdext.c [deleted file]
ghc/runtime/gmp/mpz_get_si.c [deleted file]
ghc/runtime/gmp/mpz_get_str.c [deleted file]
ghc/runtime/gmp/mpz_get_ui.c [deleted file]
ghc/runtime/gmp/mpz_init.c [deleted file]
ghc/runtime/gmp/mpz_inp_raw.c [deleted file]
ghc/runtime/gmp/mpz_inp_str.c [deleted file]
ghc/runtime/gmp/mpz_ior.c [deleted file]
ghc/runtime/gmp/mpz_iset.c [deleted file]
ghc/runtime/gmp/mpz_iset_si.c [deleted file]
ghc/runtime/gmp/mpz_iset_str.c [deleted file]
ghc/runtime/gmp/mpz_iset_ui.c [deleted file]
ghc/runtime/gmp/mpz_mdiv.c [deleted file]
ghc/runtime/gmp/mpz_mdiv_ui.c [deleted file]
ghc/runtime/gmp/mpz_mdm.c [deleted file]
ghc/runtime/gmp/mpz_mdm_ui.c [deleted file]
ghc/runtime/gmp/mpz_mmod.c [deleted file]
ghc/runtime/gmp/mpz_mmod_ui.c [deleted file]
ghc/runtime/gmp/mpz_mod.c [deleted file]
ghc/runtime/gmp/mpz_mod_2exp.c [deleted file]
ghc/runtime/gmp/mpz_mod_ui.c [deleted file]
ghc/runtime/gmp/mpz_mul.c [deleted file]
ghc/runtime/gmp/mpz_mul_2exp.c [deleted file]
ghc/runtime/gmp/mpz_mul_ui.c [deleted file]
ghc/runtime/gmp/mpz_neg.c [deleted file]
ghc/runtime/gmp/mpz_out_raw.c [deleted file]
ghc/runtime/gmp/mpz_out_str.c [deleted file]
ghc/runtime/gmp/mpz_perfsqr.c [deleted file]
ghc/runtime/gmp/mpz_pow_ui.c [deleted file]
ghc/runtime/gmp/mpz_powm.c [deleted file]
ghc/runtime/gmp/mpz_powm_ui.c [deleted file]
ghc/runtime/gmp/mpz_pprime_p.c [deleted file]
ghc/runtime/gmp/mpz_random.c [deleted file]
ghc/runtime/gmp/mpz_random2.c [deleted file]
ghc/runtime/gmp/mpz_realloc.c [deleted file]
ghc/runtime/gmp/mpz_set.c [deleted file]
ghc/runtime/gmp/mpz_set_si.c [deleted file]
ghc/runtime/gmp/mpz_set_str.c [deleted file]
ghc/runtime/gmp/mpz_set_ui.c [deleted file]
ghc/runtime/gmp/mpz_size.c [deleted file]
ghc/runtime/gmp/mpz_sizeinb.c [deleted file]
ghc/runtime/gmp/mpz_sqrt.c [deleted file]
ghc/runtime/gmp/mpz_sqrtrem.c [deleted file]
ghc/runtime/gmp/mpz_sub.c [deleted file]
ghc/runtime/gmp/mpz_sub_ui.c [deleted file]
ghc/runtime/gmp/mtox.c [deleted file]
ghc/runtime/gmp/sdiv.c [deleted file]
ghc/runtime/gmp/test-stddefh.c [deleted file]
ghc/runtime/gmp/xtom.c [deleted file]
ghc/runtime/gum/FetchMe.lhc [deleted file]
ghc/runtime/gum/GlobAddr.lc [deleted file]
ghc/runtime/gum/HLComms.lc [deleted file]
ghc/runtime/gum/Hash.lc [deleted file]
ghc/runtime/gum/LLComms.lc [deleted file]
ghc/runtime/gum/Pack.lc [deleted file]
ghc/runtime/gum/ParInit.lc [deleted file]
ghc/runtime/gum/RBH.lc [deleted file]
ghc/runtime/gum/Sparks.lc [deleted file]
ghc/runtime/gum/SysMan.lc [deleted file]
ghc/runtime/gum/Unpack.lc [deleted file]
ghc/runtime/hooks/ErrorHdr.lc [deleted file]
ghc/runtime/hooks/ExitHook.lc [deleted file]
ghc/runtime/hooks/IOErrorHdr.lc [deleted file]
ghc/runtime/hooks/InitEachPE.lc [deleted file]
ghc/runtime/hooks/NoRunnableThrds.lc [deleted file]
ghc/runtime/hooks/OutOfHeap.lc [deleted file]
ghc/runtime/hooks/OutOfStk.lc [deleted file]
ghc/runtime/hooks/OutOfVM.lc [deleted file]
ghc/runtime/hooks/PatErrorHdr.lc [deleted file]
ghc/runtime/hooks/SizeHooks.lc [deleted file]
ghc/runtime/hooks/TraceHooks.lc [deleted file]
ghc/runtime/main/GranSim.lc [deleted file]
ghc/runtime/main/Itimer.lc [deleted file]
ghc/runtime/main/Mallocs.lc [deleted file]
ghc/runtime/main/RtsFlags.lc [deleted file]
ghc/runtime/main/SMRep.lc [deleted file]
ghc/runtime/main/Select.lc [deleted file]
ghc/runtime/main/Signals.lc [deleted file]
ghc/runtime/main/StgOverflow.lc [deleted file]
ghc/runtime/main/StgStartup.lhc [deleted file]
ghc/runtime/main/StgThreads.lhc [deleted file]
ghc/runtime/main/StgUpdate.lhc [deleted file]
ghc/runtime/main/Threads.lc [deleted file]
ghc/runtime/main/Ticky.lc [deleted file]
ghc/runtime/main/TopClosure.lc [deleted file]
ghc/runtime/main/main.lc [deleted file]
ghc/runtime/prims/LongLong.lc [deleted file]
ghc/runtime/prims/PrimArith.lc [deleted file]
ghc/runtime/prims/PrimMisc.lc [deleted file]
ghc/runtime/prims/test-float.c [deleted file]
ghc/runtime/profiling/CHANGES-REQD [deleted file]
ghc/runtime/profiling/CostCentre.lc [deleted file]
ghc/runtime/profiling/Hashing.lc [deleted file]
ghc/runtime/profiling/HeapProfile.lc [deleted file]
ghc/runtime/profiling/Indexing.lc [deleted file]
ghc/runtime/profiling/Timer.lc [deleted file]
ghc/runtime/storage/SM1s.lc [deleted file]
ghc/runtime/storage/SM2s.lc [deleted file]
ghc/runtime/storage/SMap.lc [deleted file]
ghc/runtime/storage/SMcheck.lc [deleted file]
ghc/runtime/storage/SMcompacting.lc [deleted file]
ghc/runtime/storage/SMcompacting.lh [deleted file]
ghc/runtime/storage/SMcopying.lc [deleted file]
ghc/runtime/storage/SMcopying.lh [deleted file]
ghc/runtime/storage/SMdu.lc [deleted file]
ghc/runtime/storage/SMevac.lc [deleted file]
ghc/runtime/storage/SMextn.lc [deleted file]
ghc/runtime/storage/SMextn.lh [deleted file]
ghc/runtime/storage/SMgen.lc [deleted file]
ghc/runtime/storage/SMinit.lc [deleted file]
ghc/runtime/storage/SMinternal.lh [deleted file]
ghc/runtime/storage/SMmark.lhc [deleted file]
ghc/runtime/storage/SMmarkDefs.lh [deleted file]
ghc/runtime/storage/SMmarking.lc [deleted file]
ghc/runtime/storage/SMscan.lc [deleted file]
ghc/runtime/storage/SMscav.lc [deleted file]
ghc/runtime/storage/SMstacks.lc [deleted file]
ghc/runtime/storage/SMstatic.lc [deleted file]
ghc/runtime/storage/SMstats.lc [deleted file]
ghc/runtime/storage/mprotect.lc [deleted file]
ghc/utils/mkdependHS/Makefile
ghc/utils/mkdependHS/mkdependHS.prl
glafp-utils/lndir/lndir.c
glafp-utils/mkdependC/mkdependC.prl
glafp-utils/runstdtest/runstdtest.prl
mk/config.h.in
mk/config.mk.in
mk/paths.mk
mk/suffix.mk
mk/target.mk

index 294da5c..fb03bfa 100644 (file)
 /* Define as the symbol which marks the end of the data section */
 #undef DATA_SECTION_END_MARKER
 
-/* Define as the decl which terminates the data section */
-#undef DATA_SECTION_END_MARKER_DECL
-
 /* Define if time.h or sys/time.h define the altzone variable */
 #undef HAVE_ALTZONE
 
-/* Define if you have /bin/sh */
-#define HAVE_BIN_SH 0
-
-/* Define if you have the GetModuleFileName function.  */
-#define HAVE_GETMODULEFILENAME 0
-
 /* Define if C compiler supports long long types */
 #undef HAVE_LONG_LONG
 
 /* Define if fcntl.h defines O_BINARY */
 #undef HAVE_O_BINARY
 
-/* Define if compiler supports prototypes. */
-#define HAVE_PROTOTYPES 0
-
-/* Define if you have the WinExec function.  */
-#define HAVE_WINEXEC 0
-
 /* Define if C Symbols have a leading underscore added by the compiler */
 #undef LEADING_UNDERSCORE
 
 /* Define as the symbol which marks the end of the text section */
 #undef TEXT_SECTION_END_MARKER
 
-/* Define to decl that terminates text section. */
-#undef TEXT_SECTION_END_MARKER_DECL
-
 /* Define to the type of the timezone variable (usually long or time_t) */
 #undef TYPE_TIMEZONE
 
-/* Define if signal handlers have type void (*)(int)
- * (Otherwise, they're assumed to have type int (*)(void).)
- */
-#define VOID_INT_SIGNALS 0
 \f
 /* Leave that blank line there!!  Autoheader needs it.
    If you're adding to this file, keep in mind:
index f2f8006..2ea2349 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: aclocal.m4,v 1.34 1998/11/24 21:28:00 reid Exp $
+dnl $Id: aclocal.m4,v 1.35 1998/12/02 13:17:10 simonm Exp $
 dnl 
 dnl Extra autoconf macros for the Glasgow fptools
 dnl
@@ -470,7 +470,7 @@ for i in etext _etext __etext; do
   fi
 done
 if test "$not_done" = 1; then
-FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_cv_end_of_text)
+FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_cv_end_of_text);
 if test "$fptools_cv_end_of_text" = yes; then
   AC_DEFINE(TEXT_SECTION_END_MARKER_DECL, etext asm("etext"))
   AC_DEFINE(TEXT_SECTION_END_MARKER, etext)
@@ -496,7 +496,7 @@ for i in end _end __end; do
   fi
 done
 if test "$not_done" = 1; then
-FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_cv_end_of_data)
+FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_cv_end_of_data);
 if test "$fptools_cv_end_of_data" = yes; then
   AC_DEFINE(DATA_SECTION_END_MARKER_DECL, end asm("end"))
   AC_DEFINE(DATA_SECTION_END_MARKER, end)
index ab3144c..2454c91 100644 (file)
@@ -436,7 +436,7 @@ dnl ** check for full ANSI header (.h) files
 AC_HEADER_STDC
 
 dnl ** check for specific header (.h) files that we are interested in
-AC_CHECK_HEADERS(Files.h assert.h console.h ctype.h dirent.h errno.h fcntl.h float.h ftw.h grp.h ieee754.h malloc.h memory.h nlist.h pascal.h pwd.h sgtty.h siginfo.h signal.h stat.h stdlib.h stdarg.h string.h sys/fault.h sys/file.h sys/ioctl.h sys/mman.h sys/param.h sys/procfs.h sys/resource.h sys/signal.h sys/socket.h netinet/tcp.h sys/stat.h sys/syscall.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/types.h sys/utsname.h sys/vadvise.h sys/wait.h termio.h termios.h time.h types.h unistd.h utime.h values.h vfork.h readline/readline.h bfd.h)
+AC_CHECK_HEADERS(Files.h assert.h console.h ctype.h dirent.h errno.h fcntl.h float.h ftw.h grp.h ieee754.h malloc.h memory.h nlist.h pascal.h pwd.h sgtty.h siginfo.h signal.h stat.h stdlib.h stdarg.h string.h sys/fault.h sys/file.h sys/ioctl.h sys/limits.h sys/mman.h sys/param.h sys/procfs.h sys/resource.h sys/signal.h sys/socket.h netinet/tcp.h sys/stat.h sys/syscall.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/types.h sys/utsname.h sys/vadvise.h sys/wait.h termio.h termios.h time.h types.h unistd.h utime.h values.h vfork.h readline/readline.h bfd.h)
 
 dnl ** check for DOS include files
 AC_CHECK_HEADERS(dos.h conio.h io.h std.h) 
index 38ae768..7fc912c 100644 (file)
@@ -1,8 +1,8 @@
-            The Glasgow Haskell Compiler -- version 3.02
+            The Glasgow Haskell Compiler -- version 4.01
            ==============================================
 
 We are pleased to announce a new release of the Glasgow Haskell
-Compiler (GHC), version 3.02.  The source distribution is freely
+Compiler (GHC), version 4.01.  The source distribution is freely
 available via the World-Wide Web and through anon. FTP; details below.
 
 Haskell is "the" standard lazy functional programming language; the
@@ -14,15 +14,19 @@ related information is available from the Haskell home page at
 + What's new
 =============
 
-GHC 3.02 is a source-only release.  Major news items:
+GHC 4.01 is a small increment over 4.00.  Many bugs have been fixed.
+The following features are new:
 
-       * A new specialiser,
-       * A new unsafeCoerce# primitive.
-       * A NOINLINE pragma.
-       * Many bugs fixed, including several performance-related ones,
+       * Weak pointers,
+       * The foreign function interface is now complete.
 
-GHC 3.02 produces the fastest code since 0.29, but there's still
-plenty of tuning to do.
+In addition, bootstrapping the compiler should now work out of the box.
+
+The following things have not been fixed yet:
+
+       * The native code generator is still flaky, and is turned off by
+         default for the time being.
+       * The profiler is still flaky.
 
 + Mailing lists
 ================
@@ -64,21 +68,22 @@ for tar, please)!
 + System requirements
 ======================
 
-To compile up this source-only release, you need a machine with 16+MB
+To compile up this source-only release, you need a machine with 32+MB
 memory, GNU C (`gcc'), `perl' plus a version of GHC installed (version
-2.10 at least). We have seen GHC work on these platforms:
+2.10 at least).  This release is known to work on the following platforms:
+
+  * i386-unknown-{linux,solaris2,freebsd,cygwin32}
+  * sparc-sun-{sunos4,solaris2}
+
+Ports to the following platforms should be relatively easy, but
+haven't been tested due to lack of time/hardware:
 
   * alpha-dec-osf{2,3}
   * hppa1.1-hp-hpux{9,10}
-  * sparc-sun-{sunos4,solaris2}
   * mips-sgi-irix{5,6}
-  * i386-unknown-{linux,solaris2,freebsd,cygwin32}.
   * {rs6000,powerpc}-ibm-aix
 
-Similar platforms should work with minimal hacking effort.  The installer's
-guide included in distribution gives a complete run-down of what-ports-work;
-an on-line version can be found at
-
-   http://www.dcs.gla.ac.uk/fp/software/ghc/3.02/installation_guide/installing_toc.html
+The installer's guide included in distribution gives a complete
+run-down of what-ports-work; an on-line version can be found at
 
-EOF
+   http://www.dcs.gla.ac.uk/fp/software/ghc/4.01/installation_guide/installing_toc.html
index 1386d2c..d247d62 100644 (file)
@@ -1,5 +1,5 @@
 #-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.7 1997/03/24 08:39:19 sof Exp $
+# $Id: Makefile,v 1.8 1998/12/02 13:17:13 simonm Exp $
 #
 
 TOP=.
@@ -21,9 +21,9 @@ include $(TOP)/mk/boilerplate.mk
 # we descend into compiler/ and lib/
 #
 ifeq "$(GhcWithHscBuiltViaC)" "NO"
-SUBDIRS = utils driver includes runtime docs compiler lib
+SUBDIRS = utils driver includes rts docs compiler lib
 else
-SUBDIRS = utils driver includes runtime docs lib compiler
+SUBDIRS = utils driver includes rts docs lib compiler
 endif
 
 # Easier to copy
index 85c9bb5..7de5789 100644 (file)
@@ -1 +1 @@
-The Glamorous Glasgow Haskell Compiler, version 3.02, patchlevel 0
+The Glamorous Glasgow Haskell Compiler, version 4.01, patchlevel 0
index d055879..566b280 100644 (file)
@@ -1,41 +1,47 @@
-This is version 3.02 of the Glorious Glasgow Haskell compilation
-system (GHC).  GHC 3.02 is a compiler for Haskell 1.4.
+This is version 4.01 of the Glorious Glasgow Haskell compilation
+system (GHC).  GHC 4.01 is a compiler for Haskell 1.4.
 
 Haskell is "the" standard lazy functional programming language.
 Haskell 1.4 is the current version of the language, released in 
 April 1997.  The language definition is on the Web at
 http://www.haskell.org/report/index.html.
 
+More information on GHC can be found on its web page
+
+       http://www.dcs.gla.ac.uk/fp/software/ghc
+
 GHC documentation of interest:
 
-* docs/installing.{dvi,info,html}: How to configure, build, and
+* docs/installing.{dvi,html}: How to configure, build, and
   install the system.
 
   The document, as with many others, is in TeX-produced DVI format
-  (.dvi suffix), or GNU Info format (.info); the latter is close to
-  plain ASCII, if that's what you want.
+  (.dvi suffix), or HTML.
 
-* ghc/docs/users_guide/user.{dvi,info,html}: How to use GHC; e.g., what
+* ghc/docs/users_guide/user.{dvi,html}: How to use GHC; e.g., what
   options are available, how to cope with common problems, how to use
   the profiling facilities, etc.
 
+* ghc/docs/libraries/libs.{dvi,html}: Several libraries that are
+  provided by both GHC and Hugs.
+
 We welcome your comments and suggestions about this software!  Please
 do not suffer or grumble in silence.  The "bug reports" section of the
-User's Guide (docs/users_guide/user.{dvi,info,html}) says what we
-would like to know when you report a problem.
+User's Guide says what we would like to know when you report a
+problem.
 
-Current AQUA team (all @dcs.gla.ac.uk):
+Current GHC team:
+
+    Simon Peyton Jones ( simonpj@microsoft.com)    [our Fearless Leader]
+    Sigbjorn Finne     (v-sfinne@microsoft.com)    [hired hand]
+    Simon Marlow       (t-simonm@microsoft.com)    [hired hand]
+
+Past contributors and/or continuing advisors (all @dcs.gla.ac.uk):
 
-    Sigbjorn Finne     (sof)       [hired hand]
-    Hans Wolfgang Loidl (hwloidl)   [PhD student]
-    Simon Marlow       (simonm)    [hired hand]
     Thomas Nordin       (nordin)    [@cse.ogi.edu; Green Card Hero]
-    Simon Peyton Jones (simonpj)   [our Fearless Leader]
+    Hans Wolfgang Loidl (hwloidl)   [PhD student]
     Patrick Sansom     (sansom)    [hired hand, Bidirectional Analyses]
     Phil Trinder       (trinder)   [hired hand, Parade]
-
-Past contributors and/or continuing advisors:
-
     Andy Gill          (andy)      [PhD student; at HP]
     Cordy Hall         (cvh)       [GRASP]
     Kevin Hammond      (kh)        [GRASP; at St. Andrews]
@@ -49,6 +55,8 @@ Past contributors and/or continuing advisors:
     David N Turner     (dnt)       [Linear Types; at An-Teallach]
     Phil Wadler                (wadler)    [GRASP; at Lucent]
 
+And many others who've contributed bits of code / bug reports in the past.
+
 Cool people who've let us use their machines:
 
     sparc-sun-sunos{4,5}   PacSoft, Oregon Graduate Institute
@@ -65,14 +73,13 @@ Simon's projects' acronyms:
     GRASP ('90-'92): Graph reduction applications support project
     AQUA  ('93-   ): Declarative systems architecture: a quantitative approach
 
-GHC WWW page: http://www.dcs.gla.ac.uk/fp/software/ghc/
-
 E-mail contacts:
     glasgow-haskell-bugs@dcs.gla.ac.uk     (bug reports mailing list)
     glasgow-haskell-users@dcs.gla.ac.uk            (users' mailing list)
 
 Send mail to majordomo@dcs.gla.ac.uk with 'help' in the body of the
-message for information on joining either of these mailing lists.
+message for information on joining/leaving either of these mailing
+lists.
 
 Anonymous FTP site: ftp://ftp.dcs.gla.ac.uk:pub/haskell/glasgow.
 Mostly mirrored by ftp.cs.chalmers.se and haskell.org (same
diff --git a/ghc/compiler/DEPEND-NOTES b/ghc/compiler/DEPEND-NOTES
new file mode 100644 (file)
index 0000000..c1b64f3
--- /dev/null
@@ -0,0 +1,106 @@
+ToDo
+~~~~
+* Test effect of eta-expanding past (case x of ..)
+
+* Bottom strictness isn't right.  Should be (eg) SSX, not just X.
+
+* Enumeration types in worker/wrapper for strictness analysis
+
+* Use (!) types in data cons to unbox.
+
+* Check constant folding
+
+* .hi file isn't updated if the only change is to the exports.
+  For example, UgenAll.lhs re-exports all of U_binding.hs; when a data type
+  decl in the latter changes, the .hi file for the former isn't updated.
+  I think this happens when a module exports another mdodule thus:
+
+       module UgenAll( module U_binding, ... ) where
+
+* This should be reported as an error:
+       data T k = MkT (k Int#)
+
+* Bogus report of overlapped pattern for
+       f (R {field = [c]}) = 1
+       f (R {})              = 2
+  This shows up for TyCon.maybeTyConSingleCon
+
+*  > module Main( main ) where
+
+   > f :: String -> Int
+   > f "=<" = 0
+   > f "="  = 0
+   
+   > g :: [Char] -> Int
+   > g ['=','<'] = 0
+   > g ['=']     = 0
+   
+   > main = return ()
+   
+   For ``f'' the following is reported.
+   
+   tmp.lhs:4: 
+    Pattern match(es) are overlapped in the definition of function `f'
+            "=" = ...
+
+   There are no complaints for definition for ``g''.
+
+* Without -O I don't think we need change the module version
+  if the usages change; I forget why it changes even with -O
+
+* Record selectors for existential type; no good!  What to do?
+  Record update doesn't make sense either.
+
+  Need to be careful when figuring out strictness, and when generating
+  worker-wrapper split.
+
+  Also when deriving.
+
+* Consructor re-use via CSE
+
+               Notes on module dependencies
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The Name/Var/Type group is a bit complicated. Here's the deal
+
+       Name, PrimRep, FieldLabel (uses Type.Type)
+then
+       Var (uses Const.Con, IdInfo.IdInfo, Type.GenType, Type.Kind)
+then
+       VarEnv, VarSet
+then
+       Class (uses TyCon.TyCon, Type.Type, SpecEnv.SpecEnv)
+then
+       TyCon (uses Type.Type, Type.Kind, DataCon.DataCon)
+then
+       Type (uses [DataCon.DataCon])
+then
+       DataCon, TysPrim, Unify, SpecEnv, PprType
+then
+       IdInfo, TysWiredIn (uses DataCon.mkDataCon, [MkId.mkDataConId])
+then
+       PrimOp (uses PprType, TysWiredIn)
+then
+       Const (needs PrimOp, [TysWiredIn.stringTy])
+then
+       Id (needs Const.Con(..)), CoreSyn
+then
+       CoreUtils, OccurAnal
+then
+       CoreUnfold (uses OccurAnal)
+then
+       MkId (uses CoreUnfold)
+       
+
+PrimOp uses TysWiredIn
+
+
+Add
+~~~
+basicTypes/DataCon.lhs
+basicTypes/DataCon.hi-boot
+
+Remove
+~~~~~~
+specialise/SpecUtils.lhs
+basicTypes/IdUtils.lhs
index c037578..a89de68 100644 (file)
@@ -1,5 +1,5 @@
 # -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.45 1998/08/21 11:03:30 sof Exp $
+# $Id: Makefile,v 1.46 1998/12/02 13:17:15 simonm Exp $
 
 TOP = ..
 include $(TOP)/mk/boilerplate.mk
@@ -60,14 +60,21 @@ endif
 
 
 HS_SRCS = $(SRCS_UGNHS) \
-          $(foreach dir,$(DIRS),$(wildcard $(dir)/*.lhs)) \
-         rename/ParseIface.hs
+          $(foreach dir,$(DIRS),$(wildcard $(dir)/*.lhs))
+
+ifneq "$(GhcWithHscBuiltViaC)" "YES"
+HS_SRCS += rename/ParseIface.hs
+endif
 
 # NB: it's no good to include *.hs in the top-line wildcard, because the .hs files
 #     in parser/ may not have been created at that point.
 
 HCS      = $(patsubst %.lhs, %.hc, $(patsubst %.hs, %.hc, $(HS_SRCS)))
 
+# ParseIface.hs ain't part of HS_SRCS when this is on..
+ifeq "$(GhcWithHscBuiltViaC)" "YES"
+HCS      += rename/ParseIface.hc
+endif
 
 HS_OBJS  = \
   $(patsubst %.hc, %.o, $(HCS)) \
@@ -91,15 +98,14 @@ C_SRCS += $(SRCS_UGNC)
 LIBOBJS = \
   $(SRCS_UGN_OBJS) parser/hslexer.o parser/hsparser.tab.o \
   parser/id.o parser/infix.o parser/syntax.o parser/type2context.o \
-  parser/util.o
+  parser/util.o parser/ctypes.o
 
-#
 # stuff you get for free in a source distribution
 # 
-SRC_DIST_FILES += rename/ParseIface.hs \
- parser/U_tree.c parser/tree.h parser/tree.c \
- parser/hsparser.tab.c parser/hsparser.tab.h \
- parser/hslexer.c
+SRC_DIST_FILES += rename/ParseIface.hs \
+ parser/U_tree.c parser/tree.h parser/tree.c \
+ parser/hsparser.tab.c parser/hsparser.tab.h \
+ parser/hslexer.c
 
 # -----------------------------------------------------------------------------
 #              Haskell compilations
@@ -138,9 +144,13 @@ absCSyn/PprAbsC_HC_OPTS    = -H10m
 basicTypes/IdInfo_HC_OPTS      = -K2m
 hsSyn/HsExpr_HC_OPTS           = -K2m
 main/Main_HC_OPTS              = -fvia-C
+main/Constants_HC_OPTS         = -DHscIfaceFileVersion=$(HscIfaceFileVersion)
+
+ifneq "$(GhcWithHscBuiltViaC)" "YES"
 ifeq "$(GhcReportCompiles)" "YES"
 main/Main_HC_OPTS              += -syslib misc -DREPORT_TO_MOTHERLODE
 endif
+endif
 
 main/CmdLineOpts_HC_OPTS       = -fvia-C
 nativeGen/PprMach_HC_OPTS      = -K2m
@@ -179,13 +189,19 @@ rename/RnExpr_HC_OPTS             = -H10m
 rename/RnNames_HC_OPTS         = -H12m
 rename/RnMonad_HC_OPTS         = -fvia-C
 specialise/Specialise_HC_OPTS  = -Onot -H12m
+simplCore/Simplify_HC_OPTS     = -H15m 
 typecheck/TcGenDeriv_HC_OPTS   = -H10m
 
+# tmp, -- SDM
+specialise/Specialise_HC_OPTS  += -fno-prune-tydecls
+
 # Was 10m for 2.10
 typecheck/TcHsSyn_HC_OPTS      = -H15m 
 
+
 # Was 10m for 2.10
 typecheck/TcExpr_HC_OPTS       = -H15m
+typecheck/TcBinds_HC_OPTS       = -H10m
 
 typecheck/TcEnv_HC_OPTS                = -H10m
 utils/Argv_HC_OPTS             = -fvia-C
@@ -240,7 +256,7 @@ SRC_FLEX_OPTS += -s
 
 parser/hschooks.o : parser/hschooks.c
        @$(RM) $@
-       $(HC) -c -o $@ $(HC_OPTS) parser/hschooks.c
+       $(HC) -c -o $@ -I$(GHC_INCLUDE_DIR) $(HC_OPTS) parser/hschooks.c
 
 
 # Interface-file parser uses Happy
@@ -266,9 +282,12 @@ CLEAN_FILES += hsp
 #              Linking
 
 SRC_LD_OPTS += -no-link-chk
+
+ifneq "$(GhcWithHscBuiltViaC)" "YES"
 ifeq "$(GhcReportCompiles)" "YES"
 SRC_LD_OPTS += -syslib misc -syslib exts
 endif
+endif
 
 #-----------------------------------------------------------------------------
 #              install
@@ -285,7 +304,11 @@ INSTALL_LIBEXECS += hsc hsp
 #
 # Before doing `make depend', need to build all derived Haskell source files
 #
-depend :: $(LOOPS) $(SRCS_UGNHS) rename/ParseIface.hs
+depend :: $(LOOPS) $(SRCS_UGNHS)
+
+ifneq "$(GhcWithHscBuiltViaC)" "YES"
+depend :: rename/ParseIface.hs
+endif
 
 #-----------------------------------------------------------------------------
 #              clean
index 05972fa..ad4257c 100644 (file)
@@ -1,5 +1,7 @@
 %
-% (c) The GRASP/AQUA Project, Glasgow University, 1992-1996
+% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
+%
+% $Id: AbsCSyn.lhs,v 1.18 1998/12/02 13:17:16 simonm Exp $
 %
 \section[AbstractC]{Abstract C: the last stop before machine code}
 
@@ -29,32 +31,28 @@ module AbsCSyn {- (
 
        -- registers
        MagicId(..), node, infoptr,
-       isVolatileReg, noLiveRegsMask, mkLiveRegsMask,
+       isVolatileReg,
        CostRes(Cost)
     )-} where
 
 #include "HsVersions.h"
 
 import {-# SOURCE #-} ClosureInfo ( ClosureInfo )
-import {-# SOURCE #-} CLabel     ( CLabel )
 
 #if  ! OMIT_NATIVE_CODEGEN
 import {-# SOURCE #-} MachMisc
 #endif
 
+import CLabel
 import Constants       ( 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 HeapOffs                ( VirtualSpAOffset, VirtualSpBOffset,
-                         VirtualHeapOffset, HeapOffset
-                       )
-import CostCentre       ( CostCentre )
-import Literal         ( mkMachInt, Literal )
-import PrimRep         ( isFollowableRep, PrimRep(..) )
+                         mAX_Double_REG, spRelToInt )
+import CostCentre       ( CostCentre, CostCentreStack )
+import Const           ( mkMachInt, Literal )
+import PrimRep         ( PrimRep(..) )
 import PrimOp           ( PrimOp )
 import Unique           ( Unique )
+import StgSyn          ( SRT(..) )
+import BitSet                          -- for liveness masks
 
 \end{code}
 
@@ -108,7 +106,6 @@ stored in a mixed type location.)
                                --  CSwitch m [(tag,code)] AbsCNop == code
 
   | CCodeBlock CLabel AbstractC
-                       -- [amode analog: CLabelledCode]
                        -- A labelled block of code; this "statement" is not
                        -- executed; rather, the labelled code will be hoisted
                        -- out to the top level (out of line) & it can be
@@ -119,13 +116,11 @@ stored in a mixed type location.)
        RegRelative     -- address of the info ptr
        CAddrMode       -- cost centre to place in closure
                        --   CReg CurCostCentre or CC_HDR(R1.p{-Node-})
-       Bool            -- inplace update or allocate
 
   | COpStmt
        [CAddrMode]     -- Results
        PrimOp
        [CAddrMode]     -- Arguments
-       Int             -- Live registers (may be obtainable from volatility? ADR)
        [MagicId]       -- Potentially volatile/live registers
                        -- (to save/restore around the call/op)
 
@@ -145,6 +140,17 @@ stored in a mixed type location.)
                        -- For example { a := b, b := a }
                        --      needs to go via (at least one) temporary
 
+  | CCheck             -- heap or stack checks, or both.  
+       CCheckMacro     -- These might include some code to fill in tags 
+       [CAddrMode]     -- on the stack, so we can't use CMacroStmt below.
+       AbstractC
+
+  | CRetDirect                 -- Direct return
+        Unique                 -- for making labels
+       AbstractC               -- return code
+       (CLabel,SRT)            -- SRT info
+       Liveness                -- stack liveness at the return point
+
   -- see the notes about these next few; they follow below...
   | CMacroStmt         CStmtMacro      [CAddrMode]
   | CCallProfCtrMacro  FAST_STRING     [CAddrMode]
@@ -166,50 +172,42 @@ stored in a mixed type location.)
   | CStaticClosure
        CLabel  -- The (full, not base) label to use for labelling the closure.
        ClosureInfo
-       CAddrMode       -- cost centre identifier to place in closure
-       [CAddrMode]     -- free vars; ptrs, then non-ptrs
+       CAddrMode               -- cost centre identifier to place in closure
+       [CAddrMode]             -- free vars; ptrs, then non-ptrs.
 
+  | CSRT CLabel [CLabel]       -- SRT declarations: basically an array of 
+                               -- pointers to static closures.
+  
+  | CBitmap CLabel LivenessMask        -- A larger-than-32-bits bitmap.
 
   | CClosureInfoAndCode
-       ClosureInfo     -- Explains placement and layout of closure
-       AbstractC       -- Slow entry point code
+       ClosureInfo             -- Explains placement and layout of closure
+       AbstractC               -- Slow entry point code
        (Maybe AbstractC)
-                       -- Fast entry point code, if any
-       CAddrMode       -- Address of update code; Nothing => should never be used
-                       -- (which is the case for all except constructors)
-       String          -- Closure description; NB we can't get this from
-                       -- ClosureInfo, because the latter refers to the *right* hand
-                       -- side of a defn, whereas the "description" refers to *left*
-                       -- hand side
-       Int             -- Liveness info; this is here because it is
-                       -- easy to produce w/in the CgMonad; hard
-                       -- thereafter.  (WDP 95/11)
-
-  | CRetVector                 -- Return vector with "holes"
-                               -- (Nothings) for the default
-       CLabel                  -- vector-table label
-       [Maybe CAddrMode]
-       AbstractC               -- (and what to put in a "hole" [when Nothing])
-
-  | CRetUnVector       -- Direct return
-       CLabel          -- unvector-table label
-       CAddrMode       -- return code
-
-  | CFlatRetVector     -- A labelled block of static data
-       CLabel          -- This is the flattened version of CRetVector
+                               -- Fast entry point code, if any
+       (CLabel,SRT)            -- SRT info
+       String                  -- Closure description; NB we can't get this
+                               -- from ClosureInfo, because the latter refers 
+                               -- to the *right* hand side of a defn, whereas
+                               -- the  "description" refers to *left* hand side
+
+  | CRetVector                 -- A labelled block of static data
+       CLabel
        [CAddrMode]
+       (CLabel,SRT)            -- SRT info
+       Liveness                -- stack liveness at the return point
 
-  | CCostCentreDecl    -- A cost centre *declaration*
-       Bool            -- True  <=> local => full declaration
-                       -- False <=> extern; just say so
+  | CCostCentreDecl            -- A cost centre *declaration*
+       Bool                    -- True  <=> local => full declaration
+                               -- False <=> extern; just say so
        CostCentre
 
-  | CClosureUpdInfo
-       AbstractC       -- InRegs Info Table (CClosureInfoTable)
-                       --                    ^^^^^^^^^^^^^^^^^
-                       --                                out of date -- HWL
+  | CCostCentreStackDecl       -- A cost centre stack *declaration*
+       CostCentreStack         -- this is the declaration for a
+                               -- pre-defined singleton CCS (see 
+                               -- CostCentre.lhs)
 
-  | CSplitMarker       -- Split into separate object modules here
+  | CSplitMarker               -- Split into separate object modules here
 \end{code}
 
 About @CMacroStmt@, etc.: notionally, they all just call some
@@ -224,21 +222,14 @@ macros.  An example is @STK_CHK@, which checks for stack-space
 overflow.  This enumeration type lists all such macros:
 \begin{code}
 data CStmtMacro
-  = ARGS_CHK_A_LOAD_NODE
-  | ARGS_CHK_A
-  | ARGS_CHK_B_LOAD_NODE
-  | ARGS_CHK_B
-  | HEAP_CHK
-  | STK_CHK
-  | UPD_CAF
-  | UPD_IND
-  | UPD_INPLACE_NOPTRS
-  | UPD_INPLACE_PTRS
-  | UPD_BH_UPDATABLE
-  | UPD_BH_SINGLE_ENTRY
-  | PUSH_STD_UPD_FRAME
-  | POP_STD_UPD_FRAME
-  | SET_TAG
+  = ARGS_CHK                           -- arg satisfaction check
+  | ARGS_CHK_LOAD_NODE                 -- arg check for top-level functions
+  | UPD_CAF                            -- update CAF closure with indirection
+  | UPD_BH_UPDATABLE                   -- eager backholing
+  | UPD_BH_SINGLE_ENTRY                        -- more eager blackholing
+  | PUSH_UPD_FRAME                     -- push update frame
+  | PUSH_SEQ_FRAME                     -- push seq frame
+  | SET_TAG                            -- set TagReg if it exists
   | GRAN_FETCH                 -- for GrAnSim only  -- HWL
   | GRAN_RESCHEDULE            -- for GrAnSim only  -- HWL
   | GRAN_FETCH_AND_RESCHEDULE  -- for GrAnSim only  -- HWL
@@ -247,6 +238,33 @@ data CStmtMacro
   deriving Text
 \end{code}
 
+Heap/Stack checks.  There are far too many of these.
+
+\begin{code}
+data CCheckMacro
+
+  = HP_CHK_NP                          -- heap/stack checks when
+  | STK_CHK_NP                         -- node points to the closure
+  | HP_STK_CHK_NP
+  | HP_CHK_SEQ_NP                      -- for 'seq' style case alternatives
+
+  | HP_CHK                             -- heap/stack checks when
+  | STK_CHK                            -- node doesn't point
+  | HP_STK_CHK
+                                       -- case alternative heap checks:
+
+  | HP_CHK_NOREGS                      --   no registers live
+  | HP_CHK_UNPT_R1                     --   R1 is boxed/unlifted
+  | HP_CHK_UNBX_R1                     --   R1 is unboxed
+  | HP_CHK_F1                          --   FloatReg1 (only) is live 
+  | HP_CHK_D1                          --   DblReg1   (only) is live
+  | HP_CHK_L1                          --   LngReg1   (only) is live
+  | HP_CHK_UT_ALT                      --   unboxed tuple return.
+
+  | HP_CHK_GEN                         -- generic heap check
+  deriving Text
+\end{code}
+
 \item[@CCallProfCtrMacro@:]
 The @String@ names a macro that, if \tr{#define}d, will bump one/some
 of the STG-event profiling counters.
@@ -256,47 +274,12 @@ The @String@ names a macro that, if \tr{#define}d, will perform some
 cost-centre-profiling-related action.
 \end{description}
 
-HERE ARE SOME OLD NOTES ABOUT HEAP-CHK ENTRY POINTS:
-
-\item[@CCallStgC@:]
-Some parts of the system, {\em notably the storage manager}, are
-implemented by C~routines that must know something about the internals
-of the STG world, e.g., where the heap-pointer is.  (The
-``C-as-assembler'' documents describes this stuff in detail.)
-
-This is quite a tricky business, especially with ``optimised~C,'' so
-we keep close tabs on these fellows.  This enumeration type lists all
-such ``STG~C'' routines:
-
-HERE ARE SOME *OLD* NOTES ABOUT HEAP-CHK ENTRY POINTS:
-
-Heap overflow invokes the garbage collector (of your choice :-), and
-we have different entry points, to tell the GC the exact configuration
-before it.
-\begin{description}
-\item[Branch of a boxed case:]
-The @Node@ register points off to somewhere legitimate, the @TagReg@
-holds the tag, and the @RetReg@ points to the code for the
-alterative which should be resumed. (ToDo: update)
-
-\item[Branch of an unboxed case:]
-The @Node@ register points nowhere of any particular interest, a
-kind-specific register (@IntReg@, @FloatReg@, etc.) holds the unboxed
-value, and the @RetReg@ points to the code for the alternative
-which should be resumed. (ToDo: update)
-
-\item[Closure entry:]
-The @Node@ register points to the closure, and the @RetReg@ points
-to the code to be resumed. (ToDo: update)
-\end{description}
-
 %************************************************************************
 %*                                                                     *
 \subsection[CAddrMode]{C addressing modes}
 %*                                                                     *
 %************************************************************************
 
-Addressing modes: these have @PrimitiveKinds@ pinned on them.
 \begin{code}
 data CAddrMode
   = CVal  RegRelative PrimRep
@@ -324,20 +307,15 @@ data CAddrMode
        -- native code.
 
   | CLbl    CLabel     -- Labels in the runtime system, etc.
-                       -- See comment under CLabelledData about (String,Name)
            PrimRep     -- the kind is so we can generate accurate C decls
 
-  | CUnVecLbl          -- A choice of labels left up to the back end
-             CLabel    -- direct
-             CLabel    -- vectored
-
   | CCharLike CAddrMode        -- The address of a static char-like closure for
                        -- the specified character.  It is guaranteed to be in
                        -- the range 0..255.
 
   | CIntLike CAddrMode -- The address of a static int-like closure for the
-                       -- specified small integer.  It is guaranteed to be in the
-                       -- range mIN_INTLIKE..mAX_INTLIKE
+                       -- specified small integer.  It is guaranteed to be in
+                       -- the range mIN_INTLIKE..mAX_INTLIKE
 
   | CString FAST_STRING        -- The address of the null-terminated string
   | CLit    Literal
@@ -345,38 +323,18 @@ data CAddrMode
                        -- into the C output
            PrimRep
 
-  | COffset HeapOffset -- A literal constant, not an offset *from* anything!
-                       -- ToDo: this should really be CLitOffset
-
-  | CCode AbstractC    -- Some code.  Used mainly for return addresses.
-
-  | CLabelledCode CLabel AbstractC  -- Almost defunct? (ToDo?) --JSM
-                       -- Some code that must have a particular label
-                       -- (which is jumpable to)
-
-  | CJoinPoint         -- This is used as the amode of a let-no-escape-bound variable
-       VirtualSpAOffset        -- SpA and SpB values after any volatile free vars
-       VirtualSpBOffset        -- of the rhs have been saved on stack.
-                               -- Just before the code for the thing is jumped to,
-                               -- SpA/B will be set to these values,
-                               -- and then any stack-passed args pushed,
-                               -- then the code for this thing will be entered
-
+  | CJoinPoint         -- This is used as the amode of a let-no-escape-bound
+                       -- variable.
+       VirtualSpOffset   -- Sp value after any volatile free vars
+                         -- of the rhs have been saved on stack.
+                         -- Just before the code for the thing is jumped to,
+                         -- Sp will be set to this value,
+                         -- and then any stack-passed args pushed,
+                         -- then the code for this thing will be entered
   | CMacroExpr
-       PrimRep         -- the kind of the result
+       !PrimRep        -- the kind of the result
        CExprMacro      -- the macro to generate a value
        [CAddrMode]     -- and its arguments
-
-  | CCostCentre                -- If Bool is True ==> it to be printed as a String,
-       CostCentre      -- (*not* as a C identifier or some such).
-       Bool            -- (It's not just the double-quotes on either side;
-                       -- spaces and other funny characters will have been
-                       -- fiddled in the non-String variant.)
-
-mkCCostCentre cc
-  = --ASSERT(not (currentOrSubsumedCosts cc))
-    --FALSE: We do put subsumedCC in static closures
-    CCostCentre cc False
 \end{code}
 
 Various C macros for values which are dependent on the back-end layout.
@@ -384,18 +342,24 @@ Various C macros for values which are dependent on the back-end layout.
 \begin{code}
 
 data CExprMacro
-  = INFO_PTR
-  | ENTRY_CODE
-  | INFO_TAG
-  | EVAL_TAG
+  = ENTRY_CODE
+  | ARG_TAG                            -- stack argument tagging
+  | GET_TAG                            -- get current constructor tag
   deriving(Text)
 
 \end{code}
 
-A tiny convenience:
+Convenience functions:
+
 \begin{code}
 mkIntCLit :: Int -> CAddrMode
 mkIntCLit i = CLit (mkMachInt (toInteger i))
+
+mkCCostCentre :: CostCentre -> CAddrMode
+mkCCostCentre cc = CLbl (mkCC_Label cc) DataPtrRep
+
+mkCCostCentreStack :: CostCentreStack -> CAddrMode
+mkCCostCentreStack ccs = CLbl (mkCCS_Label ccs) DataPtrRep
 \end{code}
 
 %************************************************************************
@@ -406,118 +370,106 @@ mkIntCLit i = CLit (mkMachInt (toInteger i))
 
 \begin{code}
 data RegRelative
-  = HpRel       VirtualHeapOffset      -- virtual offset of Hp
-                VirtualHeapOffset      -- virtual offset of The Thing
-  | SpARel      VirtualSpAOffset       -- virtual offset of SpA
-                VirtualSpAOffset       -- virtual offset of The Thing
-  | SpBRel      VirtualSpBOffset       -- virtual offset of SpB
-                VirtualSpBOffset       -- virtual offset of The Thing
-  | NodeRel     VirtualHeapOffset
+  = HpRel      FAST_INT        -- }
+  | SpRel      FAST_INT        -- }- offsets in StgWords
+  | NodeRel    FAST_INT        -- }
 
 data ReturnInfo
   = DirectReturn                       -- Jump directly, if possible
   | StaticVectoredReturn Int           -- Fixed tag, starting at zero
   | DynamicVectoredReturn CAddrMode    -- Dynamic tag given by amode, starting at zero
+
+hpRel :: VirtualHeapOffset     -- virtual offset of Hp
+      -> VirtualHeapOffset     -- virtual offset of The Thing
+      -> RegRelative           -- integer offset
+hpRel IBOX(hp) IBOX(off) = HpRel (hp _SUB_ off)
+
+spRel :: VirtualSpOffset       -- virtual offset of Sp
+      -> VirtualSpOffset       -- virtual offset of The Thing
+      -> RegRelative           -- integer offset
+spRel sp off = SpRel (case spRelToInt sp off of { IBOX(i) -> i })
+
+nodeRel :: VirtualHeapOffset
+        -> RegRelative
+nodeRel IBOX(off) = NodeRel off
+
 \end{code}
 
 %************************************************************************
 %*                                                                     *
-\subsection[MagicId]{@MagicIds@: registers and such}
+\subsection[RegRelative]{@RegRelatives@: ???}
 %*                                                                     *
 %************************************************************************
 
-Much of what happens in Abstract-C is in terms of ``magic'' locations,
-such as the stack pointer, heap pointer, etc.  If possible, these will
-be held in registers.
+We represent liveness bitmaps as a BitSet (whose internal
+representation really is a bitmap).  These are pinned onto case return
+vectors to indicate the state of the stack for the garbage collector.
 
-Here are some notes about what's active when:
-\begin{description}
-\item[Always active:]
-       Hp, HpLim, SpA, SpB, SuA, SuB
+\begin{code}
+type LivenessMask = [BitSet]
 
-\item[Entry set:]
-       ArgPtr1 (= Node)...
+data Liveness = LvSmall BitSet
+              | LvLarge CLabel
+\end{code}
 
-\item[Return set:]
-Ptr regs: RetPtr1 (= Node), RetPtr2...
-Int/char regs:  RetData1 (= TagReg = IntReg), RetData2...
-Float regs: RetFloat1, ...
-Double regs: RetDouble1, ...
-\end{description}
+%************************************************************************
+%*                                                                     *
+\subsection[HeapOffset]{@Heap Offsets@}
+%*                                                                     *
+%************************************************************************
+
+This used to be a grotesquely complicated datatype in an attempt to
+hide the details of header sizes from the compiler itself.  Now these
+constants are imported from the RTS, and we deal in real Ints.
+
+\begin{code}
+type HeapOffset = Int                  -- ToDo: remove
+
+type VirtualHeapOffset = HeapOffset
+type VirtualSpOffset   = Int
+
+type HpRelOffset       = HeapOffset
+type SpRelOffset       = Int
+\end{code}
+
+%************************************************************************
+%*                                                                     *
+\subsection[MagicId]{@MagicIds@: registers and such}
+%*                                                                     *
+%************************************************************************
 
 \begin{code}
 data MagicId
   = BaseReg    -- mentioned only in nativeGen
 
-  | StkOReg    -- mentioned only in nativeGen
-
   -- Argument and return registers
   | VanillaReg         -- pointers, unboxed ints and chars
-       PrimRep         -- PtrRep, IntRep, CharRep, StablePtrRep or ForeignObjRep
-                       --      (in case we need to distinguish)
+       PrimRep
        FAST_INT        -- its number (1 .. mAX_Vanilla_REG)
 
-  | FloatReg   -- single-precision floating-point registers
+  | FloatReg           -- single-precision floating-point registers
        FAST_INT        -- its number (1 .. mAX_Float_REG)
 
-  | DoubleReg  -- double-precision floating-point registers
+  | DoubleReg          -- double-precision floating-point registers
        FAST_INT        -- its number (1 .. mAX_Double_REG)
 
+  -- STG registers
+  | Sp                 -- Stack ptr; points to last occupied stack location.
+  | Su                 -- Stack update frame pointer
+  | SpLim              -- Stack limit
+  | Hp                 -- Heap ptr; points to last occupied heap location.
+  | HpLim              -- Heap limit register
+  | CurCostCentre      -- current cost centre register.
+  | VoidReg            -- see "VoidPrim" type; just a placeholder; 
+                       --   no actual register
   | LongReg            -- long int registers (64-bit, really)
        PrimRep         -- Int64Rep or Word64Rep
        FAST_INT        -- its number (1 .. mAX_Long_REG)
 
-  | TagReg     -- to return constructor tags; as almost all returns are vectored,
-               -- this is rarely used.
-
-  | RetReg     -- topmost return address from the B stack
-
-  | SpA                -- Stack ptr; points to last occupied stack location.
-               -- Stack grows downward.
-  | SuA        -- mentioned only in nativeGen
-
-  | SpB                -- Basic values, return addresses and update frames.
-               -- Grows upward.
-  | SuB                -- mentioned only in nativeGen
-
-  | Hp         -- Heap ptr; points to last occupied heap location.
-               -- Free space at lower addresses.
-
-  | HpLim      -- Heap limit register: mentioned only in nativeGen
-
-  | LivenessReg        -- (parallel only) used when we need to record explicitly
-               -- what registers are live
-
-  | StdUpdRetVecReg    -- mentioned only in nativeGen
-  | StkStubReg         -- register holding STK_STUB_closure (for stubbing dead stack slots)
-
-  | CurCostCentre -- current cost centre register.
-
-  | VoidReg -- see "VoidPrim" type; just a placeholder; no actual register
 
 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)))
+tagreg  = VanillaReg WordRep    ILIT(2) -- A convenient alias for TagReg
 
-    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.
@@ -527,50 +479,30 @@ instance Eq MagicId where
     reg1 == reg2 = tag reg1 _EQ_ tag reg2
      where
        tag BaseReg          = (ILIT(0) :: FAST_INT)
-       tag StkOReg          = ILIT(1)
-       tag TagReg           = ILIT(2)
-       tag RetReg           = ILIT(3)
-       tag SpA              = ILIT(4)
-       tag SuA              = ILIT(5)
-       tag SpB              = ILIT(6)
-       tag SuB              = ILIT(7)
-       tag Hp               = ILIT(8)
-       tag HpLim            = ILIT(9)
-       tag LivenessReg      = ILIT(10)
-       tag StdUpdRetVecReg  = ILIT(12)
-       tag StkStubReg       = ILIT(13)
-       tag CurCostCentre    = ILIT(14)
-       tag VoidReg          = ILIT(15)
-
-       tag reg =
-          ILIT(15) _ADD_ (
-         case reg of
-           VanillaReg _ i -> i
-           FloatReg i     -> maxv _ADD_ i
-           DoubleReg i    -> maxv _ADD_ maxf _ADD_ i
-           LongReg _ i    -> maxv _ADD_ maxf _ADD_ maxd _ADD_ i
-         )
-         where
-           maxv = case mAX_Vanilla_REG of { IBOX(x) -> x }
-           maxf = case mAX_Float_REG   of { IBOX(x) -> x }
-           maxd = case mAX_Double_REG of { IBOX(x) -> x }
+       tag Sp               = ILIT(1)
+       tag Su               = ILIT(2)
+       tag SpLim            = ILIT(3)
+       tag Hp               = ILIT(4)
+       tag HpLim            = ILIT(5)
+       tag CurCostCentre    = ILIT(6)
+       tag VoidReg          = ILIT(7)
+
+       tag (VanillaReg _ i) = ILIT(8) _ADD_ i
+
+       tag (FloatReg i)  = ILIT(8) _ADD_ maxv _ADD_ i
+       tag (DoubleReg i) = ILIT(8) _ADD_ maxv _ADD_ maxf _ADD_ i
+       tag (LongReg _ i) = ILIT(8) _ADD_ maxv _ADD_ maxf _ADD_ maxd _ADD_ i
+
+        maxv = case mAX_Vanilla_REG of { IBOX(x) -> x }
+        maxf = case mAX_Float_REG   of { IBOX(x) -> x }
+        maxd = case mAX_Double_REG of { IBOX(x) -> x }
 \end{code}
 
 Returns True for any register that {\em potentially} dies across
 C calls (or anything near equivalent).  We just say @True@ and
 let the (machine-specific) registering macros sort things out...
+
 \begin{code}
 isVolatileReg :: MagicId -> Bool
-
 isVolatileReg any = True
---isVolatileReg (FloatReg _)   = True
---isVolatileReg (DoubleReg _)  = True
 \end{code}
-
-%************************************************************************
-%*                                                                     *
-\subsection[AbsCSyn-printing]{Pretty-printing Abstract~C}
-%*                                                                     *
-%************************************************************************
-
-It's in \tr{PprAbsC.lhs}.
index a8f9756..e76042f 100644 (file)
@@ -1,5 +1,5 @@
 %
-% (c) The GRASP/AQUA Project, Glasgow University, 1993-1996
+% (c) The GRASP/AQUA Project, Glasgow University, 1993-1998
 %
 \section[AbsCUtils]{Help functions for Abstract~C datatype}
 
@@ -9,7 +9,7 @@ module AbsCUtils (
        mkAbstractCs, mkAbsCStmts,
        mkAlgAltsCSwitch,
        magicIdPrimRep,
-       getAmodeRep, amodeCanSurviveGC,
+       getAmodeRep,
        mixedTypeLocn, mixedPtrLocn,
        flattenAbsC,
        mkAbsCStmtList
@@ -19,22 +19,18 @@ module AbsCUtils (
 
 #include "HsVersions.h"
 
-import {-# SOURCE #-} CLabel   ( mkReturnPtLabel, CLabel )
-       -- The loop here is (CLabel -> CgRetConv -> AbsCUtils -> CLabel)
-
 import AbsCSyn
-
 import Digraph         ( stronglyConnComp, SCC(..) )
-import HeapOffs                ( possiblyEqualHeapOffset )
-import Id              ( fIRST_TAG, ConTag )
-import Literal         ( literalPrimRep, Literal(..), mkMachWord )
+import DataCon         ( fIRST_TAG, ConTag )
+import Const           ( literalPrimRep, mkMachWord )
 import PrimRep         ( getPrimRepSize, PrimRep(..) )
 import Unique          ( Unique{-instance Eq-} )
-import UniqSupply      ( getUnique, getUniques, splitUniqSupply, UniqSupply )
-import Util            ( assocDefaultUsing, panic )
+import UniqSupply      ( uniqFromSupply, uniqsFromSupply, splitUniqSupply, 
+                         UniqSupply )
 import CmdLineOpts      ( opt_ProduceC )
 import Maybes          ( maybeToBool )
 import PrimOp          ( PrimOp(..) )
+import Util            ( panic )
 
 infixr 9 `thenFlt`
 \end{code}
@@ -66,7 +62,9 @@ mkAbstractCs cs = foldr1 mkAbsCStmts cs
 
 -- for fiddling around w/ killing off AbsCNops ... (ToDo)
 mkAbsCStmts :: AbstractC -> AbstractC -> AbstractC
-mkAbsCStmts = AbsCStmts
+mkAbsCStmts AbsCNop c = c
+mkAbsCStmts c AbsCNop = c
+mkAbsCStmts c1 c2     = c1 `AbsCStmts` c2
 
 {- Discarded SLPJ June 95; it calls nonemptyAbsC too much!
   = case (case (nonemptyAbsC abc2) of
@@ -112,7 +110,8 @@ mkAlgAltsCSwitch scrutinee tagged_alts deflt_absc
 
    -- We also need to convert to Literals to keep the CSwitch happy
    adjust tagged_alts
-     = [ (mkMachWord (fromInt (tag - fIRST_TAG)), abs_c) | (tag, abs_c) <- tagged_alts ]
+     = [ (mkMachWord (toInteger (tag - fIRST_TAG)), abs_c)
+       | (tag, abs_c) <- tagged_alts ]
 \end{code}
 
 %************************************************************************
@@ -123,22 +122,15 @@ mkAlgAltsCSwitch scrutinee tagged_alts deflt_absc
 
 \begin{code}
 magicIdPrimRep BaseReg             = PtrRep
-magicIdPrimRep StkOReg             = PtrRep
-magicIdPrimRep (VanillaReg kind _)  = kind
+magicIdPrimRep (VanillaReg kind _) = kind
 magicIdPrimRep (FloatReg _)        = FloatRep
 magicIdPrimRep (DoubleReg _)       = DoubleRep
 magicIdPrimRep (LongReg kind _)            = kind
-magicIdPrimRep TagReg              = IntRep
-magicIdPrimRep RetReg              = RetRep
-magicIdPrimRep SpA                 = PtrRep
-magicIdPrimRep SuA                 = PtrRep
-magicIdPrimRep SpB                 = PtrRep
-magicIdPrimRep SuB                 = PtrRep
+magicIdPrimRep Sp                  = PtrRep
+magicIdPrimRep Su                  = PtrRep
+magicIdPrimRep SpLim               = PtrRep
 magicIdPrimRep Hp                  = PtrRep
 magicIdPrimRep HpLim               = PtrRep
-magicIdPrimRep LivenessReg         = IntRep
-magicIdPrimRep StdUpdRetVecReg     = PtrRep
-magicIdPrimRep StkStubReg          = PtrRep
 magicIdPrimRep CurCostCentre       = CostCentreRep
 magicIdPrimRep VoidReg             = VoidRep
 \end{code}
@@ -161,58 +153,27 @@ getAmodeRep (CAddr _)                         = PtrRep
 getAmodeRep (CReg magic_id)                = magicIdPrimRep magic_id
 getAmodeRep (CTemp uniq kind)              = kind
 getAmodeRep (CLbl label kind)              = kind
-getAmodeRep (CUnVecLbl _ _)                = PtrRep
 getAmodeRep (CCharLike _)                  = PtrRep
 getAmodeRep (CIntLike _)                   = PtrRep
-getAmodeRep (CString _)                    = PtrRep
+getAmodeRep (CString _)                            = PtrRep
 getAmodeRep (CLit lit)                     = literalPrimRep lit
 getAmodeRep (CLitLit _ kind)               = kind
-getAmodeRep (COffset _)                    = IntRep
-getAmodeRep (CCode abs_C)                  = CodePtrRep
-getAmodeRep (CLabelledCode label abs_C)    = CodePtrRep
 getAmodeRep (CTableEntry _ _ kind)         = kind
 getAmodeRep (CMacroExpr kind _ _)          = kind
 #ifdef DEBUG
-getAmodeRep (CJoinPoint _ _)               = panic "getAmodeRep:CJoinPoint"
-getAmodeRep (CCostCentre _ _)              = panic "getAmodeRep:CCostCentre"
+getAmodeRep (CJoinPoint _)                 = panic "getAmodeRep:CJoinPoint"
 #endif
 \end{code}
 
-@amodeCanSurviveGC@ tells, well, whether or not the amode is invariant
-across a garbage collection.  Used only for PrimOp arguments (not that
-it matters).
-
-\begin{code}
-amodeCanSurviveGC :: CAddrMode -> Bool
-
-amodeCanSurviveGC (CTableEntry base offset _)
-  = amodeCanSurviveGC base && amodeCanSurviveGC offset
-    -- "Fixed table, so it's OK" (JSM); code is slightly paranoid
-
-amodeCanSurviveGC (CLbl _ _)           = True
-amodeCanSurviveGC (CUnVecLbl _ _)      = True
-amodeCanSurviveGC (CCharLike arg)      = amodeCanSurviveGC arg
-amodeCanSurviveGC (CIntLike arg)       = amodeCanSurviveGC arg
-amodeCanSurviveGC (CString _)          = True
-amodeCanSurviveGC (CLit _)             = True
-amodeCanSurviveGC (CLitLit _ _)                = True
-amodeCanSurviveGC (COffset _)          = True
-amodeCanSurviveGC (CMacroExpr _ _ args)        = all amodeCanSurviveGC args
-
-amodeCanSurviveGC _ = False
-    -- there are some amodes that "cannot occur" as args
-    -- to a PrimOp, but it is safe to return False (rather than panic)
-\end{code}
-
 @mixedTypeLocn@ tells whether an amode identifies an ``StgWord''
 location; that is, one which can contain values of various types.
 
 \begin{code}
 mixedTypeLocn :: CAddrMode -> Bool
 
-mixedTypeLocn (CVal (NodeRel _)   _)   = True
-mixedTypeLocn (CVal (SpBRel _ _)  _)   = True
-mixedTypeLocn (CVal (HpRel _ _)          _)    = True
+mixedTypeLocn (CVal (NodeRel _) _)     = True
+mixedTypeLocn (CVal (SpRel _)   _)     = True
+mixedTypeLocn (CVal (HpRel _)  _)      = True
 mixedTypeLocn other                    = False -- All the rest
 \end{code}
 
@@ -222,7 +183,7 @@ location which can contain values of various pointer types.
 \begin{code}
 mixedPtrLocn :: CAddrMode -> Bool
 
-mixedPtrLocn (CVal (SpARel _ _)  _)    = True
+mixedPtrLocn (CVal (SpRel _)  _)       = True
 mixedPtrLocn other                     = False -- All the rest
 \end{code}
 
@@ -260,10 +221,10 @@ out before the code for the statement itself.
 \end{itemize}
 
 The ``stuff to be carried up'' always includes a label: a
-@CStaticClosure@, @CClosureUpdInfo@, @CRetUnVector@, @CFlatRetVector@, or
+@CStaticClosure@, @CRetDirect@, @CFlatRetVector@, or
 @CCodeBlock@.  The latter turns into a C function, and is never
 actually produced by the code generator.  Rather it always starts life
-as a @CLabelledCode@ addressing mode; when such an addr mode is
+as a @CCodeBlock@ addressing mode; when such an addr mode is
 flattened, the ``tops'' stuff is a @CCodeBlock@.
 
 \begin{code}
@@ -280,31 +241,27 @@ flattenAbsC us abs_C
 %*                                                                     *
 %************************************************************************
 
-The flattener is monadised.  It's just a @UniqueSupply@, along with a
-``come-back-to-here'' label to pin on heap and stack checks.
+The flattener is monadised.  It's just a @UniqueSupply@.
 
 \begin{code}
-type FlatM result
-     = CLabel
-    -> UniqSupply
-    -> result
+type FlatM result =  UniqSupply -> result
 
 initFlt :: UniqSupply -> FlatM a -> a
 
-initFlt init_us m = m (panic "initFlt:CLabel") init_us
+initFlt init_us m = m init_us
 
 {-# INLINE thenFlt #-}
 {-# INLINE returnFlt #-}
 
 thenFlt :: FlatM a -> (a -> FlatM b) -> FlatM b
 
-thenFlt expr cont label us
+thenFlt expr cont us
   = case (splitUniqSupply us)   of { (s1, s2) ->
-    case (expr label s1)       of { result ->
-    cont result label s2 }}
+    case (expr s1)             of { result ->
+    cont result s2 }}
 
 returnFlt :: a -> FlatM a
-returnFlt result label us = result
+returnFlt result us = result
 
 mapFlt :: (a -> FlatM b) -> [a] -> FlatM [b]
 
@@ -323,16 +280,10 @@ mapAndUnzipFlt f (x:xs)
     returnFlt (r1:rs1, r2:rs2)
 
 getUniqFlt :: FlatM Unique
-getUniqFlt label us = getUnique us
+getUniqFlt us = uniqFromSupply us
 
 getUniqsFlt :: Int -> FlatM [Unique]
-getUniqsFlt i label us = getUniques i us
-
-setLabelFlt :: CLabel -> FlatM a -> FlatM a
-setLabelFlt new_label cont label us = cont new_label us
-
-getLabelFlt :: FlatM CLabel
-getLabelFlt label us = label
+getUniqsFlt i us = uniqsFromSupply i us
 \end{code}
 
 %************************************************************************
@@ -343,8 +294,8 @@ getLabelFlt label us = label
 
 \begin{code}
 flatAbsC :: AbstractC
-        -> FlatM (AbstractC,           -- Stuff to put inline          [Both are fully
-                  AbstractC)           -- Stuff to put at top level     flattened]
+        -> FlatM (AbstractC,   -- Stuff to put inline          [Both are fully
+                  AbstractC)   -- Stuff to put at top level     flattened]
 
 flatAbsC AbsCNop = returnFlt (AbsCNop, AbsCNop)
 
@@ -354,206 +305,76 @@ flatAbsC (AbsCStmts s1 s2)
     returnFlt (mkAbsCStmts inline_s1 inline_s2,
               mkAbsCStmts top_s1    top_s2)
 
-flatAbsC (CClosureInfoAndCode cl_info slow maybe_fast upd descr liveness)
+flatAbsC (CClosureInfoAndCode cl_info slow maybe_fast srt descr)
   = flatAbsC slow              `thenFlt` \ (slow_heres, slow_tops) ->
     flat_maybe maybe_fast      `thenFlt` \ (fast_heres, fast_tops) ->
-    flatAmode upd               `thenFlt` \ (upd_lbl,    upd_tops) ->
-    returnFlt (AbsCNop, mkAbstractCs [slow_tops, fast_tops, upd_tops,
-       CClosureInfoAndCode cl_info slow_heres fast_heres upd_lbl descr liveness]
+    returnFlt (AbsCNop, mkAbstractCs [slow_tops, fast_tops,
+       CClosureInfoAndCode cl_info slow_heres fast_heres srt descr]
     )
-  where
-    flat_maybe :: Maybe AbstractC -> FlatM (Maybe AbstractC, AbstractC)
-    flat_maybe Nothing      = returnFlt (Nothing, AbsCNop)
-    flat_maybe (Just abs_c) = flatAbsC abs_c `thenFlt` \ (heres, tops) ->
-                             returnFlt (Just heres, tops)
 
 flatAbsC (CCodeBlock label abs_C)
   = flatAbsC abs_C         `thenFlt` \ (absC_heres, absC_tops) ->
     returnFlt (AbsCNop, absC_tops `mkAbsCStmts` CCodeBlock label absC_heres)
 
-flatAbsC (CClosureUpdInfo info) = flatAbsC info
-
-flatAbsC (CStaticClosure closure_lbl closure_info cost_centre amodes)
-  = flatAmodes (cost_centre:amodes)    `thenFlt` \ (new_cc:new_amodes, tops) ->
-    returnFlt (AbsCNop, tops `mkAbsCStmts`
-                       CStaticClosure closure_lbl closure_info new_cc new_amodes)
-
-flatAbsC (CRetVector tbl_label stuff deflt)
-  = do_deflt deflt                             `thenFlt` \ (deflt_amode, deflt_tops) ->
-    mapAndUnzipFlt (do_alt deflt_amode) stuff  `thenFlt` \ (alt_amodes, alt_tops) ->
-    returnFlt (AbsCNop, mkAbstractCs [deflt_tops,
-                                     mkAbstractCs alt_tops,
-                                     CFlatRetVector tbl_label alt_amodes])
-
-  where
-    do_deflt deflt = case nonemptyAbsC deflt of
-                       Nothing     -> returnFlt (bogus_default_label, AbsCNop)
-                       Just deflt' -> flatAmode (CCode deflt)  -- Deals correctly with the
-                                                               -- CJump (CLabelledCode ...) case
-
-    do_alt deflt_amode Nothing    = returnFlt (deflt_amode, AbsCNop)
-    do_alt deflt_amode (Just alt) = flatAmode alt
-
-    bogus_default_label = panic ("flatAbsC: CRetVector: default needed and not available")
-
-
-flatAbsC (CRetUnVector label amode)
-  = flatAmode amode    `thenFlt` \ (new_amode, tops) ->
-    returnFlt (AbsCNop, tops `mkAbsCStmts` CRetUnVector label new_amode)
-
-flatAbsC (CFlatRetVector label amodes)
-  = flatAmodes amodes  `thenFlt` \ (new_amodes, tops) ->
-    returnFlt (AbsCNop, tops `mkAbsCStmts` CFlatRetVector label new_amodes)
-
-flatAbsC cc@(CCostCentreDecl _ _)  -- at top, already flat
-  = returnFlt (AbsCNop, cc)
-
--- now the real stmts:
-
-flatAbsC (CAssign dest source)
-  = flatAmode dest    `thenFlt` \ (dest_amode, dest_tops) ->
-    flatAmode source  `thenFlt` \ (src_amode,  src_tops)  ->
-    returnFlt ( CAssign dest_amode src_amode, mkAbsCStmts dest_tops src_tops )
-
--- special case: jump to some anonymous code
-flatAbsC (CJump (CCode abs_C)) = flatAbsC abs_C
-
-flatAbsC (CJump target)
-  = flatAmode target `thenFlt` \ (targ_amode, targ_tops) ->
-    returnFlt ( CJump targ_amode, targ_tops )
-
-flatAbsC (CFallThrough target)
-  = flatAmode target `thenFlt` \ (targ_amode, targ_tops) ->
-    returnFlt ( CFallThrough targ_amode, targ_tops )
-
-flatAbsC (CReturn target return_info)
-  = flatAmode target `thenFlt` \ (targ_amode, targ_tops) ->
-    returnFlt ( CReturn targ_amode return_info, targ_tops )
+flatAbsC (CRetDirect uniq slow_code srt liveness)
+  = flatAbsC slow_code         `thenFlt` \ (heres, tops) ->
+    returnFlt (AbsCNop, 
+               mkAbstractCs [ tops, CRetDirect uniq heres srt liveness ])
 
 flatAbsC (CSwitch discrim alts deflt)
-  = flatAmode discrim           `thenFlt` \ (discrim_amode, discrim_tops) ->
-    mapAndUnzipFlt flat_alt alts `thenFlt` \ (flat_alts, flat_alts_tops) ->
+  = mapAndUnzipFlt flat_alt alts `thenFlt` \ (flat_alts, flat_alts_tops) ->
     flatAbsC deflt              `thenFlt` \ (flat_def_alt, def_tops) ->
     returnFlt (
-      CSwitch discrim_amode flat_alts flat_def_alt,
-      mkAbstractCs (discrim_tops : def_tops : flat_alts_tops)
+      CSwitch discrim flat_alts flat_def_alt,
+      mkAbstractCs (def_tops : flat_alts_tops)
     )
   where
     flat_alt (tag, absC)
       = flatAbsC absC  `thenFlt` \ (alt_heres, alt_tops) ->
        returnFlt ( (tag, alt_heres), alt_tops )
 
-flatAbsC stmt@(CInitHdr a b cc u)
-  = flatAmode cc       `thenFlt` \ (new_cc, tops) ->
-    returnFlt (CInitHdr a b new_cc u, tops)
-
-flatAbsC stmt@(COpStmt results td@(CCallOp (Right _) _ _ _ _ _) args liveness_mask vol_regs)
+flatAbsC stmt@(COpStmt results td@(CCallOp (Right _) _ _ _) args vol_regs)
   | maybeToBool opt_ProduceC
-  = flatAmodes results         `thenFlt` \ (results_here, tops1) ->
-    flatAmodes args            `thenFlt` \ (args_here,    tops2) ->
-    let tdef = CCallTypedef td results args in
-    returnFlt (COpStmt results_here td args_here liveness_mask vol_regs,
-              mkAbsCStmts tdef (mkAbsCStmts tops1 tops2))
-
-flatAbsC stmt@(COpStmt results op args liveness_mask vol_regs)
-  = flatAmodes results         `thenFlt` \ (results_here, tops1) ->
-    flatAmodes args            `thenFlt` \ (args_here,    tops2) ->
-    returnFlt (COpStmt results_here op args_here liveness_mask vol_regs,
-               mkAbsCStmts tops1 tops2)
+  = returnFlt (stmt, tdef)
+  where
+    tdef = CCallTypedef td results args
 
 flatAbsC stmt@(CSimultaneous abs_c)
   = flatAbsC abs_c             `thenFlt` \ (stmts_here, tops) ->
     doSimultaneously stmts_here        `thenFlt` \ new_stmts_here ->
     returnFlt (new_stmts_here, tops)
 
-flatAbsC stmt@(CMacroStmt macro amodes)
-  = flatAmodes amodes          `thenFlt` \ (amodes_here, tops) ->
-    returnFlt (CMacroStmt macro amodes_here, tops)
-
-flatAbsC stmt@(CCallProfCtrMacro str amodes)
-  = flatAmodes amodes          `thenFlt` \ (amodes_here, tops) ->
-    returnFlt (CCallProfCtrMacro str amodes_here, tops)
-
-flatAbsC stmt@(CCallProfCCMacro str amodes)
-  = flatAmodes amodes          `thenFlt` \ (amodes_here, tops) ->
-    returnFlt (CCallProfCCMacro str amodes_here, tops)
-
-flatAbsC stmt@(CSplitMarker) = returnFlt (AbsCNop, stmt)
-\end{code}
-
-%************************************************************************
-%*                                                                     *
-\subsection[flat-amodes]{Flattening addressing modes}
-%*                                                                     *
-%************************************************************************
-
-\begin{code}
-flatAmode :: CAddrMode -> FlatM (CAddrMode, AbstractC)
-
--- easy ones first
-flatAmode amode@(CVal _ _)     = returnFlt (amode, AbsCNop)
-
-flatAmode amode@(CAddr _)      = returnFlt (amode, AbsCNop)
-flatAmode amode@(CReg _)       = returnFlt (amode, AbsCNop)
-flatAmode amode@(CTemp _ _)    = returnFlt (amode, AbsCNop)
-flatAmode amode@(CLbl _ _)     = returnFlt (amode, AbsCNop)
-flatAmode amode@(CUnVecLbl _ _)        = returnFlt (amode, AbsCNop)
-flatAmode amode@(CString _)    = returnFlt (amode, AbsCNop)
-flatAmode amode@(CLit _)       = returnFlt (amode, AbsCNop)
-flatAmode amode@(CLitLit _ _)  = returnFlt (amode, AbsCNop)
-flatAmode amode@(COffset _)    = returnFlt (amode, AbsCNop)
-
--- CIntLike must be a literal -- no flattening
-flatAmode amode@(CIntLike int)  = returnFlt(amode, AbsCNop)
-
--- CCharLike may be arbitrary value -- have to flatten
-flatAmode amode@(CCharLike char)
-  = flatAmode char     `thenFlt` \ (flat_char, tops) ->
-    returnFlt(CCharLike flat_char, tops)
-
-flatAmode (CJoinPoint _ _) = panic "flatAmode:CJoinPoint"
-
-flatAmode (CLabelledCode label abs_C)
-  -- Push the code (with this label) to the top level
-  = flatAbsC abs_C     `thenFlt` \ (body_code, tops) ->
-    returnFlt (CLbl label CodePtrRep,
-              tops `mkAbsCStmts` CCodeBlock label body_code)
-
-flatAmode (CCode abs_C)
-  = case mkAbsCStmtList abs_C of
-      [CJump amode] -> flatAmode amode -- Elide redundant labels
-      _ ->
-       -- de-anonymous-ise the code and push it (labelled) to the top level
-       getUniqFlt              `thenFlt` \ new_uniq ->
-       case (mkReturnPtLabel new_uniq)    of { return_pt_label ->
-       flatAbsC abs_C  `thenFlt` \ (body_code, tops) ->
-       returnFlt (
-           CLbl return_pt_label CodePtrRep,
-           tops `mkAbsCStmts` CCodeBlock return_pt_label body_code
-           -- DO NOT TOUCH the stuff sent to the top...
-       ) }
-
-flatAmode (CTableEntry base index kind)
-  = flatAmode base     `thenFlt` \ (base_amode, base_tops) ->
-    flatAmode index    `thenFlt` \ (ix_amode,  ix_tops)  ->
-    returnFlt ( CTableEntry base_amode ix_amode kind, mkAbsCStmts base_tops ix_tops )
-
-flatAmode (CMacroExpr pk macro amodes)
-  = flatAmodes amodes          `thenFlt` \ (amodes_here, tops) ->
-    returnFlt ( CMacroExpr pk macro amodes_here, tops )
-
-flatAmode amode@(CCostCentre _ _) = returnFlt (amode, AbsCNop)
+flatAbsC stmt@(CCheck macro amodes code)
+  = flatAbsC code              `thenFlt` \ (code_here, code_tops) ->
+    returnFlt (CCheck macro amodes code_here, code_tops)
+
+-- Some statements need no flattening at all:
+flatAbsC stmt@(CMacroStmt macro amodes)        = returnFlt (stmt, AbsCNop)
+flatAbsC stmt@(CCallProfCtrMacro str amodes)   = returnFlt (stmt, AbsCNop)
+flatAbsC stmt@(CCallProfCCMacro str amodes)    = returnFlt (stmt, AbsCNop)
+flatAbsC stmt@(CAssign dest source)            = returnFlt (stmt, AbsCNop)
+flatAbsC stmt@(CJump target)                   = returnFlt (stmt, AbsCNop)
+flatAbsC stmt@(CFallThrough target)            = returnFlt (stmt, AbsCNop)
+flatAbsC stmt@(CReturn target return_info)     = returnFlt (stmt, AbsCNop)
+flatAbsC stmt@(CInitHdr a b cc)                = returnFlt (stmt, AbsCNop)
+flatAbsC stmt@(COpStmt results op args vol_regs)= returnFlt (stmt, AbsCNop)
+
+-- Some statements only make sense at the top level, so we always float
+-- them.  This probably isn't necessary.
+flatAbsC stmt@(CStaticClosure _ _ _ _)         = returnFlt (AbsCNop, stmt)
+flatAbsC stmt@(CSRT _ _)                       = returnFlt (AbsCNop, stmt)
+flatAbsC stmt@(CBitmap _ _)                    = returnFlt (AbsCNop, stmt)
+flatAbsC stmt@(CCostCentreDecl _ _)            = returnFlt (AbsCNop, stmt)
+flatAbsC stmt@(CCostCentreStackDecl _)         = returnFlt (AbsCNop, stmt)
+flatAbsC stmt@(CSplitMarker)                   = returnFlt (AbsCNop, stmt)
+flatAbsC stmt@(CRetVector _ _ _ _)              = returnFlt (AbsCNop, stmt)
 \end{code}
 
-And a convenient way to do a whole bunch of 'em.
 \begin{code}
-flatAmodes :: [CAddrMode] -> FlatM ([CAddrMode], AbstractC)
-
-flatAmodes [] = returnFlt ([], AbsCNop)
-
-flatAmodes amodes
-  = mapAndUnzipFlt flatAmode amodes `thenFlt` \ (amodes_here, tops) ->
-    returnFlt (amodes_here, mkAbstractCs tops)
+flat_maybe :: Maybe AbstractC -> FlatM (Maybe AbstractC, AbstractC)
+flat_maybe Nothing      = returnFlt (Nothing, AbsCNop)
+flat_maybe (Just abs_c) = flatAbsC abs_c `thenFlt` \ (heres, tops) ->
+                         returnFlt (Just heres, tops)
 \end{code}
 
 %************************************************************************
@@ -575,36 +396,6 @@ We use the strongly-connected component algorithm, in which
                s1 assigns to something s2 uses
          that is, if s1 should *follow* s2 in the final order
 
-ADR Comment
-
-Wow - fancy stuff.  But are we ever going to do anything other than
-assignments in parallel?  If not, wouldn't it be simpler to generate
-the following:
-
- x1, x2, x3 = e1, e2, e3
-
-    |
-    |
-    V
- { int t1 = e1;
-   int t2 = e2;
-   int t3 = e3;
-   x1 = t1;
-   x2 = t2;
-   x3 = t3;
- }
-
-and leave it to the C compiler to figure out whether it needs al
-those variables.
-
-(Likewise, why not let the C compiler delete silly code like
-
-    x = x
-
-for us?)
-
-tnemmoC RDA
-
 \begin{code}
 type CVertex = (Int, AbstractC)  -- Give each vertex a unique number,
                                 -- for fast comparison
@@ -632,8 +423,7 @@ sameAmode :: CAddrMode -> CAddrMode -> Bool
 -- At the moment we put in just enough to catch the cases we want:
 --     the second (destination) argument is always a CVal.
 sameAmode (CReg r1)                 (CReg r2)               = r1 == r2
-sameAmode (CVal (SpARel r1 v1) _) (CVal (SpARel r2 v2) _) = r1 == r2 && v1 == v2
-sameAmode (CVal (SpBRel r1 v1) _) (CVal (SpBRel r2 v2) _) = r1 == r2 && v1 == v2
+sameAmode (CVal (SpRel r1) _) (CVal (SpRel r2) _)           = r1 _EQ_ r2
 sameAmode other1                    other2                  = False
 
 doSimultaneously1 :: [CVertex] -> FlatM AbstractC
@@ -666,12 +456,12 @@ doSimultaneously1 vertices
            in
            returnFlt (CAssign the_temp src, CAssign dest the_temp)
 
-       go_via_temps (COpStmt dests op srcs liveness_mask vol_regs)
+       go_via_temps (COpStmt dests op srcs vol_regs)
          = getUniqsFlt (length dests)  `thenFlt` \ uniqs ->
            let
                the_temps = zipWith (\ u d -> CTemp u (getAmodeRep d)) uniqs dests
            in
-           returnFlt (COpStmt the_temps op srcs liveness_mask vol_regs,
+           returnFlt (COpStmt the_temps op srcs vol_regs,
                       mkAbstractCs (zipWith CAssign dests the_temps))
     in
     mapFlt do_component components `thenFlt` \ abs_cs ->
@@ -681,11 +471,11 @@ doSimultaneously1 vertices
     should_follow :: AbstractC -> AbstractC -> Bool
     (CAssign dest1 _) `should_follow` (CAssign _ src2)
       = dest1 `conflictsWith` src2
-    (COpStmt dests1 _ _ _ _) `should_follow` (CAssign _ src2)
+    (COpStmt dests1 _ _ _) `should_follow` (CAssign _ src2)
       = or [dest1 `conflictsWith` src2 | dest1 <- dests1]
-    (CAssign dest1 _)`should_follow` (COpStmt _ _ srcs2 _ _)
+    (CAssign dest1 _)`should_follow` (COpStmt _ _ srcs2 _)
       = or [dest1 `conflictsWith` src2 | src2 <- srcs2]
-    (COpStmt dests1 _ _ _ _) `should_follow` (COpStmt _ _ srcs2 _ _)
+    (COpStmt dests1 _ _ _) `should_follow` (COpStmt _ _ srcs2 _)
       = or [dest1 `conflictsWith` src2 | dest1 <- dests1, src2 <- srcs2]
 
 --    (COpStmt _ _ _ _ _) `should_follow` (CCallProfCtrMacro _ _) = False
@@ -714,41 +504,28 @@ regConflictsWithRR :: MagicId -> RegRelative -> Bool
 
 regConflictsWithRR (VanillaReg k ILIT(1)) (NodeRel _)  = True
 
-regConflictsWithRR SpA (SpARel _ _)    = True
-regConflictsWithRR SpB (SpBRel _ _)    = True
-regConflictsWithRR Hp  (HpRel _ _)     = True
+regConflictsWithRR Sp  (SpRel _)       = True
+regConflictsWithRR Hp  (HpRel _)       = True
 regConflictsWithRR _   _               = False
 
 rrConflictsWithRR :: Int -> Int                        -- Sizes of two things
                  -> RegRelative -> RegRelative -- The two amodes
                  -> Bool
 
-rrConflictsWithRR s1 s2 rr1 rr2 = rr rr1 rr2
+rrConflictsWithRR (I# s1) (I# s2) rr1 rr2 = rr rr1 rr2
   where
-    rr (SpARel p1 o1)    (SpARel p2 o2)
-       | s1 == 0 || s2 == 0 = False    -- No conflict if either is size zero
-       | s1 == 1 && s2 == 1 = b1 == b2
-       | otherwise          = (b1+s1) >= b2  &&
-                              (b2+s2) >= b1
-       where
-         b1 = p1-o1
-         b2 = p2-o2
-
-    rr (SpBRel p1 o1)    (SpBRel p2 o2)
-       | s1 == 0 || s2 == 0 = False    -- No conflict if either is size zero
-       | s1 == 1 && s2 == 1 = b1 == b2
-       | otherwise          = (b1+s1) >= b2  &&
-                              (b2+s2) >= b1
-       where
-         b1 = p1-o1
-         b2 = p2-o2
+    rr (SpRel o1)    (SpRel o2)
+       | s1 _EQ_ ILIT(0) || s2 _EQ_ ILIT(0) = False -- No conflict if either is size zero
+       | s1 _EQ_ ILIT(1)  && s2 _EQ_ ILIT(1) = o1 _EQ_ o2
+       | otherwise          = (o1 _ADD_ s1) _GE_ o2  &&
+                              (o2 _ADD_ s2) _GE_ o1
 
     rr (NodeRel o1)     (NodeRel o2)
-       | s1 == 0 || s2 == 0 = False    -- No conflict if either is size zero
-       | s1 == 1 && s2 == 1 = o1 `possiblyEqualHeapOffset` o2
+       | s1 _EQ_ ILIT(0) || s2 _EQ_ ILIT(0) = False -- No conflict if either is size zero
+       | s1 _EQ_ ILIT(1) && s2 _EQ_ ILIT(1) = o1 _EQ_ o2
        | otherwise          = True             -- Give up
 
-    rr (HpRel _ _)      (HpRel _ _)    = True  -- Give up
+    rr (HpRel _)        (HpRel _)    = True    -- Give up (ToDo)
 
-    rr other1           other2         = False
+    rr other1           other2       = False
 \end{code}
diff --git a/ghc/compiler/absCSyn/CLabel.hi-boot b/ghc/compiler/absCSyn/CLabel.hi-boot
deleted file mode 100644 (file)
index 2c16f0a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-_interface_ CLabel 1
-_exports_
-CLabel CLabel mkReturnPtLabel;
-_declarations_
-1 data CLabel;
-1 mkReturnPtLabel _:_ Unique.Unique -> CLabel ;;
index 1b760eb..fa05304 100644 (file)
@@ -1,5 +1,7 @@
 %
-% (c) The GRASP/AQUA Project, Glasgow University, 1992-1996
+% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
+%
+% $Id: CLabel.lhs,v 1.21 1998/12/02 13:17:19 simonm Exp $
 %
 \section[CLabel]{@CLabel@: Information to make C Labels}
 
@@ -8,6 +10,7 @@ module CLabel (
        CLabel, -- abstract type
 
        mkClosureLabel,
+       mkSRTLabel,
        mkInfoTableLabel,
        mkStdEntryLabel,
        mkFastEntryLabel,
@@ -15,30 +18,36 @@ module CLabel (
        mkStaticConEntryLabel,
        mkRednCountsLabel,
        mkConInfoTableLabel,
-       mkPhantomInfoTableLabel,
        mkStaticClosureLabel,
        mkStaticInfoTableLabel,
-       mkVapEntryLabel,
-       mkVapInfoTableLabel,
-
-       mkConUpdCodePtrVecLabel,
-       mkStdUpdCodePtrVecLabel,
-
-       mkInfoTableVecTblLabel,
-       mkStdUpdVecTblLabel,
+       mkApEntryLabel,
+       mkApInfoTableLabel,
 
        mkReturnPtLabel,
+       mkReturnInfoLabel,
        mkVecTblLabel,
        mkAltLabel,
        mkDefaultLabel,
+       mkBitmapLabel,
+
+       mkClosureTblLabel,
 
        mkAsmTempLabel,
 
        mkErrorStdEntryLabel,
+       mkUpdEntryLabel,
        mkBlackHoleInfoTableLabel,
+       mkRtsPrimOpLabel,
+
+       mkSelectorInfoLabel,
+       mkSelectorEntryLabel,
 
+       mkCC_Label, mkCCS_Label,
+       
        needsCDecl, isReadOnly, isAsmTemp, externallyVisibleCLabel,
 
+       CLabelType(..), labelType,
+
        pprCLabel
 #if ! OMIT_NATIVE_CODEGEN
        , pprCLabel_asm
@@ -52,19 +61,14 @@ module CLabel (
 import {-# SOURCE #-} MachMisc ( underscorePrefix, fmtAsmLbl )
 #endif
 
-import CgRetConv       ( CtrlReturnConvention(..), ctrlReturnConvAlg )
 import CStrings                ( pp_cSEP )
-import Id              ( externallyVisibleId,
-                         isDataCon,
-                         fIRST_TAG,
-                         ConTag,
-                         Id
-                       )
-import Maybes          ( maybeToBool )
-import PprType         ( showTyCon )
+import DataCon         ( ConTag, DataCon )
+import Name            ( Name, isExternallyVisibleName )
 import TyCon           ( TyCon )
-import Unique          ( showUnique, pprUnique, Unique )
-import Util            ( assertPanic{-, pprTraceToDo:rm-} )
+import Unique          ( pprUnique, Unique )
+import PrimOp          ( PrimOp, pprPrimOp )
+import CostCentre      ( CostCentre, CostCentreStack )
+import Util
 import Outputable
 \end{code}
 
@@ -76,100 +80,72 @@ things we want to find out:
 
 * does it need declarations at all? (v common Prelude things are pre-declared)
 
+* what type does it have? (for generating accurate enough C declarations
+  so that the C compiler won't complain).
+
 \begin{code}
 data CLabel
   = IdLabel                    -- A family of labels related to the
-       CLabelId                -- definition of a particular Id
-       IdLabelInfo             -- Includes DataCon
+       Name                    -- definition of a particular Id
+       IdLabelInfo
 
-  | TyConLabel                 -- A family of labels related to the
-       TyCon                   -- definition of a data type
-       TyConLabelInfo
+  | DataConLabel               -- Ditto data constructors
+       Name
+       DataConLabelInfo
 
   | CaseLabel                  -- A family of labels related to a particular case expression
        Unique                  -- Unique says which case expression
        CaseLabelInfo
 
+  | TyConLabel TyCon           -- currently only one kind of TyconLabel,
+                               -- a 'Closure Table'.
+
   | AsmTempLabel    Unique
 
   | RtsLabel       RtsLabelInfo
 
-  deriving (Eq, Ord)
-\end{code}
-
-The CLabelId is simply so we can declare alternative Eq and Ord
-instances which use cmpId_SpecDataCon (instead of cmpId). This avoids
-comparing the Uniques of two specialised data constructors (which have
-the same as the uniques their respective unspecialised data
-constructors). Instead, the specialising types and the uniques of the
-unspecialised constructors are compared.
+  | CC_Label CostCentre
+  | CCS_Label CostCentreStack
 
-\begin{code}
-data CLabelId = CLabelId Id
-
-instance Eq CLabelId where
-    CLabelId a == CLabelId b = case (a `compare` b) of { EQ -> True;  _ -> False }
-    CLabelId a /= CLabelId b = case (a `compare` b) of { EQ -> False; _ -> True  }
-
-instance Ord CLabelId where
-    CLabelId a <= CLabelId b = case (a `compare` b) of { LT -> True;  EQ -> True;  GT -> False }
-    CLabelId a <  CLabelId b = case (a `compare` b) of { LT -> True;  EQ -> False; GT -> False }
-    CLabelId a >= CLabelId b = case (a `compare` b) of { LT -> False; EQ -> True;  GT -> True  }
-    CLabelId a >  CLabelId b = case (a `compare` b) of { LT -> False; EQ -> False; GT -> True  }
-    compare (CLabelId a) (CLabelId b) = a `compare` b
+  deriving (Eq, Ord)
 \end{code}
 
 \begin{code}
 data IdLabelInfo
   = Closure            -- Label for (static???) closure
-  | StaticClosure      -- Static closure -- e.g., nullary constructor
+
+  | SRT                 -- Static reference table
 
   | InfoTbl            -- Info table for a closure; always read-only
 
-  | EntryStd           -- Thunk, or "slow", code entry point (requires arg satis check)
+  | EntryStd           -- Thunk, or "slow", code entry point
+
   | EntryFast Int      -- entry pt when no arg satisfaction chk needed;
                        -- Int is the arity of the function (to be
                        -- encoded into the name)
 
-  | ConEntry           -- the only kind of entry pt for constructors
+                       -- Ticky-ticky counting
+  | RednCounts         -- Label of place to keep reduction-count info for 
+                       -- this Id
+  deriving (Eq, Ord)
+
+data DataConLabelInfo
+  = ConEntry           -- the only kind of entry pt for constructors
   | ConInfoTbl         -- corresponding info table
 
+  | StaticClosure      -- Static constructor closure
+                       -- e.g., nullary constructor
   | StaticConEntry     -- static constructor entry point
   | StaticInfoTbl      -- corresponding info table
-
-  | PhantomInfoTbl     -- for phantom constructors that only exist in regs
-
-  | VapInfoTbl Bool    -- True <=> the update-reqd version; False <=> the no-update-reqd version
-  | VapEntry   Bool
-
-       -- Ticky-ticky counting
-  | RednCounts         -- Label of place to keep reduction-count info for this Id
-  deriving (Eq, Ord)
-
-
-data TyConLabelInfo
-  = UnvecConUpdCode     -- Update code for the data type if it's unvectored
-
-  | VecConUpdCode ConTag -- One for each constructor which returns in
-                        -- regs; this code actually performs an update
-
-  | StdUpdCode ConTag   -- Update code for all constructors which return
-                        -- in heap.  There are a small number of variants,
-                        -- so that the update code returns (vectored/n or
-                        -- unvectored) in the right way.
-                        -- ToDo: maybe replace TyCon/Int with return conv.
-
-  | InfoTblVecTbl       -- For tables of info tables
-
-  | StdUpdVecTbl        -- Labels the update code, or table of update codes,
-                        -- for a particular type.
   deriving (Eq, Ord)
 
 data CaseLabelInfo
   = CaseReturnPt
+  | CaseReturnInfo
   | CaseVecTbl
   | CaseAlt ConTag
   | CaseDefault
+  | CaseBitmap
   deriving (Eq, Ord)
 
 data RtsLabelInfo
@@ -177,58 +153,73 @@ data RtsLabelInfo
 
   | RtsBlackHoleInfoTbl
 
-  | RtsSelectorInfoTbl -- Selectors
-       Bool            -- True <=> the update-reqd version;
-                       -- False <=> the no-update-reqd version
-       Int             -- 0-indexed Offset from the "goods"
+  | RtsUpdEntry
+
+  | RtsSelectorInfoTbl Bool{-updatable-} Int{-offset-} -- Selector thunks
+  | RtsSelectorEntry   Bool{-updatable-} Int{-offset-}
+
+  | RtsApInfoTbl Bool{-updatable-} Int{-arity-}                -- AP thunks
+  | RtsApEntry   Bool{-updatable-} Int{-arity-}
+
+  | RtsPrimOp PrimOp
 
-  | RtsSelectorEntry   -- Ditto entry code
-       Bool
-       Int
   deriving (Eq, Ord)
+
+-- Label Type: for generating C declarations.
+
+data CLabelType
+  = InfoTblType
+  | ClosureType
+  | VecTblType
+  | CodeType
+  | DataType
 \end{code}
 
 \begin{code}
-mkClosureLabel         id              = IdLabel (CLabelId id)  Closure
-mkInfoTableLabel       id              = IdLabel (CLabelId id)  InfoTbl
-mkStdEntryLabel                id              = IdLabel (CLabelId id)  EntryStd
+mkClosureLabel         id              = IdLabel id  Closure
+mkSRTLabel             id              = IdLabel id  SRT
+mkInfoTableLabel       id              = IdLabel id  InfoTbl
+mkStdEntryLabel                id              = IdLabel id  EntryStd
 mkFastEntryLabel       id arity        = ASSERT(arity > 0)
-                                         IdLabel (CLabelId id)  (EntryFast arity)
-
-mkStaticClosureLabel   con             = ASSERT(isDataCon con)
-                                         IdLabel (CLabelId con) StaticClosure
-mkStaticInfoTableLabel  con            = ASSERT(isDataCon con)
-                                         IdLabel (CLabelId con) StaticInfoTbl
-mkConInfoTableLabel     con            = ASSERT(isDataCon con)
-                                         IdLabel (CLabelId con) ConInfoTbl
-mkPhantomInfoTableLabel con            = ASSERT(isDataCon con)
-                                         IdLabel (CLabelId con) PhantomInfoTbl
-mkConEntryLabel                con             = ASSERT(isDataCon con)
-                                         IdLabel (CLabelId con) ConEntry
-mkStaticConEntryLabel  con             = ASSERT(isDataCon con)
-                                         IdLabel (CLabelId con) StaticConEntry
-
-mkRednCountsLabel      id              = IdLabel (CLabelId id)  RednCounts
-mkVapEntryLabel                id upd_flag     = IdLabel (CLabelId id)  (VapEntry upd_flag)
-mkVapInfoTableLabel    id upd_flag     = IdLabel (CLabelId id)  (VapInfoTbl upd_flag)
-
-mkConUpdCodePtrVecLabel   tycon tag = TyConLabel tycon (VecConUpdCode tag)
-mkStdUpdCodePtrVecLabel   tycon tag = TyConLabel tycon (StdUpdCode tag)
-
-mkInfoTableVecTblLabel   tycon     = TyConLabel tycon InfoTblVecTbl
-mkStdUpdVecTblLabel      tycon     = TyConLabel tycon StdUpdVecTbl
+                                         IdLabel id  (EntryFast arity)
+
+mkRednCountsLabel      id              = IdLabel id  RednCounts
+
+mkStaticClosureLabel   con             = DataConLabel con StaticClosure
+mkStaticInfoTableLabel  con            = DataConLabel con StaticInfoTbl
+mkConInfoTableLabel     con            = DataConLabel con ConInfoTbl
+mkConEntryLabel                con             = DataConLabel con ConEntry
+mkStaticConEntryLabel  con             = DataConLabel con StaticConEntry
+
 
 mkReturnPtLabel uniq           = CaseLabel uniq CaseReturnPt
+mkReturnInfoLabel uniq         = CaseLabel uniq CaseReturnInfo
 mkVecTblLabel   uniq           = CaseLabel uniq CaseVecTbl
 mkAltLabel      uniq tag       = CaseLabel uniq (CaseAlt tag)
 mkDefaultLabel  uniq           = CaseLabel uniq CaseDefault
+mkBitmapLabel   uniq           = CaseLabel uniq CaseBitmap
+
+mkClosureTblLabel tycon                = TyConLabel tycon
 
 mkAsmTempLabel                         = AsmTempLabel
 
        -- Some fixed runtime system labels
 
 mkErrorStdEntryLabel           = RtsLabel RtsShouldNeverHappenCode
+mkUpdEntryLabel                        = RtsLabel RtsUpdEntry
 mkBlackHoleInfoTableLabel      = RtsLabel RtsBlackHoleInfoTbl
+mkRtsPrimOpLabel primop                = RtsLabel (RtsPrimOp primop)
+
+mkSelectorInfoLabel  upd off   = RtsLabel (RtsSelectorInfoTbl upd off)
+mkSelectorEntryLabel upd off   = RtsLabel (RtsSelectorEntry   upd off)
+
+mkApInfoTableLabel&