llvm-extra-0.10: src/LLVM/Extra/MemoryPrivate.hs
module LLVM.Extra.MemoryPrivate where
import qualified LLVM.Core as LLVM
import LLVM.Core (CodeGenFunction, Value, )
decomposeFromLoad ::
LLVM.IsSized struct =>
(Value (LLVM.Ptr struct) -> CodeGenFunction r a) ->
Value struct -> CodeGenFunction r a
decomposeFromLoad loadStruct struct = do
ptr <- LLVM.alloca
LLVM.store struct ptr
loadStruct ptr
composeFromStore ::
LLVM.IsSized struct =>
(a -> Value (LLVM.Ptr struct) -> CodeGenFunction r ()) ->
a -> CodeGenFunction r (Value struct)
composeFromStore storeStruct x = do
ptr <- LLVM.alloca
storeStruct x ptr
LLVM.load ptr