diff options
Diffstat (limited to 'cfg/ControlFlowGraph.java')
-rw-r--r-- | cfg/ControlFlowGraph.java | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/cfg/ControlFlowGraph.java b/cfg/ControlFlowGraph.java index c3943a0..49cd2fc 100644 --- a/cfg/ControlFlowGraph.java +++ b/cfg/ControlFlowGraph.java @@ -80,6 +80,14 @@ public class ControlFlowGraph { source.addDest(dest); dest.addSource(source); + for (String var : source.getReaching()) { + dest.reaching.add(var); + } + for (String var : dest.getLiveness()) { + if (!source.getDefinitions().contains(var)) + source.liveness.add(var); + } + ret += ";"; } else { MinimalLogger.info(String.format("Skipping duplicate edge for %s", @@ -89,22 +97,19 @@ public class ControlFlowGraph { return ret; } - public void addReaching(CFGNode n, String s) { - MinimalLogger.info(String.format("Def \"%s\" at %s", - s, - n.toString())); + public void addDefinition(CFGNode n, String s) { + n.defs.add(s); n.reaching.add(s); } - public void addLiveness(CFGNode n, String s) { + public void addReference(CFGNode n, String s) { if (this.isKnownVar(s)) { - MinimalLogger.info(String.format("Use \"%s\" at %s", + MinimalLogger.info(String.format("\"%s\" referenced at %s", s, n.toString())); + n.reaching.add(s); n.liveness.add(s); - } else - MinimalLogger.info(String.format("Use \"%s\" not a known variable!", - s)); + } } public ArrayList<CFGNode> getNodes() { |