-mkCall tgt results actuals srt =
- withFreshLabel "call successor" $ \k ->
- mkLast (LastCall tgt actuals (Just k)) <*>
- mkLabel k <*>
- mkMiddle (CopyIn (Result CmmCallConv) results srt)
+cmmArgConv, cmmResConv :: Convention
+cmmArgConv = ConventionStandard CmmCallConv Arguments
+cmmResConv = ConventionStandard CmmCallConv Arguments
+
+mkJump e actuals = mkMiddle (CopyOut cmmArgConv actuals) <*> mkLast (LastJump e)
+mkReturn actuals = mkMiddle (CopyOut cmmResConv actuals) <*> mkLast LastReturn
+
+mkFinalCall f conv actuals =
+ mkMiddle (CopyOut (ConventionStandard conv Arguments) actuals) <*>
+ mkLast (LastCall f Nothing)
+
+mkCall f conv results actuals srt =
+ withFreshLabel "call successor" $ \k ->
+ mkMiddle (CopyOut (ConventionStandard conv Arguments) actuals) <*>
+ mkLast (LastCall f (Just k)) <*>
+ mkLabel k <*>
+ mkMiddle (CopyIn (ConventionStandard conv Results) results srt)