ddc-core-salt-0.4.1.3: Disciplined Disciple Compiler C code generator.

Safe HaskellNone

DDC.Core.Salt.Transfer

Synopsis

Documentation

transferModule :: Module (AnTEC a Name) Name -> Either (Error (AnTEC a Name)) (Module (AnTEC a Name) Name)Source

Add control transfer primops to function bodies. For example:

      fun [x : Int32#] : Int32#
         = case ... of
                 ...      -> add# [Int32] ...
                 ...      -> fun x

=> fun [x : Int32#] : Int32#
         = case ... of
                 ...      -> return# [Int32#] (add# [Int32] ...)
                 ...      -> tailcall1# [Int32#] [Int32#] fun x

The control primops return tell us how to transfer control after we've finished with the current function.