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 3485, Sun Dec 6 13:48:48 2015 UTC revision 3506, Fri Dec 18 04:03:54 2015 UTC
# Line 139  Line 139 
139                                ]);                                ]);
140                              ppNd (out, false, !trueBranch);                              ppNd (out, false, !trueBranch);
141                              ppNd (out, false, !falseBranch))                              ppNd (out, false, !falseBranch))
142                          | IR.FOREACH{phis, var, src, body, succ, ...} => (                          | IR.FOREACH{phis, var, src, bodyEntry, succ, ...} => (
143                              prln (out1, [                              prln (out1, [
144                                  "foreach (", Var.toString var, " in ", Var.toString src, ")",                                  "foreach (", Var.toString var, " in ", Var.toString src, ")",
145                                  " on exit goto ", IR.Node.toString(!succ), "\n"                                  " on exit goto ", IR.Node.toString(!succ), "\n"
146                                ]);                                ]);
147                              List.app (prPhi (incIndent out1)) (!phis);                              List.app (prPhi (incIndent out1)) (!phis);
148                                goto (out, !bodyEntry);
149                              goto (out, !succ))                              goto (out, !succ))
150                          | IR.COM{text, succ, ...} => (                          | IR.COM{text, succ, ...} => (
151                              List.app (fn s => prln (out1, ["//", s, "\n"])) text;                              List.app (fn s => prln (out1, ["//", s, "\n"])) text;
# Line 171  Line 172 
172                                  IR.StateVar.toString lhs, " = ", Var.toString rhs, ";\n"                                  IR.StateVar.toString lhs, " = ", Var.toString rhs, ";\n"
173                                ]);                                ]);
174                              goto (out, !succ))                              goto (out, !succ))
175                          | IR.EXIT{kind, live, succ, ...} => let                          | IR.EXIT{kind, succ, ...} => (
                             val live = (case live  
                                    of [] => "()"  
                                     | [x] => String.concat["(", Var.toString x, ")"]  
                                     | xs => String.concat[  
                                           "(",  
                                           String.concatWith "," (List.map Var.toString xs),  
                                           ")"  
                                         ]  
                                   (* end case *))  
                             in  
176                                case kind                                case kind
177                                 of ExitKind.FRAGMENT =>                               of ExitKind.RETURN => prln (out1, ["return\n"])
178                                      prln (out1, ["live vars = ", live, "\n"])                                | ExitKind.ACTIVE => prln (out1, ["active\n"])
179                                  | ExitKind.RETURN =>                                | ExitKind.STABILIZE => prln (out1, ["stabilize\n"])
180                                      prln (out1, ["return ", live, "\n"])                                | ExitKind.DIE => prln (out1, ["die\n"])
181                                  | ExitKind.ACTIVE =>                                | ExitKind.UNREACHABLE => prln (out1, ["unreachable\n"])
                                     prln (out1, ["active ", live, "\n"])  
                                 | ExitKind.STABILIZE =>  
                                     prln (out1, ["stabilize ", live, "\n"])  
                                 | ExitKind.DIE =>  
                                     prln (out1, ["die ", live, "\n"])  
                                 | ExitKind.UNREACHABLE =>  
                                     prln (out1, ["unreachable\n"])  
182                                (* end case *);                                (* end case *);
183                                case !succ                                case !succ
184                                 of SOME nd => goto (out, nd)                                 of SOME nd => goto (out, nd)
185                                  | _ => ()                                  | _ => ()
186                                (* end case *)                              (* end case *))
                             end  
187                        (* end case *))                        (* end case *))
188                  end                  end
189            in            in
# Line 253  Line 236 
236                prefix, " ", Ty.toString(GVar.ty gv), " ", GVar.uniqueName gv, "\n"                prefix, " ", Ty.toString(GVar.ty gv), " ", GVar.uniqueName gv, "\n"
237              ]))              ]))
238    
239        fun ppInput outS inp = prl (outS, ["input ", Inputs.toString inp, "\n"])
240    
241      fun output (outS, msg, prog) = let      fun output (outS, msg, prog) = let
242            val IR.Program{            val IR.Program{
243                    props, consts, inputs, globals,                    props, consts, inputs, globals,
# Line 268  Line 253 
253                ]);                ]);
254              pr (out, "## globals\n");              pr (out, "## globals\n");
255              List.app (ppGlobal "const" out1) consts;              List.app (ppGlobal "const" out1) consts;
256              List.app (ppGlobal "input" out1) inputs;              List.app (ppInput out1) inputs;
257              List.app (ppGlobal "global" out1) globals;              List.app (ppGlobal "global" out1) globals;
258              pr (out, "## input initialization\n");              pr (out, "## input initialization\n");
259              ppCFG (out1, constInit);              ppCFG (out1, constInit);

Legend:
Removed from v.3485  
changed lines
  Added in v.3506

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