{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} module Futhark.Pass.ExplicitAllocations.Seq ( explicitAllocations, simplifiable, ) where import Futhark.IR.Seq import Futhark.IR.SeqMem import Futhark.Pass import Futhark.Pass.ExplicitAllocations explicitAllocations :: Pass Seq SeqMem explicitAllocations :: Pass Seq SeqMem explicitAllocations = forall fromrep torep inner. Allocable fromrep torep inner => (Op fromrep -> AllocM fromrep torep (Op torep)) -> (Exp torep -> AllocM fromrep torep [ExpHint]) -> Pass fromrep torep explicitAllocationsGeneric (forall (f :: * -> *) a. Applicative f => a -> f a pure forall b c a. (b -> c) -> (a -> b) -> a -> c . forall inner. inner -> MemOp inner Inner) forall (m :: * -> *) rep. (Monad m, ASTRep rep) => Exp rep -> m [ExpHint] defaultExpHints