From ad5dae18f438f444c0888027f1b11d3f0970c2d1 Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Fri, 26 Feb 2016 11:38:57 -0500 Subject: move dumpts() into util, add bsequal() --- lisc/lisc.h | 6 ++++-- lisc/main.c | 12 ------------ lisc/util.c | 25 ++++++++++++++++++++++++- 3 files changed, 28 insertions(+), 15 deletions(-) (limited to 'lisc') diff --git a/lisc/lisc.h b/lisc/lisc.h index 441f2cb..0e69967 100644 --- a/lisc/lisc.h +++ b/lisc/lisc.h @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -82,7 +83,7 @@ enum { NTyp = 128, BITS = 4, - NBit = 64, + NBit = CHAR_BIT * sizeof(ulong), }; struct BSet { @@ -451,7 +452,6 @@ struct Dat { /* main.c */ extern char debug['Z'+1]; -void dumpts(Bits *, Tmp *, FILE *); /* util.c */ extern Typ typ[NTyp]; @@ -472,6 +472,7 @@ int phicls(int, Tmp *); Ref newtmp(char *, Fn *); Ref getcon(int64_t, Fn *); void addcon(Con *, Con *); +void dumpts(BSet *, Tmp *, FILE *); void bsinit(BSet *, uint); void bszero(BSet *); @@ -483,6 +484,7 @@ void bscopy(BSet *, BSet *); void bsunion(BSet *, BSet *); void bsinter(BSet *, BSet *); void bsdiff(BSet *, BSet *); +int bsequal(BSet *, BSet *); int bsiter(BSet *, uint *); /* parse.c */ diff --git a/lisc/main.c b/lisc/main.c index af02d2e..9595fe1 100644 --- a/lisc/main.c +++ b/lisc/main.c @@ -15,18 +15,6 @@ char debug['Z'+1] = { static int dbg; -void -dumpts(Bits *b, Tmp *tmp, FILE *f) -{ - int t; - - fprintf(f, "["); - for (t=Tmp0; tnt == b->nt); + for (i=0; int; i++) + if (a->t[i] != b->t[i]) + return 0; + return 1; +} + void bszero(BSet *bs) { bsdiff(bs, bs); } -/* Iterates on a bitset, use as follows. +/* iterates on a bitset, use as follows * * for (i=0; bsiter(set, &i); i++) * use(i); @@ -326,3 +338,14 @@ bsiter(BSet *bs, uint *elt) } return 0; } + +void +dumpts(BSet *bs, Tmp *tmp, FILE *f) +{ + uint t; + + fprintf(f, "["); + for (t=Tmp0; bsiter(bs, &t); t++) + fprintf(f, " %s", tmp[t].name); + fprintf(f, " ]\n"); +} -- cgit 1.4.1