scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

commit ad5bd51963863fe5a3c3ad58a1ae42d578aa8980
parent c825c03e6f3b1e3a757a47c75d77ce57ebb1624d
Author: Roberto E. Vargas Caballero <k0ga@shike2.net>
Date:   Tue, 18 Nov 2025 14:01:45 +0100

include: Remove T* types

These types didn't work very well, and at some point we stopped
using them. Removing them makes the code more straigh forward
and avoids some stupid casts in printf alike function calls.

Diffstat:
DBUGS | 1-
Minclude/scc/bits/scc/scc.h | 9---------
Msrc/cmd/scc-as/as.h | 8++++----
Msrc/cmd/scc-as/expr.c | 4++--
Msrc/cmd/scc-as/ins.c | 6+++---
Msrc/cmd/scc-as/parser.c | 4++--
Msrc/cmd/scc-as/ppc/arch_ppc.c | 2+-
Msrc/cmd/scc-as/ppc/arch_ppc64.c | 2+-
Msrc/cmd/scc-as/symbol.c | 4++--
Msrc/cmd/scc-as/x80/arch_z80.c | 2+-
Msrc/cmd/scc-as/x86/arch_amd64.c | 2+-
Msrc/cmd/scc-as/x86/arch_i286.c | 2+-
Msrc/cmd/scc-as/x86/arch_i386.c | 2+-
Msrc/cmd/scc-cc/cc1/cc1.h | 22+++++++++++-----------
Msrc/cmd/scc-cc/cc1/code.c | 18+++++++++---------
Msrc/cmd/scc-cc/cc1/decl.c | 10+++++-----
Msrc/cmd/scc-cc/cc1/expr.c | 6+++---
Msrc/cmd/scc-cc/cc1/fold.c | 58+++++++++++++++++++++++++++++-----------------------------
Msrc/cmd/scc-cc/cc1/init.c | 14+++++++-------
Msrc/cmd/scc-cc/cc1/lex.c | 2+-
Msrc/cmd/scc-cc/cc1/types.c | 12++++++------
Msrc/cmd/scc-cc/cc2/cc2.h | 10+++++-----
Msrc/cmd/scc-cc/cc2/code.c | 2+-
Msrc/cmd/scc-cc/cc2/parser.c | 10+++++-----
Msrc/cmd/scc-cc/cc2/qbe/cgen.c | 4++--
Msrc/cmd/scc-cc/cc2/swtch.c | 6+++---
26 files changed, 106 insertions(+), 116 deletions(-)

diff --git a/BUGS b/BUGS @@ -1 +0,0 @@ -scc: Remove TINT and TUINT diff --git a/include/scc/bits/scc/scc.h b/include/scc/bits/scc/scc.h @@ -10,15 +10,6 @@ extern int enadebug; #define DBGON() #endif -#define TINT long long -#define TUINT unsigned long long -#define TUINT_MAX ULLONG_MAX -#define TINT_MAX LLONG_MAX -#define TUINT_MIN ULLONG_MIN -#define TINT_MIN LLONG_MIN -#define TFLOAT double -#define SIZET size_t - struct items { char **s; unsigned n; diff --git a/src/cmd/scc-as/as.h b/src/cmd/scc-as/as.h @@ -93,7 +93,7 @@ struct node { }; union yylval { - TUINT val; + unsigned long long val; Symbol *sym; }; @@ -102,7 +102,7 @@ extern void cleansecs(void); extern void ibinfmt(void); extern void emit(char *, int); extern Section *defsec(char *, char *); -extern Symbol *tmpsym(TUINT); +extern Symbol *tmpsym(unsigned long long); extern void killtmp(void); extern int toobig(Node *, int); extern void dumpstab(char *); @@ -139,7 +139,7 @@ extern int match(Op *, Node **); extern Node *moperand(void); /* ins.c */ -extern char *tobytes(TUINT, int, int); +extern char *tobytes(unsigned long long, int, int); /* binfmt.c */ extern void writeout(char *); @@ -153,7 +153,7 @@ extern Section *cursec; extern Ins instab[]; extern Op optab[]; extern int pass; -extern TUINT maxaddr; +extern unsigned long long maxaddr; extern int endian; extern Symbol *linesym; extern char *infile, *outfile; diff --git a/src/cmd/scc-as/expr.c b/src/cmd/scc-as/expr.c @@ -52,7 +52,7 @@ static Node * fold(int op, Node *l, Node *r) { Node *np; - TUINT val, lv, rv; + unsigned long long val, lv, rv; if (!constant(l) || !constant(r)) return NULL; @@ -143,7 +143,7 @@ binary(int op, Node *l, Node *r) static Node * unaryop(int op, Node *np) { - TUINT val; + unsigned long long val; if (np->addr != ANUMBER) error("invalid argument for unary operator"); diff --git a/src/cmd/scc-as/ins.c b/src/cmd/scc-as/ins.c @@ -26,9 +26,9 @@ reloc(Symbol *sym, } char * -tobytes(TUINT v, int nbytes, int inc) +tobytes(unsigned long long v, int nbytes, int inc) { - static char buf[sizeof(TUINT)]; + static char buf[sizeof(unsigned long long)]; int idx; idx = (inc < 0) ? nbytes-1 : 0; @@ -230,7 +230,7 @@ void align(Op *op, Node **args) { Symbol *sym = args[0]->sym; - TUINT pcal, pc, al; + unsigned long long pcal, pc, al; if ((sym->flags & FABS) == 0) error("align expression is not an absolute expression"); diff --git a/src/cmd/scc-as/parser.c b/src/cmd/scc-as/parser.c @@ -92,7 +92,7 @@ number(void) { int c, base = 10; char *p; - TUINT n; + unsigned long long n; static char digits[] = "0123456789ABCDEF"; if (*endp == '0') { @@ -108,7 +108,7 @@ number(void) c = p - digits; if (c > base) error("invalid digit in number"); - if (n >= TUINT_MAX/base - c) + if (n >= ULLONG_MAX/base - c) error("overflow in number"); n *= base; endp++; diff --git a/src/cmd/scc-as/ppc/arch_ppc.c b/src/cmd/scc-as/ppc/arch_ppc.c @@ -6,7 +6,7 @@ #include "../as.h" #include "proc.h" -TUINT maxaddr = 0xFFFF; +unsigned long long maxaddr = 0xFFFF; int endian = BIG_ENDIAN; int left2right = 0; diff --git a/src/cmd/scc-as/ppc/arch_ppc64.c b/src/cmd/scc-as/ppc/arch_ppc64.c @@ -6,7 +6,7 @@ #include "../as.h" #include "proc.h" -TUINT maxaddr = 0xFFFF; +unsigned long long maxaddr = 0xFFFF; int endian = BIG_ENDIAN; int left2right = 0; diff --git a/src/cmd/scc-as/symbol.c b/src/cmd/scc-as/symbol.c @@ -203,7 +203,7 @@ incpc(int nbytes) { struct lsection *lsec; unsigned long long siz; - TUINT pc, curpc; + unsigned long long pc, curpc; lsec = (struct lsection *) cursec; @@ -427,7 +427,7 @@ emit(char *bytes, int n) } Symbol * -tmpsym(TUINT val) +tmpsym(unsigned long long val) { Symbol *sym; diff --git a/src/cmd/scc-as/x80/arch_z80.c b/src/cmd/scc-as/x80/arch_z80.c @@ -6,7 +6,7 @@ #include "../as.h" #include "../x80/proc.h" -TUINT maxaddr = 0xFFFFFFFF; +unsigned long long maxaddr = 0xFFFFFFFF; int endian = LITTLE_ENDIAN; void diff --git a/src/cmd/scc-as/x86/arch_amd64.c b/src/cmd/scc-as/x86/arch_amd64.c @@ -3,7 +3,7 @@ #include "../as.h" -TUINT maxaddr = 0xFFFFFFFFFFFFFFFF; +unsigned long long maxaddr = 0xFFFFFFFFFFFFFFFF; int endian = LITTLE_ENDIAN; void diff --git a/src/cmd/scc-as/x86/arch_i286.c b/src/cmd/scc-as/x86/arch_i286.c @@ -4,7 +4,7 @@ #include "../as.h" #include "../x86/proc.h" -TUINT maxaddr = 0xFFFF; +unsigned long long maxaddr = 0xFFFF; int endian = LITTLE_ENDIAN; int left2right = 0; diff --git a/src/cmd/scc-as/x86/arch_i386.c b/src/cmd/scc-as/x86/arch_i386.c @@ -4,7 +4,7 @@ #include "../as.h" #include "../x86/proc.h" -TUINT maxaddr = 0xFFFFFFFF; +unsigned long long maxaddr = 0xFFFFFFFF; int endian = LITTLE_ENDIAN; void diff --git a/src/cmd/scc-cc/cc1/cc1.h b/src/cmd/scc-cc/cc1/cc1.h @@ -296,12 +296,12 @@ typedef uint32_t Rune; struct limits { union { - TUINT i; - TFLOAT f; + unsigned long long i; + double f; } max; union { - TUINT i; - TFLOAT f; + unsigned long long i; + double f; } min; }; @@ -326,7 +326,7 @@ struct type { } p; union { unsigned char rank; /* convertion rank */ - TINT elem; /* number of type parameters */ + long long elem; /* number of type parameters */ } n; Type *next; /* local list pointer */ Type *h_next; /* hash collision list */ @@ -342,9 +342,9 @@ struct symbol { Type *type; unsigned char token; union { - TINT i; - TUINT u; - TFLOAT f; + long long i; + unsigned long long u; + double f; char *s; unsigned char token; Node **init; @@ -439,7 +439,7 @@ extern Type *deftype(Type *tp); /* types.c */ extern int eqtype(Type *tp1, Type *tp2, int eqflag); extern Type *ctype(int type, int sign, int size); -extern Type *mktype(Type *tp, int op, TINT nelem, Type *data[]); +extern Type *mktype(Type *tp, int op, long long nelem, Type *data[]); extern Type *duptype(Type *base); extern struct limits *getlimits(Type *tp); extern void typesize(Type *tp); @@ -491,7 +491,7 @@ extern void icode(void); /* fold.c */ extern Node *simplify(Node *np); -extern TUINT ones(int nbytes); +extern unsigned long long ones(int nbytes); /* expr.c */ extern Node *decay(Node *), *negate(Node *np), *assign(void); @@ -499,7 +499,7 @@ extern Node *convert(Node *np, Type *tp1, int iscast); extern Node *constexpr(void), *condexpr(int neg), *expr(void); extern int isnodecmp(int op); extern int negop(int op); -extern int cmpnode(Node *np, TUINT val); +extern int cmpnode(Node *np, unsigned long long val); extern int power2node(Node *, int *); /* init.c */ diff --git a/src/cmd/scc-cc/cc1/code.c b/src/cmd/scc-cc/cc1/code.c @@ -217,17 +217,17 @@ emitconst(Node *np) { Symbol *sym = np->sym; Type *tp = np->type; - TUINT u; + unsigned long long u; switch (tp->op) { case PTR: case INT: case ENUM: - u = (tp->prop & TSIGNED) ? (TUINT) sym->u.i : sym->u.u; + u = (tp->prop & TSIGNED) ? sym->u.i : sym->u.u; fprintf(outfp, "#%c%llX", np->type->letter, - (long long) u & ones(tp->size)); + u & ones(tp->size)); break; default: abort(); @@ -269,7 +269,7 @@ emitletter(Type *tp) static void emittype(int op, void *arg) { - TINT n; + long long n; Symbol **sp; char *tag; Type *tp = arg; @@ -343,10 +343,10 @@ zeronode(Type *tp) } static int -emitpadding(Type *tp, SIZET *addr) +emitpadding(Type *tp, unsigned long long *addr) { - SIZET n; int i; + unsigned long long n; n = *addr & tp->align-1; for (i = 0; i < n; i++) @@ -357,10 +357,10 @@ emitpadding(Type *tp, SIZET *addr) } static void -emitdesig(Node *np, Type *tp, SIZET *addr) +emitdesig(Node *np, Type *tp, unsigned long long *addr) { Symbol *sym; - SIZET n; + unsigned long long n; Node *aux; Type *p; @@ -424,7 +424,7 @@ static void emitinit(int op, void *arg) { Node *np = arg; - SIZET addr = 0; + unsigned long long addr = 0; fputs("\t(\n", outfp); emitdesig(np, np->type, &addr); diff --git a/src/cmd/scc-cc/cc1/decl.c b/src/cmd/scc-cc/cc1/decl.c @@ -26,7 +26,7 @@ struct declarators { Symbol **pars; struct declarator { unsigned char op; - TINT nelem; + long long nelem; Symbol *sym; Type **tpars; Symbol **pars; @@ -82,7 +82,7 @@ push(struct declarators *dp, int op, ...) switch (op) { case ARY: - p->nelem = va_arg(va, TINT); + p->nelem = va_arg(va, long long); break; case KRFTN: case FTN: @@ -130,7 +130,7 @@ static void arydcl(struct declarators *dp) { Node *np = NULL; - TINT n = 0; + long long n = 0; int ns; ns = namespace; @@ -899,11 +899,11 @@ field(struct decl *dcl) Symbol *sym = dcl->sym; char *name = (sym->name) ? sym->name : anon; Type *structp = dcl->parent, *tp = dcl->type; - TINT n = structp->n.elem; + long long n = structp->n.elem; if (accept(':')) { Node *np; - TINT n; + long long n; if ((np = constexpr()) == NULL) { unexpected(); diff --git a/src/cmd/scc-cc/cc1/expr.c b/src/cmd/scc-cc/cc1/expr.c @@ -12,7 +12,7 @@ int power2node(Node *np, int *log) { int n; - TUINT u; + unsigned long long u; Symbol *sym; if (!np || !(np->flags & NCONST) || !np->sym) @@ -35,11 +35,11 @@ power2node(Node *np, int *log) } int -cmpnode(Node *np, TUINT val) +cmpnode(Node *np, unsigned long long val) { Symbol *sym; Type *tp; - TUINT mask, nodeval; + unsigned long long mask, nodeval; if (!np || !(np->flags & NCONST) || !np->sym) return 0; diff --git a/src/cmd/scc-cc/cc1/fold.c b/src/cmd/scc-cc/cc1/fold.c @@ -5,17 +5,17 @@ #include "cc1.h" -TUINT +unsigned long long ones(int nbytes) { return (nbytes == 8) ? -1 : ~(-1ull << nbytes * 8); } static int -addi(TINT l, TINT r, Type *tp) +addi(long long l, long long r, Type *tp) { struct limits *lim = getlimits(tp); - TINT max = lim->max.i, min = lim->min.i; + long long max = lim->max.i, min = lim->min.i; if (l < 0 && r < 0 && l >= min - r || l == 0 || @@ -30,10 +30,10 @@ addi(TINT l, TINT r, Type *tp) } static int -addf(TFLOAT l, TFLOAT r, Type *tp) +addf(double l, double r, Type *tp) { struct limits *lim = getlimits(tp); - TFLOAT max = lim->max.f, min = lim->min.f; + double max = lim->max.f, min = lim->min.f; if (l < 0 && r < 0 && l >= min - r || l == 0 || @@ -48,22 +48,22 @@ addf(TFLOAT l, TFLOAT r, Type *tp) } static int -subi(TINT l, TINT r, Type *tp) +subi(long long l, long long r, Type *tp) { return addi(l, -r, tp); } static int -subf(TFLOAT l, TFLOAT r, Type *tp) +subf(double l, double r, Type *tp) { return addf(l, -r, tp); } static int -muli(TINT l, TINT r, Type *tp) +muli(long long l, long long r, Type *tp) { struct limits *lim = getlimits(tp); - TINT max = lim->max.i, min = lim->min.i; + long long max = lim->max.i, min = lim->min.i; if (l > -1 && l <= 1 || r > -1 && r <= 1 || @@ -78,10 +78,10 @@ muli(TINT l, TINT r, Type *tp) } static int -mulf(TFLOAT l, TFLOAT r, Type *tp) +mulf(double l, double r, Type *tp) { struct limits *lim = getlimits(tp); - TFLOAT max = lim->max.f, min = lim->min.f; + double max = lim->max.f, min = lim->min.f; if (l > -1 && l <= 1 || r > -1 && r <= 1 || @@ -96,7 +96,7 @@ mulf(TFLOAT l, TFLOAT r, Type *tp) } static int -divi(TINT l, TINT r, Type *tp) +divi(long long l, long long r, Type *tp) { struct limits *lim = getlimits(tp); @@ -108,7 +108,7 @@ divi(TINT l, TINT r, Type *tp) } static int -divf(TFLOAT l, TFLOAT r, Type *tp) +divf(double l, double r, Type *tp) { struct limits *lim = getlimits(tp); @@ -123,7 +123,7 @@ divf(TFLOAT l, TFLOAT r, Type *tp) } static int -lshi(TINT l, TINT r, Type *tp) +lshi(long long l, long long r, Type *tp) { if (r < 0 || r >= tp->size * 8) { warn("shifting %d bits is undefined", r); @@ -133,7 +133,7 @@ lshi(TINT l, TINT r, Type *tp) } static int -rshi(TINT l, TINT r, Type *tp) +rshi(long long l, long long r, Type *tp) { if (r < 0 || r >= tp->size * 8) { warn("shifting %d bits is undefined", r); @@ -143,11 +143,11 @@ rshi(TINT l, TINT r, Type *tp) } static int -foldint(int op, Symbol *res, TINT l, TINT r) +foldint(int op, Symbol *res, long long l, long long r) { - TINT i; + long long i; Type *tp = res->type; - int (*validate)(TINT, TINT, Type *tp); + int (*validate)(long long, long long, Type *tp); switch (op) { case OADD: validate = addi; break; @@ -194,10 +194,10 @@ foldint(int op, Symbol *res, TINT l, TINT r) } static int -folduint(int op, Symbol *res, TUINT l, TUINT r) +folduint(int op, Symbol *res, unsigned long long l, unsigned long long r) { - TINT i; - TUINT u; + long long i; + unsigned long long u; switch (op) { case OADD: u = l + r; break; @@ -236,11 +236,11 @@ sign: } static int -foldfloat(int op, Symbol *res, TFLOAT l, TFLOAT r) +foldfloat(int op, Symbol *res, double l, double r) { - TFLOAT f; - TINT i; - int (*validate)(TFLOAT, TFLOAT, Type *tp); + double f; + long long i; + int (*validate)(double, double, Type *tp); switch (op) { case OADD: validate = addf; break; @@ -282,9 +282,9 @@ static Node * foldconst(int type, int op, Type *tp, Symbol *ls, Symbol *rs) { Symbol *sym, aux; - TINT i; - TUINT u; - TFLOAT f; + long long i; + unsigned long long u; + double f; aux.type = tp; switch (type) { @@ -317,7 +317,7 @@ foldconst(int type, int op, Type *tp, Symbol *ls, Symbol *rs) static Node * foldcast(Node *np, Node *l) { - TUINT negmask, mask, u; + unsigned long long negmask, mask, u; Type *newtp = np->type, *oldtp = l->type; Symbol aux, *sym, *osym = l->sym; diff --git a/src/cmd/scc-cc/cc1/init.c b/src/cmd/scc-cc/cc1/init.c @@ -13,22 +13,22 @@ typedef struct init Init; struct designator { - TINT pos; + long long pos; Node *expr; struct designator *next; }; struct init { - TUINT pos; - TUINT max; + unsigned long long pos; + unsigned long long max; struct designator *tail; struct designator *head; }; -static TINT +static long long arydesig(Type *tp, Init *ip) { - TINT npos; + long long npos; Node *np; if (tp->op != ARY) @@ -45,7 +45,7 @@ arydesig(Type *tp, Init *ip) return npos; } -static TINT +static long long fielddesig(Type *tp, Init *ip) { int ons; @@ -218,7 +218,7 @@ initlist_helper(Type *tp) Node *np; Type *curtp; int braces, scalar, toomany, outbound; - TINT nelem = tp->n.elem; + long long nelem = tp->n.elem; init(&in); braces = scalar = toomany = 0; diff --git a/src/cmd/scc-cc/cc1/lex.c b/src/cmd/scc-cc/cc1/lex.c @@ -351,7 +351,7 @@ readint(char *s, int base, int sign, Symbol *sym) { Type *tp = sym->type; struct limits *lim; - TUINT u, val, max; + unsigned long long u, val, max; int c; lim = getlimits(tp); diff --git a/src/cmd/scc-cc/cc1/types.c b/src/cmd/scc-cc/cc1/types.c @@ -13,8 +13,8 @@ static Type *typetab[NR_TYPE_HASH], *localtypes; /* FIXME: - * Compiler can generate warnings here if the ranges of TINT, - * TUINT and TFLOAT are smaller than any of the constants in this + * Compiler can generate warnings here if the ranges of long long, + * unsigned long long and double are smaller than any of the constants in this * array. Ignore them if you know that the target types are correct */ static struct limits limits[][4] = { @@ -182,7 +182,7 @@ typesize(Type *tp) Type *type; unsigned long size, offset; int align, a; - TINT n; + long long n; switch (tp->op) { case ARY: @@ -287,7 +287,7 @@ newtype(Type *base) } Type * -mktype(Type *tp, int op, TINT nelem, Type *pars[]) +mktype(Type *tp, int op, long long nelem, Type *pars[]) { Type **tbl, type; Type *bp; @@ -369,7 +369,7 @@ mktype(Type *tp, int op, TINT nelem, Type *pars[]) static int eqfuns(Type *tp1, Type *tp2, int equiv) { - TINT n; + long long n; int f1kr, f2kr; Type *krf, *ansi, **pp, *p; @@ -428,7 +428,7 @@ check_base: int eqtype(Type *tp1, Type *tp2, int equiv) { - TINT n; + long long n; Symbol **s1, **s2; if (tp1 == tp2) diff --git a/src/cmd/scc-cc/cc2/cc2.h b/src/cmd/scc-cc/cc2/cc2.h @@ -172,7 +172,7 @@ struct mach { struct swtch { int nr; - TINT min, max; + long long min, max; Node *bswtch; Node *eswtch; Node **cases; @@ -212,8 +212,8 @@ struct node { int address; unsigned flags; union { - TUINT i; - TFLOAT f; + unsigned long long i; + double f; char *s; Symbol *sym; Swtch *swtch; @@ -240,7 +240,7 @@ struct addr { char kind; union { int reg; - TUINT i; + unsigned long long i; Symbol *sym; long off; } u; @@ -275,7 +275,7 @@ extern void code(int op, Node *to, Node *from1, Node *from2); extern void defvar(Symbol *), defpar(Symbol *), defglobal(Symbol *); extern void setlabel(Symbol *); extern Node *label2node(Node *np, Symbol *sym); -extern Node *constnode(Node *np, TUINT n, Type *tp); +extern Node *constnode(Node *np, unsigned long long n, Type *tp); extern Node *tmpnode(Type *, Symbol *); extern Node *idxnode(Node *, long); extern void delcode(void); diff --git a/src/cmd/scc-cc/cc2/code.c b/src/cmd/scc-cc/cc2/code.c @@ -187,7 +187,7 @@ idxnode(Node *np, long off) } Node * -constnode(Node *np, TUINT n, Type *tp) +constnode(Node *np, unsigned long long n, Type *tp) { if (!np) np = node(OCONST); diff --git a/src/cmd/scc-cc/cc2/parser.c b/src/cmd/scc-cc/cc2/parser.c @@ -210,7 +210,7 @@ constant(char *token, union tokenop u) { static char letters[] = "0123456789ABCDEF"; Node *np; - TUINT v; + unsigned long long v; unsigned c; ++token; @@ -337,7 +337,7 @@ oreturn(char *token, union tokenop u) static void addcase(Node *np) { - TINT val; + long long val; Node **bp; Swtch *cur; @@ -372,8 +372,8 @@ bswitch(char *token, union tokenop u) error(EWTACKO); cur = swp++; cur->nr = 0; - cur->min = TINT_MAX; - cur->max = TINT_MIN; + cur->min = LLONG_MAX; + cur->max = LLONG_MIN; cur->defnode = NULL; cur->cases = NULL; eval(strtok(NULL, "\t\n")); @@ -385,7 +385,7 @@ bswitch(char *token, union tokenop u) static int cmpcase(const void *p1, const void *p2) { - TINT d; + long long d; Node *np1, *np2; np1 = *(Node **) p1; diff --git a/src/cmd/scc-cc/cc2/qbe/cgen.c b/src/cmd/scc-cc/cc2/qbe/cgen.c @@ -158,7 +158,7 @@ tsethi(Node *np) case OCPL: assert(np->type.flags & INTF); np->op = OBXOR; - r = constnode(NULL, ~(TUINT) 0, &np->type); + r = constnode(NULL, ~0ULL, &np->type); goto binary; case OEFUN: /* @@ -346,7 +346,7 @@ static Node * field(Node *np, int islhs) { Node *tmp, *addr; - TUINT offset = np->right->u.sym->u.off; + unsigned long long offset = np->right->u.sym->u.off; addr = rhs(np->left); tmp = node(OADD); diff --git a/src/cmd/scc-cc/cc2/swtch.c b/src/cmd/scc-cc/cc2/swtch.c @@ -50,10 +50,10 @@ swtch_if(Node *np) } static Node * -swtch_dir(Node *np, TINT min, TINT max) +swtch_dir(Node *np, long long min, long long max) { int i; - TINT cur, nval; + long long cur, nval; Swtch *swt; Symbol *tbl; Node *p, *def, **cases; @@ -97,7 +97,7 @@ swtch(Node *np) { Swtch *swt; int n; - TINT min, max, range; + long long min, max, range; swt = np->u.swtch; min = swt->min;