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



Alias analysis of a full Futhark program. Takes as input a program with an arbitrary lore and produces one with aliases. This module does not implement the aliasing logic itself, and derives its information from definitions in Futhark.IR.Prop.Aliases and Futhark.IR.Aliases. The alias information computed here will include transitive aliases (note that this is not what the building blocks do).



aliasAnalysis :: (ASTLore lore, CanBeAliased (Op lore)) => Prog lore -> Prog (Aliases lore) Source #

Perform alias analysis on a Futhark program.

Ad-hoc utilities

type AliasTable = Map VName Names Source #

Pre-existing aliases for variables. Used to add transitive aliases.

analyseFun :: (ASTLore lore, CanBeAliased (Op lore)) => FunDef lore -> FunDef (Aliases lore) Source #

analyseExp :: (ASTLore lore, CanBeAliased (Op lore)) => AliasTable -> Exp lore -> Exp (Aliases lore) Source #

analyseBody :: (ASTLore lore, CanBeAliased (Op lore)) => AliasTable -> Body lore -> Body (Aliases lore) Source #

analyseLambda :: (ASTLore lore, CanBeAliased (Op lore)) => Lambda lore -> Lambda (Aliases lore) Source #