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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/cfg-ir/ssa-pp-fn.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/cfg-ir/ssa-pp-fn.sml

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

revision 4332, Mon Aug 1 02:36:01 2016 UTC revision 4333, Mon Aug 1 12:55:39 2016 UTC
# Line 101  Line 101 
101                            typedVar y, " = phi(",                            typedVar y, " = phi(",
102                            String.concatWith "," (List.mapPartial (Option.map Var.toString) xs), ")\n"                            String.concatWith "," (List.mapPartial (Option.map Var.toString) xs), ")\n"
103                          ])                          ])
104                  in                  fun prJoin (nd, preds, mask) = let
                   if isMarked nd  
                     then ()  
                     else (  
                       mark nd;  
                       if noLabel andalso (! compact)  
                         then ()  
                         else (case IR.Node.kind nd  
                            of IR.JOIN{preds, mask, ...} => let  
105                                  val preds = ListPair.mapEq                                  val preds = ListPair.mapEq
106                                        (fn (false, nd) => IR.Node.toString nd                                        (fn (false, nd) => IR.Node.toString nd
107                                          | (true, nd) => "*" ^ IR.Node.toString nd)                                          | (true, nd) => "*" ^ IR.Node.toString nd)
108                                        (!mask, !preds)                              (mask, preds)
109  (* +DEBUG*)  (* +DEBUG*)
110  handle ex => (  handle ex => (
111  print(concat["**** Broken CFG at ", IR.Node.toString nd, "\n"]);  print(concat["**** Broken CFG at ", IR.Node.toString nd, "\n"]);
112  List.map IR.Node.toString (!preds))  List.map IR.Node.toString preds)
113  (* -DEBUG*)  (* -DEBUG*)
114                                  in                                  in
115                                    prln (out, [                                    prln (out, [
# Line 125  Line 117 
117                                        String.concatWith "," preds, "]\n"                                        String.concatWith "," preds, "]\n"
118                                      ])                                      ])
119                                  end                                  end
120                    val kind = IR.Node.kind nd
121                    val noLabel = (case kind of IR.FOREACH _ => false | _ => noLabel)
122                    in
123                      if isMarked nd
124                        then ()
125                        else (
126                          mark nd;
127                          if noLabel andalso (! compact)
128                            then ()
129                            else (case kind
130                               of IR.JOIN{preds, mask, ...} => prJoin (nd, !preds, !mask)
131                                | IR.FOREACH{pred, bodyExit, mask, ...} =>
132                                    prJoin (nd, [!pred, !bodyExit], !mask)
133                              | _ => prln (out, [                              | _ => prln (out, [
134                                    IR.Node.toString nd, ":  preds = [",                                    IR.Node.toString nd, ":  preds = [",
135                                    String.concatWith "," (List.map IR.Node.toString (IR.Node.preds nd)),                                    String.concatWith "," (List.map IR.Node.toString (IR.Node.preds nd)),
136                                    "]\n"                                    "]\n"
137                                  ])                                  ])
138                            (* end case *));                            (* end case *));
139                        case IR.Node.kind nd                        case kind
140                         of IR.NULL => ()                         of IR.NULL => ()
141                          | IR.ENTRY{succ} => goto (out, !succ)                          | IR.ENTRY{succ} => goto (out, !succ)
142                          | IR.JOIN{phis, succ, ...} => (                          | IR.JOIN{phis, succ, ...} => (

Legend:
Removed from v.4332  
changed lines
  Added in v.4333

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