summary refs log tree commit diff
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-09-08 16:16:08 -0400
committerQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-09-15 23:01:33 -0400
commit9210e17c784c54efa840c4237d9dc15e6da2227f (patch)
tree77fbd217390b31d06b616b8f8c03a4a89c691954
parent6c2d8124078d9ee016e49688286dd9bc358abf55 (diff)
downloadroux-9210e17c784c54efa840c4237d9dc15e6da2227f.tar.gz
define a new CMPS macro, shorten Type
-rw-r--r--lisc/lisc.h17
-rw-r--r--lisc/parse.c27
2 files changed, 22 insertions, 22 deletions
diff --git a/lisc/lisc.h b/lisc/lisc.h
index 1081af5..2211183 100644
--- a/lisc/lisc.h
+++ b/lisc/lisc.h
@@ -15,7 +15,7 @@ typedef struct Blk Blk;
 typedef struct Tmp Tmp;
 typedef struct Con Con;
 typedef struct Fn Fn;
-typedef struct Type Type;
+typedef struct Typ Typ;
 
 typedef enum { U, F, T } B3;
 
@@ -91,13 +91,14 @@ static inline int rtype(Ref r)
 static inline int isreg(Ref r)
 { return rtype(r) == RTmp && r.val < Tmp0; }
 
+#define CMPS(X) \
+	X(eq) X(sle) X(slt) \
+	X(sgt) X(sge) X(ne) /* mirror opposite cmps! */
+
 enum Cmp {
-	Ceq,
-	Csle,
-	Cslt,
-	Csgt, /* mirror opposite cmps! */
-	Csge,
-	Cne,
+#define C(c) C##c,
+	CMPS(C)
+#undef C
 	NCmp
 };
 
@@ -229,7 +230,7 @@ struct Fn {
 	char name[NString];
 };
 
-struct Type {
+struct Typ {
 	char name[NString];
 	int dark;
 	uint size;
diff --git a/lisc/parse.c b/lisc/parse.c
index 5da8a69..aba1e7b 100644
--- a/lisc/parse.c
+++ b/lisc/parse.c
@@ -41,11 +41,11 @@ OpDesc opdesc[NOp] = {
 	[OAlloc+1] = { "alloc8",  1, 1 },
 	[OAlloc+2] = { "alloc16", 1, 1 },
 
-	#define X(c)                        \
+#define X(c) \
 	[OCmp+C##c]  = { "c"    #c, 2, 0 }, \
-	[OXSet+C##c] = { "xset" #c, 0, 0 }
-	X(eq), X(sle), X(slt), X(sgt), X(sge), X(ne),
-	#undef X
+	[OXSet+C##c] = { "xset" #c, 0, 0 },
+	CMPS(X)
+#undef X
 };
 
 typedef enum {
@@ -565,9 +565,9 @@ parsefn()
 }
 
 static void
-parsety()
+parsetyp()
 {
-	Type *ty;
+	Typ *ty;
 	int t, n, sz, al, s, a, c, flt;
 
 	ty = alloc(sizeof *ty);
@@ -671,7 +671,7 @@ parse(FILE *f)
 			fn = parsefn();
 			break;
 		case TType:
-			parsety();
+			parsetyp();
 			break;
 		case TEOF:
 			return fn;
@@ -716,20 +716,18 @@ printfn(Fn *fn, FILE *f)
 {
 	static char *jtoa[NJmp] = {
 		[JJnz]      = "jnz",
-		[JXJc+Ceq]  = "xjeq",
-		[JXJc+Csle] = "xjsle",
-		[JXJc+Cslt] = "xjslt",
-		[JXJc+Csgt] = "xjsgt",
-		[JXJc+Csge] = "xjsge",
-		[JXJc+Cne]  = "xjne",
+	#define X(c) [JXJc+C##c] = "xj" #c,
+		CMPS(X)
+	#undef X
 	};
 	Blk *b;
 	Phi *p;
 	Ins *i;
 	uint n;
 
+	fprintf(f, "function $%s {\n", fn->name);
 	for (b=fn->start; b; b=b->link) {
-		fprintf(f, "@%s\n", b->name);
+		fprintf(f, " @%s\n", b->name);
 		for (p=b->phi; p; p=p->link) {
 			fprintf(f, "\t");
 			printref(p->to, fn, f);
@@ -784,4 +782,5 @@ printfn(Fn *fn, FILE *f)
 			break;
 		}
 	}
+	fprintf(f, "}\n");
 }