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

Diff of /branches/vis15/src/compiler/cfg-ir/value-numbering-fn.sml

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

revision 3592, Fri Jan 15 22:37:34 2016 UTC revision 3593, Fri Jan 15 22:38:17 2016 UTC
# Line 60  Line 60 
60      val setVN = setVN      val setVN = setVN
61      fun varToExp x = getExp(getVN x)      fun varToExp x = getExp(getVN x)
62      fun bindVarToExp (ENV{avail}, x, e) = (      fun bindVarToExp (ENV{avail}, x, e) = (
63  (*DEBUG**Log.msg(concat["** bindVarToExp: ", IR.Var.toString x, " --> ", E.toString e, "\n"]);*)  (*DEBUG**)Log.msg(concat["** bindVarToExp: ", IR.Var.toString x, " --> ", E.toString e, "\n"]);(**)
64            setVN(x, x); setExp(x, e);            setVN(x, x); setExp(x, e);
65            ENV{avail = ValueMap.insert(avail, e, x)})            ENV{avail = ValueMap.insert(avail, e, x)})
66      fun expToVN (ENV{avail}, e) = ValueMap.find(avail, e)      fun expToVN (ENV{avail}, e) = ValueMap.find(avail, e)
# Line 71  Line 71 
71              if IR.Var.same(x, x')              if IR.Var.same(x, x')
72                then x                then x
73                else (                else (
74  (*DEBUG**Log.msg(concat["** rename ", IR.Var.toString x, " to ", IR.Var.toString x', "\n"]);*)  (*DEBUG**)Log.msg(concat["** rename ", IR.Var.toString x, " to ", IR.Var.toString x', "\n"]);(**)
75                  decUse x; incUse x';                  decUse x; incUse x';
76                  x')                  x')
77            end            end
# Line 214  Line 214 
214                              in                              in
215                                case expToVN(env, exp)                                case expToVN(env, exp)
216                                 of SOME vn => ((* y is redundant, so map it to vn *)                                 of SOME vn => ((* y is redundant, so map it to vn *)
217  (* DEBUG ** Log.msg(concat["** redundant assignment: ", IR.assignToString (y, rhs), *)  (* DEBUG *) Log.msg(concat["** redundant assignment: ", IR.assignToString (y, rhs), (* *)
218  (* DEBUG **"; VN[", IR.Var.toString y, "] = ", IR.Var.toString vn, "\n"]); *)  (* DEBUG *)"; VN[", IR.Var.toString y, "] = ", IR.Var.toString vn, "\n"]); (* *)
219                                      ST.tick cntRedundantAssign;                                      ST.tick cntRedundantAssign;
220    if (ST.count cntRedundantAssign > 50) then raise Fail "too many redundant assignments" else ();
221                                      setVN(y, vn);                                      setVN(y, vn);
222                                      env)                                      env)
223                                  | NONE => bindVarToExp(env, y, exp)                                  | NONE => bindVarToExp(env, y, exp)

Legend:
Removed from v.3592  
changed lines
  Added in v.3593

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