Support code generation for unboxed-tuple function arguments
authorMax Bolingbroke <batterseapower@hotmail.com>
Sun, 18 Mar 2012 00:00:38 +0000 (00:00 +0000)
committerMax Bolingbroke <batterseapower@hotmail.com>
Tue, 15 May 2012 20:32:55 +0000 (21:32 +0100)
commit09987de4ece1fc634af6b2b37173b12ed46fdf3e
tree42f2d5495c064994edd92d0d11574749d4353562
parent7950f46c8698aa813e6f1c9de9c8b5c7fe57ed93
Support code generation for unboxed-tuple function arguments

This is done by a 'unarisation' pre-pass at the STG level which
translates away all (live) binders binding something of unboxed
tuple type.

This has the following knock-on effects:
  * The subkind hierarchy is vastly simplified (no UbxTupleKind or ArgKind)
  * Various relaxed type checks in typechecker, 'foreign import prim' etc
  * All case binders may be live at the Core level
46 files changed:
compiler/basicTypes/BasicTypes.lhs
compiler/basicTypes/DataCon.lhs
compiler/basicTypes/Id.lhs
compiler/cmm/CmmUtils.hs
compiler/codeGen/CgCon.lhs
compiler/codeGen/CgExpr.lhs
compiler/codeGen/CgForeignCall.hs
compiler/codeGen/ClosureInfo.lhs
compiler/codeGen/StgCmm.hs
compiler/codeGen/StgCmmClosure.hs
compiler/codeGen/StgCmmCon.hs
compiler/codeGen/StgCmmExpr.hs
compiler/codeGen/StgCmmForeign.hs
compiler/codeGen/StgCmmLayout.hs
compiler/codeGen/StgCmmTicky.hs
compiler/codeGen/StgCmmUtils.hs
compiler/coreSyn/CoreLint.lhs
compiler/deSugar/DsExpr.lhs
compiler/deSugar/DsForeign.lhs
compiler/ghc.cabal.in
compiler/ghci/ByteCodeGen.lhs
compiler/ghci/ByteCodeItbls.lhs
compiler/ghci/RtClosureInspect.hs
compiler/main/InteractiveEval.hs
compiler/parser/ParserCore.y
compiler/prelude/PrelNames.lhs
compiler/prelude/TysPrim.lhs
compiler/prelude/TysWiredIn.lhs
compiler/simplCore/CSE.lhs
compiler/simplStg/SimplStg.lhs
compiler/simplStg/UnariseStg.lhs [new file with mode: 0644]
compiler/stgSyn/CoreToStg.lhs
compiler/stgSyn/StgLint.lhs
compiler/stgSyn/StgSyn.lhs
compiler/typecheck/TcBinds.lhs
compiler/typecheck/TcDeriv.lhs
compiler/typecheck/TcExpr.lhs
compiler/typecheck/TcHsType.lhs
compiler/typecheck/TcMType.lhs
compiler/typecheck/TcPat.lhs
compiler/typecheck/TcType.lhs
compiler/typecheck/TcUnify.lhs
compiler/types/Kind.lhs
compiler/types/Type.lhs
compiler/types/TypeRep.lhs
compiler/utils/Util.lhs