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 {k} (fromrep :: k) 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 {k} (m :: * -> *) (rep :: k).
(Monad m, ASTRep rep) =>
Exp rep -> m [ExpHint]
defaultExpHints