From 9210e17c784c54efa840c4237d9dc15e6da2227f Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Tue, 8 Sep 2015 16:16:08 -0400 Subject: define a new CMPS macro, shorten Type --- lisc/lisc.h | 17 +++++++++-------- lisc/parse.c | 27 +++++++++++++-------------- 2 files changed, 22 insertions(+), 22 deletions(-) (limited to 'lisc') 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"); } -- cgit 1.4.1