commit ad5dae18f438f444c0888027f1b11d3f0970c2d1
parent 987b3def3394583321fee4543df9db76b9299bc6
Author: Quentin Carbonneaux <quentin.carbonneaux@yale.edu>
Date: Fri, 26 Feb 2016 11:38:57 -0500
move dumpts() into util, add bsequal()
Diffstat:
3 files changed, 28 insertions(+), 15 deletions(-)
diff --git a/lisc/lisc.h b/lisc/lisc.h
@@ -1,5 +1,6 @@
#include <assert.h>
#include <inttypes.h>
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -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
@@ -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; t<BITS*NBit; t++)
- if (BGET(*b, t))
- fprintf(f, " %s", tmp[t].name);
- fprintf(f, " ]\n");
-}
-
static void
data(Dat *d)
{
diff --git a/lisc/util.c b/lisc/util.c
@@ -299,13 +299,25 @@ BSOP(bsunion, |=)
BSOP(bsinter, &=)
BSOP(bsdiff, &= ~)
+int
+bsequal(BSet *a, BSet *b)
+{
+ uint i;
+
+ assert(a->nt == b->nt);
+ for (i=0; i<a->nt; 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");
+}