futhark-0.15.8: An optimising compiler for a functional, array-oriented language.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Futhark.IR.Ranges

Description

A representation where all bindings are annotated with range information.

Synopsis

The Lore definition

data Ranges lore Source #

The lore for the basic representation.

Instances

Instances details
(Decorations lore, CanBeRanged (Op lore)) => Decorations (Ranges lore) Source # 
Instance details

Defined in Futhark.IR.Ranges

Associated Types

type LetDec (Ranges lore) Source #

type ExpDec (Ranges lore) Source #

type BodyDec (Ranges lore) Source #

type FParamInfo (Ranges lore) Source #

type LParamInfo (Ranges lore) Source #

type RetType (Ranges lore) Source #

type BranchType (Ranges lore) Source #

type Op (Ranges lore) Source #

(PrettyLore lore, CanBeRanged (Op lore)) => PrettyLore (Ranges lore) Source # 
Instance details

Defined in Futhark.IR.Ranges

Methods

ppExpLore :: ExpDec (Ranges lore) -> Exp (Ranges lore) -> Maybe Doc Source #

(ASTLore lore, CanBeRanged (Op lore)) => ASTLore (Ranges lore) Source # 
Instance details

Defined in Futhark.IR.Ranges

Methods

expTypesFromPattern :: (HasScope (Ranges lore) m, Monad m) => Pattern (Ranges lore) -> m [BranchType (Ranges lore)] Source #

(Aliased lore, CanBeRanged (Op lore), AliasedOp (OpWithRanges (Op lore))) => Aliased (Ranges lore) Source # 
Instance details

Defined in Futhark.IR.Ranges

type LetDec (Ranges lore) Source # 
Instance details

Defined in Futhark.IR.Ranges

type LetDec (Ranges lore) = (Range, LetDec lore)
type ExpDec (Ranges lore) Source # 
Instance details

Defined in Futhark.IR.Ranges

type ExpDec (Ranges lore) = ExpDec lore
type BodyDec (Ranges lore) Source # 
Instance details

Defined in Futhark.IR.Ranges

type BodyDec (Ranges lore) = ([Range], BodyDec lore)
type FParamInfo (Ranges lore) Source # 
Instance details

Defined in Futhark.IR.Ranges

type FParamInfo (Ranges lore) = FParamInfo lore
type LParamInfo (Ranges lore) Source # 
Instance details

Defined in Futhark.IR.Ranges

type LParamInfo (Ranges lore) = LParamInfo lore
type RetType (Ranges lore) Source # 
Instance details

Defined in Futhark.IR.Ranges

type RetType (Ranges lore) = RetType lore
type BranchType (Ranges lore) Source # 
Instance details

Defined in Futhark.IR.Ranges

type BranchType (Ranges lore) = BranchType lore
type Op (Ranges lore) Source # 
Instance details

Defined in Futhark.IR.Ranges

type Op (Ranges lore) = OpWithRanges (Op lore)

Module re-exports

Adding ranges

addRangesToPattern :: (ASTLore lore, CanBeRanged (Op lore)) => Pattern lore -> Exp (Ranges lore) -> Pattern (Ranges lore) Source #

Add ranges to the pattern corresponding to this expression.

mkRangedBody :: BodyDec lore -> Stms (Ranges lore) -> Result -> Body (Ranges lore) Source #

Construct a body with the Ranges lore.

mkPatternRanges :: (ASTLore lore, CanBeRanged (Op lore)) => Pattern lore -> Exp (Ranges lore) -> ([PatElemT (Range, LetDec lore)], [PatElemT (Range, LetDec lore)]) Source #

Find the ranges for the pattern elements.

mkBodyRanges :: Stms lore -> Result -> [Range] Source #

Find the ranges for the body result.

Removing ranges

removeProgRanges :: CanBeRanged (Op lore) => Prog (Ranges lore) -> Prog lore Source #

Remove range information from program.

removeStmRanges :: CanBeRanged (Op lore) => Stm (Ranges lore) -> Stm lore Source #

Remove range information from statement.

removeLambdaRanges :: CanBeRanged (Op lore) => Lambda (Ranges lore) -> Lambda lore Source #

Remove range information from lambda.

Orphan instances

PrettyAnnot (PatElemT dec) => PrettyAnnot (PatElemT (Range, dec)) Source # 
Instance details

Methods

ppAnnot :: PatElemT (Range, dec) -> Maybe Doc Source #

AliasesOf dec => AliasesOf ([Range], dec) Source # 
Instance details

Methods

aliasesOf :: ([Range], dec) -> Names Source #

AliasesOf dec => AliasesOf (Range, dec) Source # 
Instance details

Methods

aliasesOf :: (Range, dec) -> Names Source #

RangesOf ([Range], dec) Source # 
Instance details

Methods

rangesOf :: ([Range], dec) -> [Range] Source #

RangeOf (Range, dec) Source # 
Instance details

Methods

rangeOf :: (Range, dec) -> Range Source #