scc

simple C compiler
git clone git://git.2f30.org/scc
Log | Files | Refs | README | LICENSE

commit 7903bbf3ea842fe18ed2ca0606d859058d3eff47
parent 605d8bfc73a69a16e8ff6992f73cf207425d386e
Author: FRIGN <dev@frign.de>
Date:   Wed, 25 May 2016 07:58:42 +0200

[cc1] Unboolify

Bools artificially limit what you can do on a logical basis with normal
ints. So let's drop them.

Diffstat:
Mcc1/cc1.h | 14+++++++-------
Mcc1/cpp.c | 8++++----
Mcc1/decl.c | 2+-
Mcc1/expr.c | 4++--
Mcc1/fold.c | 30+++++++++++++++---------------
Mcc1/lex.c | 6+++---
Mcc1/types.c | 2+-
Minc/cc.h | 8--------
8 files changed, 33 insertions(+), 41 deletions(-)

diff --git a/cc1/cc1.h b/cc1/cc1.h @@ -347,7 +347,7 @@ extern void errorp(char *fmt, ...); extern void cpperror(char *fmt, ...); /* types.c */ -extern bool eqtype(Type *tp1, Type *tp2); +extern int eqtype(Type *tp1, Type *tp2); extern Type *ctype(unsigned type, unsigned sign, unsigned size); extern Type *mktype(Type *tp, int op, TINT nelem, Type *data[]); extern Type *duptype(Type *base); @@ -376,10 +376,10 @@ extern void decl(void); /* lex.c */ extern char ahead(void); extern unsigned next(void); -extern bool moreinput(void); +extern int moreinput(void); extern void expect(unsigned tok); extern void discard(void); -extern bool addinput(char *fname); +extern int addinput(char *fname); extern void setsafe(int type); extern void ilex(char *fname); #define accept(t) ((yytoken == (t)) ? next() : 0) @@ -402,9 +402,9 @@ extern TUINT ones(int nbytes); extern Node *decay(Node *), *negate(Node *np), *assign(void); extern Node *convert(Node *np, Type *tp1, char iscast); extern Node *iconstexpr(void), *condexpr(void), *expr(void); -extern bool isnodecmp(int op); +extern int isnodecmp(int op); extern int negop(int op); -extern bool cmpnode(Node *np, TUINT val); +extern int cmpnode(Node *np, TUINT val); /* init.c */ extern void initializer(Symbol *sym, Type *tp); @@ -412,8 +412,8 @@ extern Node *initlist(Type *tp); /* cpp.c */ extern void icpp(void); -extern bool cpp(void); -extern bool expand(char *begin, Symbol *sym); +extern int cpp(void); +extern int expand(char *begin, Symbol *sym); extern void incdir(char *dir); extern void outcpp(void); extern Symbol *defmacro(char *s); diff --git a/cc1/cpp.c b/cc1/cpp.c @@ -226,7 +226,7 @@ expansion_too_long: } #define BUFSIZE ((INPUTSIZ > FILENAME_MAX+2) ? INPUTSIZ : FILENAME_MAX+2) -bool +int expand(char *begin, Symbol *sym) { size_t total, elen, rlen, llen, ilen; @@ -324,7 +324,7 @@ getpars(Symbol *args[NR_MACROARG]) return n; } -static bool +static int getdefs(Symbol *args[NR_MACROARG], int nargs, char *bp, size_t bufsiz) { Symbol **argp; @@ -425,7 +425,7 @@ incdir(char *dir) dirinclude[ninclude-1] = dir; } -static bool +static int includefile(char *dir, char *file, size_t filelen) { size_t dirlen; @@ -684,7 +684,7 @@ undef(void) next(); } -bool +int cpp(void) { static struct { diff --git a/cc1/decl.c b/cc1/decl.c @@ -65,7 +65,7 @@ push(struct declarators *dp, int op, ...) va_end(va); } -static bool +static int pop(struct declarators *dp, struct decl *dcl) { struct declarator *p; diff --git a/cc1/expr.c b/cc1/expr.c @@ -12,7 +12,7 @@ Node *expr(void); -bool +int cmpnode(Node *np, TUINT val) { Symbol *sym; @@ -36,7 +36,7 @@ cmpnode(Node *np, TUINT val) return 0; } -bool +int isnodecmp(int op) { switch (op) { diff --git a/cc1/fold.c b/cc1/fold.c @@ -17,7 +17,7 @@ ones(int nbytes) return v; } -static bool +static int addi(TINT l, TINT r, Type *tp) { struct limits *lim = getlimits(tp); @@ -35,7 +35,7 @@ addi(TINT l, TINT r, Type *tp) return 0; } -static bool +static int addf(TFLOAT l, TFLOAT r, Type *tp) { struct limits *lim = getlimits(tp); @@ -53,19 +53,19 @@ addf(TFLOAT l, TFLOAT r, Type *tp) return 0; } -static bool +static int subi(TINT l, TINT r, Type *tp) { return addi(l, -r, tp); } -static bool +static int subf(TFLOAT l, TFLOAT r, Type *tp) { return addf(l, -r, tp); } -static bool +static int muli(TINT l, TINT r, Type *tp) { struct limits *lim = getlimits(tp); @@ -83,7 +83,7 @@ muli(TINT l, TINT r, Type *tp) return 0; } -static bool +static int mulf(TFLOAT l, TFLOAT r, Type *tp) { struct limits *lim = getlimits(tp); @@ -101,7 +101,7 @@ mulf(TFLOAT l, TFLOAT r, Type *tp) return 0; } -static bool +static int divi(TINT l, TINT r, Type *tp) { struct limits *lim = getlimits(tp); @@ -113,7 +113,7 @@ divi(TINT l, TINT r, Type *tp) return 1; } -static bool +static int divf(TFLOAT l, TFLOAT r, Type *tp) { struct limits *lim = getlimits(tp); @@ -128,7 +128,7 @@ divf(TFLOAT l, TFLOAT r, Type *tp) return 1; } -static bool +static int lshi(TINT l, TINT r, Type *tp) { if (r < 0 || r >= tp->size * 8) { @@ -138,7 +138,7 @@ lshi(TINT l, TINT r, Type *tp) return muli(l, 1 << r, tp); } -static bool +static int rshi(TINT l, TINT r, Type *tp) { if (r < 0 || r >= tp->size * 8) { @@ -148,12 +148,12 @@ rshi(TINT l, TINT r, Type *tp) return 1; } -static bool +static int foldint(int op, Symbol *res, TINT l, TINT r) { TINT i; Type *tp = res->type; - bool (*validate)(TINT, TINT, Type *tp); + int (*validate)(TINT, TINT, Type *tp); switch (op) { case OADD: validate = addi; break; @@ -196,7 +196,7 @@ foldint(int op, Symbol *res, TINT l, TINT r) return 1; } -static bool +static int folduint(int op, Symbol *res, TUINT l, TUINT r) { TINT i; @@ -234,12 +234,12 @@ sign: return 1; } -static bool +static int foldfloat(int op, Symbol *res, TFLOAT l, TFLOAT r) { TFLOAT f; TINT i; - bool (*validate)(TFLOAT, TFLOAT, Type *tp); + int (*validate)(TFLOAT, TFLOAT, Type *tp); switch (op) { case OADD: validate = addf; break; diff --git a/cc1/lex.c b/cc1/lex.c @@ -93,7 +93,7 @@ ilex(char *fname) keywords(keys, NS_KEYWORD); } -bool +int addinput(char *fname) { FILE *fp; @@ -174,7 +174,7 @@ comment(char type) error("unterminated comment"); } -static bool +static int readline(void) { char *bp, *lim; @@ -212,7 +212,7 @@ repeat: return 1; } -bool +int moreinput(void) { static char file[FILENAME_MAX]; diff --git a/cc1/types.c b/cc1/types.c @@ -308,7 +308,7 @@ mktype(Type *tp, int op, TINT nelem, Type *pars[]) return *tbl = bp; } -bool +int eqtype(Type *tp1, Type *tp2) { TINT n; diff --git a/inc/cc.h b/inc/cc.h @@ -1,12 +1,4 @@ /* See LICENSE file for copyright and license details. */ -#ifndef __bool_true_and_false_defined -#ifdef NBOOL -typedef unsigned bool; -#else -#include <stdbool.h> -#endif -#endif - #ifndef NDEBUG extern int debug; #define DBG(fmt, ...) dbg(fmt, __VA_ARGS__)