- = FinalBranch -- ^ Same as 'CmmBranch'
- BlockId -- ^ Target must be a ControlEntry
-
- | FinalReturn -- ^ Same as 'CmmReturn'
- CmmActuals -- ^ Return values
-
- | FinalJump -- ^ Same as 'CmmJump'
- CmmExpr -- ^ The function to call
- CmmActuals -- ^ Arguments of the call
-
- | FinalCall -- ^ Same as 'CmmCallee'
- -- followed by 'CmmGoto'
- BlockId -- ^ Target of the 'CmmGoto'
- -- (must be a 'ContinuationEntry')
- CmmCallTarget -- ^ The function to call
- CmmFormals -- ^ Results from call
- -- (redundant with ContinuationEntry)
- CmmActuals -- ^ Arguments to call
- C_SRT -- ^ SRT for the continuation's info table
- CmmReturnInfo -- ^ Does the function return?
- Bool -- ^ True <=> GC block so ignore stack size
-
- | FinalSwitch -- ^ Same as a 'CmmSwitch'
- CmmExpr -- ^ Scrutinee (zero based)
- [Maybe BlockId] -- ^ Targets
+ = FinalBranch BlockId
+ -- ^ Same as 'CmmBranch'. Target must be a ControlEntry
+
+ | FinalReturn HintedCmmActuals
+ -- ^ Same as 'CmmReturn'. Parameter is the return values.
+
+ | FinalJump CmmExpr HintedCmmActuals
+ -- ^ Same as 'CmmJump'. Parameters:
+ -- 1. The function to call,
+ -- 2. Arguments of the call
+
+ | FinalCall BlockId CmmCallTarget HintedCmmFormals HintedCmmActuals
+ C_SRT CmmReturnInfo Bool
+ -- ^ Same as 'CmmCallee' followed by 'CmmGoto'. Parameters:
+ -- 1. Target of the 'CmmGoto' (must be a 'ContinuationEntry')
+ -- 2. The function to call
+ -- 3. Results from call (redundant with ContinuationEntry)
+ -- 4. Arguments to call
+ -- 5. SRT for the continuation's info table
+ -- 6. Does the function return?
+ -- 7. True <=> GC block so ignore stack size
+
+ | FinalSwitch CmmExpr [Maybe BlockId]
+ -- ^ Same as a 'CmmSwitch'. Paremeters:
+ -- 1. Scrutinee (zero based)
+ -- 2. Targets