From 640f958d2640ced827111de2ce37b97674ece82b Mon Sep 17 00:00:00 2001 From: ceriel Date: Mon, 26 Jan 1987 16:16:12 +0000 Subject: [PATCH] Improved "element size" handling. --- util/ncgg/set.c | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/util/ncgg/set.c b/util/ncgg/set.c index 6234ac0eb..b0d709f65 100644 --- a/util/ncgg/set.c +++ b/util/ncgg/set.c @@ -7,6 +7,7 @@ static char rcsid[]= "$Header$"; #include "set.h" #include "token.h" #include "lookup.h" +#include "reg.h" #include #include "extern.h" @@ -80,14 +81,39 @@ set_t ident_to_set(name) char *name; { return(result); } +static +checksize(s) + register set_p s; +{ + register int i; + register int size = -1; + + s->set_size = 0; + for (i = 1; i <= nregs; i++) { + if (BIT(s->set_val, i)) { + register int sz = l_regs[i].ri_size; + + if (size == -1) size = sz; + else if (size != sz) return; + } + } + for (i = 1; i <= ntokens; i++) { + if (BIT(s->set_val, i+nregs)) { + register int sz = l_tokens[i]->tk_size; + if (size == -1) size = sz; + else if (size != sz) return; + } + } + if (size != -1) s->set_size = size; +} + set_t setproduct(s1,s2) set_t s1,s2; { set_t result; register i; - if ((result.set_size=s1.set_size)==0) - result.set_size = s2.set_size; for(i=0;i