Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/vis12-cl/src/compiler/IL/ssa-sig.sml
ViewVC logotype

Diff of /branches/vis12-cl/src/compiler/IL/ssa-sig.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2824, Mon Nov 10 17:06:01 2014 UTC revision 2825, Mon Nov 10 21:06:31 2014 UTC
# Line 59  Line 59 
59              succ : node ref              succ : node ref
60            }            }
61        | JOIN of {        | JOIN of {
62              preds : node list ref,              preds : node list ref,      (* includes fake control-flow edges *)
63              phis : phi list ref,              mask : bool list ref,       (* true for incoming fake edges *)
64                phis : phi list ref,        (* data-flow joins corresponding to the edges in preds *)
65              succ : node ref              succ : node ref
66            }            }
67        | COND of {        | COND of {
# Line 105  Line 106 
106        | EXIT of {                       (* includes die and stabilize *)        | EXIT of {                       (* includes die and stabilize *)
107              pred : node ref,              pred : node ref,
108              kind : ExitKind.kind,       (* kind of exit node *)              kind : ExitKind.kind,       (* kind of exit node *)
109              live : var list             (* live variables *)              live : var list,            (* live variables *)
110                succ : node option ref      (* optional fake control-flow edge for when the EXIT is *)
111                                            (* not the CFG exit node *)
112            }            }
113    
114      and rhs      and rhs
# Line 131  Line 134 
134        | VB_RHS of rhs                   (* defined by an assignment (includes globals and state variables) *)        | VB_RHS of rhs                   (* defined by an assignment (includes globals and state variables) *)
135        | VB_MULTIOP of int * Op.rator * var list        | VB_MULTIOP of int * Op.rator * var list
136                                          (* n'th result of operator in multi-assignment *)                                          (* n'th result of operator in multi-assignment *)
137        | VB_PHI of var list              (* defined by a phi node *)        | VB_PHI of var option list       (* defined by a phi node *)
138        | VB_PARAM                        (* parameter to a strand *)        | VB_PARAM                        (* parameter to a strand *)
139    
140    (***** global variables *****)    (***** global variables *****)
# Line 156  Line 159 
159    
160      withtype assign = (var * rhs)      withtype assign = (var * rhs)
161           and massign = (var list * Op.rator * var list)           and massign = (var list * Op.rator * var list)
162           and phi = (var * var list)           and phi = (var * var option list)      (* NONE for fake edges *)
163    
164      datatype assignment      datatype assignment
165        = ASSGN of assign        = ASSGN of assign
# Line 312  Line 315 
315          val hash : node -> word          val hash : node -> word
316          val toString : node -> string          val toString : node -> string
317          val isNULL : node -> bool          val isNULL : node -> bool
318            val isReachable : node -> bool
319        (* variable defs and uses; may include duplicates *)        (* variable defs and uses; may include duplicates *)
320          val uses : node -> var list          val uses : node -> var list
321          val defs : node -> var list          val defs : node -> var list
# Line 333  Line 337 
337          val replaceOutEdge : {oldSrc : node, src : node, dst : node} -> unit          val replaceOutEdge : {oldSrc : node, src : node, dst : node} -> unit
338        (* constructors *)        (* constructors *)
339          val mkENTRY : unit -> node          val mkENTRY : unit -> node
340          val mkJOIN : (var * var list) list -> node          val mkJOIN : phi list -> node
341          val mkCOND : {cond : var, trueBranch : node, falseBranch : node} -> node          val mkCOND : {cond : var, trueBranch : node, falseBranch : node} -> node
342          val mkCOM : string list -> node          val mkCOM : string list -> node
343          val mkASSIGN : assign -> node          val mkASSIGN : assign -> node
# Line 348  Line 352 
352          val mkACTIVE : unit -> node          val mkACTIVE : unit -> node
353          val mkSTABILIZE : unit -> node          val mkSTABILIZE : unit -> node
354          val mkDIE : unit -> node          val mkDIE : unit -> node
355            val mkUNREACHABLE : unit -> node
356        (* properties *)        (* properties *)
357          val newProp : (node -> 'a) -> {          val newProp : (node -> 'a) -> {
358                  getFn : node -> 'a,                  getFn : node -> 'a,

Legend:
Removed from v.2824  
changed lines
  Added in v.2825

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0