From f0db604d42595101d32240cb445272dd400a9716 Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Thu, 27 Nov 2014 15:07:54 +0800 Subject: get def use --- src/spiglet/spiglet2kanga/SpgStmt.java | 44 ++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'src/spiglet/spiglet2kanga/SpgStmt.java') diff --git a/src/spiglet/spiglet2kanga/SpgStmt.java b/src/spiglet/spiglet2kanga/SpgStmt.java index d5921b9..4f2ffb2 100644 --- a/src/spiglet/spiglet2kanga/SpgStmt.java +++ b/src/spiglet/spiglet2kanga/SpgStmt.java @@ -1,5 +1,7 @@ package spiglet.spiglet2kanga; +import java.util.HashSet; + public class SpgStmt extends SpgSym{ public enum StmtType { NOOP, ERROR, CJUMP, JUMP, STORE, LOAD, MOVE, PRINT }; StmtType type; @@ -11,6 +13,8 @@ public class SpgStmt extends SpgSym{ public String lb; public SpgStmt succ1, succ2; + public HashSet def, use; + public SpgStmt(StmtType t) { type = t; } @@ -39,4 +43,44 @@ public class SpgStmt extends SpgSym{ return null; } } + + public void getDefUse() { + switch (type) { + case CJUMP: + def = null; + use = tmp1.getTmpUsed(); + break; + case ERROR: + def = use = null; + break; + case JUMP: + def = use = null; + break; + case LOAD: + def = tmp1.getTmpUsed(); + use = tmp2.getTmpUsed(); + break; + case MOVE: + def = tmp1.getTmpUsed(); + use = exp.getTmpUsed(); + break; + case NOOP: + def = use = null; + break; + case PRINT: + def = null; + use = exp.getTmpUsed(); + break; + case STORE: + def = null; + use = tmp1.getTmpUsed(); + use.add(tmp2); + break; + default: + System.err.println("Unknown statement type"); + def = use = null; + break; + + } + } } -- cgit v1.2.3