Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > da2ed07af0cf0f424d74f4cc6829a27c > files > 1066

ghc-ghc-devel-6.12.3-8.6.fc14.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>RegAlloc.Liveness</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
></SCRIPT
><SCRIPT TYPE="text/javascript"
>window.onload = function () {setSynopsis("mini_RegAlloc-Liveness.html")};</SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>ghc-6.12.3: The GHC API</TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>RegAlloc.Liveness</FONT
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ARegSet"
>RegSet</A
> = <A HREF="UniqSet.html#t%3AUniqSet"
>UniqSet</A
> <A HREF="Reg.html#t%3AReg"
>Reg</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ARegMap"
>RegMap</A
> a = <A HREF="UniqFM.html#t%3AUniqFM"
>UniqFM</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AemptyRegMap"
>emptyRegMap</A
> ::  <A HREF="UniqFM.html#t%3AUniqFM"
>UniqFM</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ABlockMap"
>BlockMap</A
> a = <A HREF="BlockId.html#t%3ABlockEnv"
>BlockEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AemptyBlockMap"
>emptyBlockMap</A
> ::  <A HREF="BlockId.html#t%3ABlockEnv"
>BlockEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr = <A HREF="Cmm.html#t%3AGenCmmTop"
>GenCmmTop</A
> <A HREF="Cmm.html#t%3ACmmStatic"
>CmmStatic</A
> <A HREF="RegAlloc-Liveness.html#t%3ALiveInfo"
>LiveInfo</A
> (<A HREF="Cmm.html#t%3AListGraph"
>ListGraph</A
> (<A HREF="Cmm.html#t%3AGenBasicBlock"
>GenBasicBlock</A
> (<A HREF="RegAlloc-Liveness.html#t%3ALiveInstr"
>LiveInstr</A
> instr)))</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ALiveInstr"
>LiveInstr</A
> instr </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3AInstr"
>Instr</A
> instr (<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="RegAlloc-Liveness.html#t%3ALiveness"
>Liveness</A
>)</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ASPILL"
>SPILL</A
> <A HREF="Reg.html#t%3AReg"
>Reg</A
> <A HREF="../base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ARELOAD"
>RELOAD</A
> <A HREF="../base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> <A HREF="Reg.html#t%3AReg"
>Reg</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ALiveness"
>Liveness</A
>  = <A HREF="#v%3ALiveness"
>Liveness</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3AliveBorn"
>liveBorn</A
> :: <A HREF="RegAlloc-Liveness.html#t%3ARegSet"
>RegSet</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AliveDieRead"
>liveDieRead</A
> :: <A HREF="RegAlloc-Liveness.html#t%3ARegSet"
>RegSet</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AliveDieWrite"
>liveDieWrite</A
> :: <A HREF="RegAlloc-Liveness.html#t%3ARegSet"
>RegSet</A
></TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ALiveInfo"
>LiveInfo</A
>  = <A HREF="#v%3ALiveInfo"
>LiveInfo</A
> [<A HREF="Cmm.html#t%3ACmmStatic"
>CmmStatic</A
>] (<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="BlockId.html#t%3ABlockId"
>BlockId</A
>) (<A HREF="RegAlloc-Liveness.html#t%3ABlockMap"
>BlockMap</A
> <A HREF="RegAlloc-Liveness.html#t%3ARegSet"
>RegSet</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ALiveBasicBlock"
>LiveBasicBlock</A
> instr = <A HREF="Cmm.html#t%3AGenBasicBlock"
>GenBasicBlock</A
> (<A HREF="RegAlloc-Liveness.html#t%3ALiveInstr"
>LiveInstr</A
> instr)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmapBlockTop"
>mapBlockTop</A
> ::  (<A HREF="RegAlloc-Liveness.html#t%3ALiveBasicBlock"
>LiveBasicBlock</A
> instr -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveBasicBlock"
>LiveBasicBlock</A
> instr) -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmapBlockTopM"
>mapBlockTopM</A
> :: <A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="RegAlloc-Liveness.html#t%3ALiveBasicBlock"
>LiveBasicBlock</A
> instr -&gt; m (<A HREF="RegAlloc-Liveness.html#t%3ALiveBasicBlock"
>LiveBasicBlock</A
> instr)) -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; m (<A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmapGenBlockTop"
>mapGenBlockTop</A
> ::  (<A HREF="Cmm.html#t%3AGenBasicBlock"
>GenBasicBlock</A
> i -&gt; <A HREF="Cmm.html#t%3AGenBasicBlock"
>GenBasicBlock</A
> i) -&gt; <A HREF="Cmm.html#t%3AGenCmmTop"
>GenCmmTop</A
> d h (<A HREF="Cmm.html#t%3AListGraph"
>ListGraph</A
> i) -&gt; <A HREF="Cmm.html#t%3AGenCmmTop"
>GenCmmTop</A
> d h (<A HREF="Cmm.html#t%3AListGraph"
>ListGraph</A
> i)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmapGenBlockTopM"
>mapGenBlockTopM</A
> :: <A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Cmm.html#t%3AGenBasicBlock"
>GenBasicBlock</A
> i -&gt; m (<A HREF="Cmm.html#t%3AGenBasicBlock"
>GenBasicBlock</A
> i)) -&gt; <A HREF="Cmm.html#t%3AGenCmmTop"
>GenCmmTop</A
> d h (<A HREF="Cmm.html#t%3AListGraph"
>ListGraph</A
> i) -&gt; m (<A HREF="Cmm.html#t%3AGenCmmTop"
>GenCmmTop</A
> d h (<A HREF="Cmm.html#t%3AListGraph"
>ListGraph</A
> i))</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AstripLive"
>stripLive</A
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; <A HREF="Instruction.html#t%3ANatCmmTop"
>NatCmmTop</A
> instr</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AstripLiveBlock"
>stripLiveBlock</A
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveBasicBlock"
>LiveBasicBlock</A
> instr -&gt; <A HREF="Instruction.html#t%3ANatBasicBlock"
>NatBasicBlock</A
> instr</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AslurpConflicts"
>slurpConflicts</A
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; (<A HREF="Bag.html#t%3ABag"
>Bag</A
> (<A HREF="UniqSet.html#t%3AUniqSet"
>UniqSet</A
> <A HREF="Reg.html#t%3AReg"
>Reg</A
>), <A HREF="Bag.html#t%3ABag"
>Bag</A
> (<A HREF="Reg.html#t%3AReg"
>Reg</A
>, <A HREF="Reg.html#t%3AReg"
>Reg</A
>))</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AslurpReloadCoalesce"
>slurpReloadCoalesce</A
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; <A HREF="Bag.html#t%3ABag"
>Bag</A
> (<A HREF="Reg.html#t%3AReg"
>Reg</A
>, <A HREF="Reg.html#t%3AReg"
>Reg</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AeraseDeltasLive"
>eraseDeltasLive</A
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ApatchEraseLive"
>patchEraseLive</A
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; (<A HREF="Reg.html#t%3AReg"
>Reg</A
> -&gt; <A HREF="Reg.html#t%3AReg"
>Reg</A
>) -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ApatchRegsLiveInstr"
>patchRegsLiveInstr</A
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; (<A HREF="Reg.html#t%3AReg"
>Reg</A
> -&gt; <A HREF="Reg.html#t%3AReg"
>Reg</A
>) -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveInstr"
>LiveInstr</A
> instr -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveInstr"
>LiveInstr</A
> instr</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AregLiveness"
>regLiveness</A
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; <A HREF="Instruction.html#t%3ANatCmmTop"
>NatCmmTop</A
> instr -&gt; <A HREF="UniqSupply.html#t%3AUniqSM"
>UniqSM</A
> (<A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr)</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Documentation</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:RegSet"
><A NAME="t%3ARegSet"
></A
></A
><B
>RegSet</B
> = <A HREF="UniqSet.html#t%3AUniqSet"
>UniqSet</A
> <A HREF="Reg.html#t%3AReg"
>Reg</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:RegMap"
><A NAME="t%3ARegMap"
></A
></A
><B
>RegMap</B
> a = <A HREF="UniqFM.html#t%3AUniqFM"
>UniqFM</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:emptyRegMap"
><A NAME="v%3AemptyRegMap"
></A
></A
><B
>emptyRegMap</B
> ::  <A HREF="UniqFM.html#t%3AUniqFM"
>UniqFM</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:BlockMap"
><A NAME="t%3ABlockMap"
></A
></A
><B
>BlockMap</B
> a = <A HREF="BlockId.html#t%3ABlockEnv"
>BlockEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:emptyBlockMap"
><A NAME="v%3AemptyBlockMap"
></A
></A
><B
>emptyBlockMap</B
> ::  <A HREF="BlockId.html#t%3ABlockEnv"
>BlockEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:LiveCmmTop"
><A NAME="t%3ALiveCmmTop"
></A
></A
><B
>LiveCmmTop</B
> instr = <A HREF="Cmm.html#t%3AGenCmmTop"
>GenCmmTop</A
> <A HREF="Cmm.html#t%3ACmmStatic"
>CmmStatic</A
> <A HREF="RegAlloc-Liveness.html#t%3ALiveInfo"
>LiveInfo</A
> (<A HREF="Cmm.html#t%3AListGraph"
>ListGraph</A
> (<A HREF="Cmm.html#t%3AGenBasicBlock"
>GenBasicBlock</A
> (<A HREF="RegAlloc-Liveness.html#t%3ALiveInstr"
>LiveInstr</A
> instr)))</TD
></TR
><TR
><TD CLASS="doc"
>A top level thing which carries liveness information.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:LiveInstr"
><A NAME="t%3ALiveInstr"
></A
></A
><B
>LiveInstr</B
> instr </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>An instruction with liveness information.
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:Instr"
><A NAME="v%3AInstr"
></A
></A
><B
>Instr</B
> instr (<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="RegAlloc-Liveness.html#t%3ALiveness"
>Liveness</A
>)</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:SPILL"
><A NAME="v%3ASPILL"
></A
></A
><B
>SPILL</B
> <A HREF="Reg.html#t%3AReg"
>Reg</A
> <A HREF="../base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
></TD
><TD CLASS="rdoc"
>spill this reg to a stack slot
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:RELOAD"
><A NAME="v%3ARELOAD"
></A
></A
><B
>RELOAD</B
> <A HREF="../base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> <A HREF="Reg.html#t%3AReg"
>Reg</A
></TD
><TD CLASS="rdoc"
>reload this reg from a stack slot
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:LiveInstr')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:LiveInstr" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="Outputable.html#t%3AOutputable"
>Outputable</A
> instr =&gt; <A HREF="Outputable.html#t%3AOutputable"
>Outputable</A
> (<A HREF="RegAlloc-Liveness.html#t%3ALiveInstr"
>LiveInstr</A
> instr)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:Liveness"
><A NAME="t%3ALiveness"
></A
></A
><B
>Liveness</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>Liveness information.
 	The regs which die are ones which are no longer live in the *next* instruction
 	in this sequence.
 	(NB. if the instruction is a jump, these registers might still be live
 	at the jump target(s) - you have to check the liveness at the destination
 	block to find out).
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:Liveness"
><A NAME="v%3ALiveness"
></A
></A
><B
>Liveness</B
></TD
><TD CLASS="rdoc"
>registers that died because they were clobbered by something.
</TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:liveBorn"
><A NAME="v%3AliveBorn"
></A
></A
><B
>liveBorn</B
> :: <A HREF="RegAlloc-Liveness.html#t%3ARegSet"
>RegSet</A
></TD
><TD CLASS="rdoc"
>registers born in this instruction (written to for first time).
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:liveDieRead"
><A NAME="v%3AliveDieRead"
></A
></A
><B
>liveDieRead</B
> :: <A HREF="RegAlloc-Liveness.html#t%3ARegSet"
>RegSet</A
></TD
><TD CLASS="rdoc"
>registers that died because they were read for the last time.
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:liveDieWrite"
><A NAME="v%3AliveDieWrite"
></A
></A
><B
>liveDieWrite</B
> :: <A HREF="RegAlloc-Liveness.html#t%3ARegSet"
>RegSet</A
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:LiveInfo"
><A NAME="t%3ALiveInfo"
></A
></A
><B
>LiveInfo</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>Stash regs live on entry to each basic block in the info part of the cmm code.
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:LiveInfo"
><A NAME="v%3ALiveInfo"
></A
></A
><B
>LiveInfo</B
> [<A HREF="Cmm.html#t%3ACmmStatic"
>CmmStatic</A
>] (<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="BlockId.html#t%3ABlockId"
>BlockId</A
>) (<A HREF="RegAlloc-Liveness.html#t%3ABlockMap"
>BlockMap</A
> <A HREF="RegAlloc-Liveness.html#t%3ARegSet"
>RegSet</A
>)</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:LiveInfo')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:LiveInfo" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="Outputable.html#t%3AOutputable"
>Outputable</A
> <A HREF="RegAlloc-Liveness.html#t%3ALiveInfo"
>LiveInfo</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:LiveBasicBlock"
><A NAME="t%3ALiveBasicBlock"
></A
></A
><B
>LiveBasicBlock</B
> instr = <A HREF="Cmm.html#t%3AGenBasicBlock"
>GenBasicBlock</A
> (<A HREF="RegAlloc-Liveness.html#t%3ALiveInstr"
>LiveInstr</A
> instr)</TD
></TR
><TR
><TD CLASS="doc"
>A basic block with liveness information.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mapBlockTop"
><A NAME="v%3AmapBlockTop"
></A
></A
><B
>mapBlockTop</B
> ::  (<A HREF="RegAlloc-Liveness.html#t%3ALiveBasicBlock"
>LiveBasicBlock</A
> instr -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveBasicBlock"
>LiveBasicBlock</A
> instr) -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr</TD
></TR
><TR
><TD CLASS="doc"
>map a function across all the basic blocks in this code
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mapBlockTopM"
><A NAME="v%3AmapBlockTopM"
></A
></A
><B
>mapBlockTopM</B
> :: <A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="RegAlloc-Liveness.html#t%3ALiveBasicBlock"
>LiveBasicBlock</A
> instr -&gt; m (<A HREF="RegAlloc-Liveness.html#t%3ALiveBasicBlock"
>LiveBasicBlock</A
> instr)) -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; m (<A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr)</TD
></TR
><TR
><TD CLASS="doc"
>map a function across all the basic blocks in this code (monadic version)
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mapGenBlockTop"
><A NAME="v%3AmapGenBlockTop"
></A
></A
><B
>mapGenBlockTop</B
> ::  (<A HREF="Cmm.html#t%3AGenBasicBlock"
>GenBasicBlock</A
> i -&gt; <A HREF="Cmm.html#t%3AGenBasicBlock"
>GenBasicBlock</A
> i) -&gt; <A HREF="Cmm.html#t%3AGenCmmTop"
>GenCmmTop</A
> d h (<A HREF="Cmm.html#t%3AListGraph"
>ListGraph</A
> i) -&gt; <A HREF="Cmm.html#t%3AGenCmmTop"
>GenCmmTop</A
> d h (<A HREF="Cmm.html#t%3AListGraph"
>ListGraph</A
> i)</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mapGenBlockTopM"
><A NAME="v%3AmapGenBlockTopM"
></A
></A
><B
>mapGenBlockTopM</B
> :: <A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m =&gt; (<A HREF="Cmm.html#t%3AGenBasicBlock"
>GenBasicBlock</A
> i -&gt; m (<A HREF="Cmm.html#t%3AGenBasicBlock"
>GenBasicBlock</A
> i)) -&gt; <A HREF="Cmm.html#t%3AGenCmmTop"
>GenCmmTop</A
> d h (<A HREF="Cmm.html#t%3AListGraph"
>ListGraph</A
> i) -&gt; m (<A HREF="Cmm.html#t%3AGenCmmTop"
>GenCmmTop</A
> d h (<A HREF="Cmm.html#t%3AListGraph"
>ListGraph</A
> i))</TD
></TR
><TR
><TD CLASS="doc"
>map a function across all the basic blocks in this code (monadic version)
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:stripLive"
><A NAME="v%3AstripLive"
></A
></A
><B
>stripLive</B
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; <A HREF="Instruction.html#t%3ANatCmmTop"
>NatCmmTop</A
> instr</TD
></TR
><TR
><TD CLASS="doc"
>Strip away liveness information, yielding NatCmmTop
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:stripLiveBlock"
><A NAME="v%3AstripLiveBlock"
></A
></A
><B
>stripLiveBlock</B
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveBasicBlock"
>LiveBasicBlock</A
> instr -&gt; <A HREF="Instruction.html#t%3ANatBasicBlock"
>NatBasicBlock</A
> instr</TD
></TR
><TR
><TD CLASS="doc"
>Strip away liveness information from a basic block,
	and make real spill instructions out of SPILL, RELOAD pseudos along the way.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:slurpConflicts"
><A NAME="v%3AslurpConflicts"
></A
></A
><B
>slurpConflicts</B
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; (<A HREF="Bag.html#t%3ABag"
>Bag</A
> (<A HREF="UniqSet.html#t%3AUniqSet"
>UniqSet</A
> <A HREF="Reg.html#t%3AReg"
>Reg</A
>), <A HREF="Bag.html#t%3ABag"
>Bag</A
> (<A HREF="Reg.html#t%3AReg"
>Reg</A
>, <A HREF="Reg.html#t%3AReg"
>Reg</A
>))</TD
></TR
><TR
><TD CLASS="doc"
>Slurp out the list of register conflicts and reg-reg moves from this top level thing.
	Slurping of conflicts and moves is wrapped up together so we don't have
	to make two passes over the same code when we want to build the graph.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:slurpReloadCoalesce"
><A NAME="v%3AslurpReloadCoalesce"
></A
></A
><B
>slurpReloadCoalesce</B
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; <A HREF="Bag.html#t%3ABag"
>Bag</A
> (<A HREF="Reg.html#t%3AReg"
>Reg</A
>, <A HREF="Reg.html#t%3AReg"
>Reg</A
>)</TD
></TR
><TR
><TD CLASS="doc"
><P
>For spill/reloads
</P
><P
>SPILL  v1, slot1
	...
	RELOAD slot1, v2
</P
><P
>If we can arrange that v1 and v2 are allocated to the same hreg it's more likely
	the spill/reload instrs can be cleaned and replaced by a nop reg-reg move.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:eraseDeltasLive"
><A NAME="v%3AeraseDeltasLive"
></A
></A
><B
>eraseDeltasLive</B
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr</TD
></TR
><TR
><TD CLASS="doc"
>Erase Delta instructions.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:patchEraseLive"
><A NAME="v%3ApatchEraseLive"
></A
></A
><B
>patchEraseLive</B
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; (<A HREF="Reg.html#t%3AReg"
>Reg</A
> -&gt; <A HREF="Reg.html#t%3AReg"
>Reg</A
>) -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr</TD
></TR
><TR
><TD CLASS="doc"
>Patch the registers in this code according to this register mapping.
	also erase reg -&gt; reg moves when the reg is the same.
	also erase reg -&gt; reg moves when the destination dies in this instr.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:patchRegsLiveInstr"
><A NAME="v%3ApatchRegsLiveInstr"
></A
></A
><B
>patchRegsLiveInstr</B
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; (<A HREF="Reg.html#t%3AReg"
>Reg</A
> -&gt; <A HREF="Reg.html#t%3AReg"
>Reg</A
>) -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveInstr"
>LiveInstr</A
> instr -&gt; <A HREF="RegAlloc-Liveness.html#t%3ALiveInstr"
>LiveInstr</A
> instr</TD
></TR
><TR
><TD CLASS="doc"
>Patch registers in this LiveInstr, including the liveness information.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:regLiveness"
><A NAME="v%3AregLiveness"
></A
></A
><B
>regLiveness</B
> :: <A HREF="Instruction.html#t%3AInstruction"
>Instruction</A
> instr =&gt; <A HREF="Instruction.html#t%3ANatCmmTop"
>NatCmmTop</A
> instr -&gt; <A HREF="UniqSupply.html#t%3AUniqSM"
>UniqSM</A
> (<A HREF="RegAlloc-Liveness.html#t%3ALiveCmmTop"
>LiveCmmTop</A
> instr)</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.6.1</TD
></TR
></TABLE
></BODY
></HTML
>