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

SCM Repository

[diderot] Diff of /branches/pure-cfg/src/compiler/IL/value-numbering-fn.sml
ViewVC logotype

Diff of /branches/pure-cfg/src/compiler/IL/value-numbering-fn.sml

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

revision 1156, Sun May 8 21:20:52 2011 UTC revision 1157, Mon May 9 15:47:35 2011 UTC
# Line 44  Line 44 
44    
45      (* property for mapping value numbers to hash-consed expressions. *)      (* property for mapping value numbers to hash-consed expressions. *)
46        val {getFn=getExp : IL.var -> expr, setFn=setExp, clrFn=clrExp, ...} =        val {getFn=getExp : IL.var -> expr, setFn=setExp, clrFn=clrExp, ...} =
47              IL.Var.newProp (fn x => raise Fail "getExp")              IL.Var.newProp (fn x => raise Fail(concat["getExp(", IL.Var.toString x, ")"]))
48    
49        datatype env = ENV of {        datatype env = ENV of {
50            avail : IL.var ValueMap.map   (* map from expressions to their value numbers, which *)            avail : IL.var ValueMap.map   (* map from expressions to their value numbers, which *)
# Line 68  Line 68 
68              if IL.Var.same(x, x')              if IL.Var.same(x, x')
69                then x                then x
70                else (                else (
71  (*DEBUG*)Log.msg(concat["** rename ", IL.Var.toString x, " to ", IL.Var.toString x', "\n"]);  (*DEBUG Log.msg(concat["** rename ", IL.Var.toString x, " to ", IL.Var.toString x', "\n"]);*)
72                  decUse x; incUse x';                  decUse x; incUse x';
73                  x')                  x')
74            end            end
# Line 159  Line 159 
159                                    in                                    in
160                                      if List.all (fn vn' => IL.Var.same(vn, vn')) vns                                      if List.all (fn vn' => IL.Var.same(vn, vn')) vns
161                                        then ((* a meaningless phi node; map y to vn *)                                        then ((* a meaningless phi node; map y to vn *)
162  (* DEBUG *)Log.msg(concat["** meaningless phi node: ", IL.phiToString (y, xs), "\n"]);  (* DEBUG Log.msg(concat["** meaningless phi node: ", IL.phiToString (y, xs), "\n"]);*)
163                                          ST.tick cntMeaninglessPhi;                                          ST.tick cntMeaninglessPhi;
164                                          List.map decUse xs;                                          List.map decUse xs;
165                                          setVN(y, vn);                                          setVN(y, vn);
# Line 169  Line 169 
169                                          in                                          in
170                                            case expToVN(env, exp)                                            case expToVN(env, exp)
171                                             of SOME vn' => ((* a redundant phi node *)                                             of SOME vn' => ((* a redundant phi node *)
172  (* DEBUG *)Log.msg(concat["** redundant phi node: ", IL.phiToString (y, xs), "\n"]);  (* DEBUG Log.msg(concat["** redundant phi node: ", IL.phiToString (y, xs), "\n"]);*)
173                                                  ST.tick cntRedundantPhi;                                                  ST.tick cntRedundantPhi;
174                                                  List.map decUse xs;                                                  List.map decUse xs;
175                                                  setVN(y, vn');                                                  setVN(y, vn');
# Line 192  Line 192 
192                              in                              in
193                                case expToVN(env, exp)                                case expToVN(env, exp)
194                                 of SOME vn => ((* y is redundant, so map it to vn *)                                 of SOME vn => ((* y is redundant, so map it to vn *)
195  (* DEBUG *)Log.msg(concat["** redundant assignment: ", IL.assignToString (y, rhs),  (* DEBUG Log.msg(concat["** redundant assignment: ", IL.assignToString (y, rhs),*)
196  "; VN[", IL.Var.toString y, "] = ", IL.Var.toString vn, "\n"]);  (* DEBUG "; VN[", IL.Var.toString y, "] = ", IL.Var.toString vn, "\n"]);*)
197                                      ST.tick cntRedundantAssign;                                      ST.tick cntRedundantAssign;
198                                      setVN(y, vn);                                      setVN(y, vn);
199                                      env)                                      env)

Legend:
Removed from v.1156  
changed lines
  Added in v.1157

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