summaryrefslogtreecommitdiff
path: root/src/spiglet/spiglet2kanga/SpgStmt.java
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2014-11-27 15:07:54 +0800
committerIru Cai <mytbk920423@gmail.com>2014-11-27 15:07:54 +0800
commitf0db604d42595101d32240cb445272dd400a9716 (patch)
treefe69c137b9d59b2f00a91187dad1183fd4fd82db /src/spiglet/spiglet2kanga/SpgStmt.java
parent13d99117abb64f97b5636029134ccae8acb89f59 (diff)
downloadminijava-f0db604d42595101d32240cb445272dd400a9716.tar.xz
get def use
Diffstat (limited to 'src/spiglet/spiglet2kanga/SpgStmt.java')
-rw-r--r--src/spiglet/spiglet2kanga/SpgStmt.java44
1 files changed, 44 insertions, 0 deletions
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<SpgTemp> 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;
+
+ }
+ }
}