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

SCM Repository

[diderot] Diff of /trunk/src/compiler/IL/forward-dfa-fn.sml
ViewVC logotype

Diff of /trunk/src/compiler/IL/forward-dfa-fn.sml

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

revision 416, Sun Oct 17 00:32:07 2010 UTC revision 417, Sun Oct 17 00:32:30 2010 UTC
# Line 8  Line 8 
8    
9  functor ForwardDFAFn (D : DOMAIN) :> sig  functor ForwardDFAFn (D : DOMAIN) :> sig
10    
11      structure D : DOMAIN      structure D : DOMAIN = D
12    
13    (* given the entry value and root statement, do the forward DFA on the CFG and    (* given the entry value and root statement, do the forward DFA on the CFG and
14     * return the list of nodes analysed.     * return the list of nodes analysed.
# Line 44  Line 44 
44                  val anyChange = ref false                  val anyChange = ref false
45                  fun doNode nd = let                  fun doNode nd = let
46                        val inValue = D.join (List.map getOut (IL.Node.preds nd))                        val inValue = D.join (List.map getOut (IL.Node.preds nd))
                       val outValue = D.transfer (inValue, nd)  
47                        in                        in
48                          if D.same(getIn nd, inValue)                          if D.same(getIn nd, inValue)
49                            then () (* input unchanged, so output will be unchanged *)                            then () (* input unchanged, so output will be unchanged *)
# Line 54  Line 53 
53                                anyChange := true;                                anyChange := true;
54                                setIn (nd, inValue);                                setIn (nd, inValue);
55                                if D.same(getOut nd, outValue)                                if D.same(getOut nd, outValue)
56                                  then setOut(nd, outValue)                                  then ()
57                                  else ()                                  else setOut(nd, outValue)
58                              end                              end
59                        end                        end
60                  in                  in

Legend:
Removed from v.416  
changed lines
  Added in v.417

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