summaryrefslogtreecommitdiff
path: root/src/spiglet/spiglet2kanga/SpgStmt.java
diff options
context:
space:
mode:
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;
+
+ }
+ }
}