summary refs log tree commit diff
path: root/lisc/main.c
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-07-28 22:40:50 -0400
committerQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-09-15 23:01:29 -0400
commitfd964388f76443a46f6f091c2aa64cb4e62341e6 (patch)
treeca7a1d63b85d22d53dc62e60032f95885a0aab27 /lisc/main.c
parent5f14d7fd7c514a9d6c34803407c579bc17438ef0 (diff)
downloadroux-fd964388f76443a46f6f091c2aa64cb4e62341e6.tar.gz
add a code emitter for at&t syntax
Diffstat (limited to 'lisc/main.c')
-rw-r--r--lisc/main.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/lisc/main.c b/lisc/main.c
index d3688ad..81bbb72 100644
--- a/lisc/main.c
+++ b/lisc/main.c
@@ -113,6 +113,28 @@ main(int ac, char *av[])
 		goto RPODump;
 		break;
 	}
+	case 'e': {
+		int n;
+
+		fprintf(stderr, "[Testing Code Emission]\n");
+		fillrpo(fn);
+		fillpreds(fn);
+		filllive(fn);
+		fillcost(fn);
+		spill(fn);
+		rega(fn);
+		fillrpo(fn);
+		assert(fn->rpo[0] == fn->start);
+		for (n=0;; n++)
+			if (n == fn->nblk-1) {
+				fn->rpo[n]->link = 0;
+				break;
+			} else
+				fn->rpo[n]->link = fn->rpo[n+1];
+		emitfn(fn, stdout);
+		pr = 0;
+		break;
+	}
 	default:
 		break;
 	}