Add PrimCall to the STG layer and update Core -> STG translation
authorDuncan Coutts <duncan@well-typed.com>
Tue, 9 Jun 2009 15:11:55 +0000 (15:11 +0000)
committerDuncan Coutts <duncan@well-typed.com>
Tue, 9 Jun 2009 15:11:55 +0000 (15:11 +0000)
commitcbbee4e8727c583daf32d9bf17f00afaa839ef10
treeb86e3e566d90444803eb6fc7592cf2a162d04d94
parent5b7e2a875b089f31cd8dedb52d47ef9a93f276be
Add PrimCall to the STG layer and update Core -> STG translation
It adds a third case to StgOp which already hold StgPrimOp and StgFCallOp.
The code generation for the new StgPrimCallOp case is almost exactly the
same as for out-of-line primops. They now share the tailCallPrim function.
In the Core -> STG translation we map foreign calls using the "prim"
calling convention to the StgPrimCallOp case. This is because in Core we
represent prim calls using the ForeignCall stuff. At the STG level however
the prim calls are really much more like primops than foreign calls.
compiler/cmm/CLabel.hs
compiler/codeGen/CgExpr.lhs
compiler/codeGen/CgTailCall.lhs
compiler/codeGen/StgCmmPrim.hs
compiler/prelude/PrimOp.lhs
compiler/stgSyn/CoreToStg.lhs
compiler/stgSyn/StgSyn.lhs