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/translate-fn.sml
ViewVC logotype

Diff of /branches/vis12-cl/src/compiler/IL/translate-fn.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 82  Line 82 
82                                  DstNd.addEdge (nd, trans (!succ));                                  DstNd.addEdge (nd, trans (!succ));
83                                  nd                                  nd
84                                end                                end
85                            | SrcIL.JOIN{phis, succ, ...} => let                            | SrcIL.JOIN{phis, succ, mask=ref flgs, ...} => let
86                                fun cvtPhi (x, xs) = let                                fun cvtPhi (x, xs) = let
87                                      val x = rename env x                                      val x = rename env x
88                                      val xs = List.map (rename env) xs                                      val xs = List.map (Option.map (rename env)) xs
89                                      in                                      in
90                                        DstIL.Var.setBinding (x, DstIL.VB_PHI xs);                                        DstIL.Var.setBinding (x, DstIL.VB_PHI xs);
91                                        (x, xs)                                        (x, xs)
92                                      end                                      end
93                                val nd = newNd (DstNd.mkJOIN(List.map cvtPhi (!phis)))                                val nd = newNd (DstNd.mkJOIN(List.map cvtPhi (!phis)))
94                                  val DstIL.JOIN{mask, ...} = DstIL.Node.kind nd
95                                in                                in
96                                    mask := flgs;
97                                  DstNd.addEdge (nd, trans (!succ));                                  DstNd.addEdge (nd, trans (!succ));
98                                  nd                                  nd
99                                end                                end
# Line 153  Line 155 
155                                  DstNd.addEdge (nd, trans (!succ));                                  DstNd.addEdge (nd, trans (!succ));
156                                  nd                                  nd
157                                end                                end
158                            | SrcIL.EXIT{kind, live, ...} =>                            | SrcIL.EXIT{kind, live, succ, ...} => let
159                                newNd (DstNd.mkEXIT(kind, List.map (rename env) live))                                val nd = newNd (DstNd.mkEXIT(kind, List.map (rename env) live))
160                                  in
161                                    case !succ
162                                     of NONE => ()
163                                      | SOME nd' => let (* add fake control-flow edges *)
164                                          val nd' = trans nd'
165                                          val DstIL.EXIT{succ, ...} = DstIL.Node.kind nd
166                                          in
167                                            succ := SOME nd';
168                                            DstNd.addEdge (nd, nd')
169                                          end
170                                    (* end case *);
171                                    nd
172                                  end
173                         (* end case *))                         (* end case *))
174                    (* end case *)                    (* end case *)
175                  end                  end

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