scc

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

commit ee178f3a370cbf7ec6effb56520bcca5e301c43d
parent d5e3482c4be7af96c59d226f31be0f6e12968a31
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Wed, 15 Mar 2023 23:49:55 +0100

Revert "cc1: Use FATAL() instead of abort()"

This reverts commit 050713688e684dee2357dac4ade1c481ea9d6f17.

Diffstat:
Minclude/scc/scc/scc.h | 5-----
Msrc/cmd/cc/cc1/cc1.h | 5++---
Msrc/cmd/cc/cc1/code.c | 6+++---
Msrc/cmd/cc/cc1/error.c | 169-------------------------------------------------------------------------------
Msrc/cmd/cc/cc1/expr.c | 4++--
Msrc/cmd/cc/cc1/fold.c | 2+-
Msrc/cmd/cc/cc1/init.c | 6++----
Msrc/cmd/cc/cc1/lex.c | 4++--
Msrc/cmd/cc/cc1/symbol.c | 2+-
Msrc/cmd/cc/cc1/types.c | 8++++----
Msrc/libscc/Makefile | 1-
Dsrc/libscc/fatal.c | 18------------------
12 files changed, 17 insertions(+), 213 deletions(-)

diff --git a/include/scc/scc/scc.h b/include/scc/scc/scc.h @@ -5,11 +5,9 @@ extern int enadebug; #ifndef NDEBUG #define DBG(...) dbg(__VA_ARGS__) #define DBGON() (enadebug = 1) -#define FATAL(...) fatal(__FILE__, __LINE__, __VA_ARGS__) #else #define DBG(...) #define DBGON() -#define FATAL(...) abort() #endif #define TINT long long @@ -19,8 +17,6 @@ extern int enadebug; #define TFLOAT double #define SIZET size_t -#define NELEM(x) (sizeof(x)/sizeof((x)[0])) - struct items { char **s; unsigned n; @@ -30,7 +26,6 @@ typedef struct alloc Alloc; extern void die(const char *fmt, ...); extern void dbg(const char *fmt, ...); -extern void fatal(char *, int, char *, ...); extern void newitem(struct items *items, char *item); extern void *xmalloc(size_t size); extern void *xcalloc(size_t nmemb, size_t size); diff --git a/src/cmd/cc/cc1/cc1.h b/src/cmd/cc/cc1/cc1.h @@ -129,7 +129,7 @@ enum { CPPMODE }; -/* input tokens (see error.c for strings) */ +/* input tokens */ enum tokens { CONST = 1 << 0, /* type qualifier tokens are used as flags */ RESTRICT = 1 << 1, @@ -216,7 +216,7 @@ enum tokens { EOFTOK }; -/* operations (see error.c for strings) */ +/* operations */ enum op { OADD, OMUL, @@ -435,7 +435,6 @@ extern void unexpected(void); extern void errorp(char *fmt, ...); extern void cpperror(char *fmt, ...); extern Type *deftype(Type *tp); -extern char *opstr(int), *tokstr(int); /* types.c */ extern int eqtype(Type *tp1, Type *tp2, int eqflag); diff --git a/src/cmd/cc/cc1/code.c b/src/cmd/cc/cc1/code.c @@ -230,7 +230,7 @@ emitconst(Node *np) (long long) u & ones(tp->size)); break; default: - FATAL("default abort: tp->op = %s\n", tokstr(tp->op)); + abort(); } } @@ -306,7 +306,7 @@ emittype(int op, void *arg) case ENUM: return; default: - FATAL("default abort: tp->op = %s\n", tokstr(tp->op)); + abort(); } } @@ -404,7 +404,7 @@ emitdesig(Node *np, Type *tp, SIZET *addr) emitpadding(tp, addr); break; default: - FATAL("default abort: tp->op = %s\n", tokstr(tp->op)); + abort(); } if (sym) { diff --git a/src/cmd/cc/cc1/error.c b/src/cmd/cc/cc1/error.c @@ -10,175 +10,6 @@ extern int failure; static unsigned nerrors; -#ifndef NDEBUG -char * -tokstr(int tok) -{ - char *strings[] = { - [CONST] = "CONST", - [RESTRICT] = "RESTRICT", - [VOLATILE] = "VOLATILE", - [INLINE] = "INLINE", - [TQUALIFIER] = "TQUALIFIER", - [MACROPAR] = "MACROPAR", - [CONCAT] = "CONCAT", - [STRINGIZE] = "STRINGIZE", - [TYPE] = "TYPE", - [IDEN] = "IDEN", - [SCLASS] = "SCLASS", - [CONSTANT] = "CONSTANT", - [STRING] = "STRING", - [SIZEOF] = "SIZEOF", - [INDIR] = "INDIR", - [INC] = "INC", - [DEC] = "DEC", - [SHL] = "SHL", - [SHR] = "SHR", - [LE] = "LE", - [GE] = "GE", - [EQ] = "EQ", - [NE] = "NE", - [AND] = "AND", - [OR] = "OR", - [MUL_EQ] = "MUL_EQ", - [DIV_EQ] = "DIV_EQ", - [MOD_EQ] = "MOD_EQ", - [ADD_EQ] = "ADD_EQ", - [SUB_EQ] = "SUB_EQ", - [AND_EQ] = "AND_EQ", - [XOR_EQ] = "XOR_EQ", - [OR_EQ] = "OR_EQ", - [SHL_EQ] = "SHL_EQ", - [SHR_EQ] = "SHR_EQ", - [ELLIPSIS] = "ELLIPSIS", - [CASE] = "CASE", - [DEFAULT] = "DEFAULT", - [IF] = "IF", - [ELSE] = "ELSE", - [SWITCH] = "SWITCH", - [WHILE] = "WHILE", - [DO] = "DO", - [FOR] = "FOR", - [GOTO] = "GOTO", - [VOID] = "VOID", - [FLOAT] = "FLOAT", - [INT] = "INT", - [BOOL] = "BOOL", - [VA_LIST] = "VA_LIST", - [STRUCT] = "STRUCT", - [UNION] = "UNION", - [CHAR] = "CHAR", - [DOUBLE] = "DOUBLE", - [SHORT] = "SHORT", - [LONG] = "LONG", - [LLONG] = "LLONG", - [COMPLEX] = "COMPLEX", - [TYPEDEF] = "TYPEDEF", - [EXTERN] = "EXTERN", - [STATIC] = "STATIC", - [AUTO] = "AUTO", - [REGISTER] = "REGISTER", - [ENUM] = "ENUM", - [TYPEIDEN] = "TYPEIDEN", - [UNSIGNED] = "UNSIGNED", - [SIGNED] = "SIGNED", - [CONTINUE] = "CONTINUE", - [BREAK] = "BREAK", - [RETURN] = "RETURN", - [DEFINE] = "DEFINE", - [DEFINED] = "DEFINED", - [INCLUDE] = "INCLUDE", - [LINE] = "LINE", - [PRAGMA] = "PRAGMA", - [ERROR] = "ERROR", - [IFDEF] = "IFDEF", - [ELIF] = "ELIF", - [IFNDEF] = "IFNDEF", - [UNDEF] = "UNDEF", - [ENDIF] = "ENDIF", - [BUILTIN] = "BUILTIN", - [EOFTOK] = "EOFTOK" - }; - - if (tok >= NELEM(strings) || !strings[tok]) - return "unkown token"; - return strings[tok]; -} - -char * -opstr(int op) -{ - char *strings[] = { - [OADD] = "OADD", - [OMUL] = "OMUL", - [OSUB] = "OSUB", - [OINC] = "OINC", - [ODEC] = "ODEC", - [ODIV] = "ODIV", - [OMOD] = "OMOD", - [OSHL] = "OSHL", - [OSHR] = "OSHR", - [OBAND] = "OBAND", - [OBXOR] = "OBXOR", - [OBOR] = "OBOR", - [OSNEG] = "OSNEG", - [ONEG] = "ONEG", - [OCPL] = "OCPL", - [OAND] = "OAND", - [OOR] = "OOR", - [OEQ] = "OEQ", - [ONE] = "ONE", - [OLT] = "OLT", - [OGE] = "OGE", - [OLE] = "OLE", - [OGT] = "OGT", - [OASSIGN] = "OASSIGN", - [OA_MUL] = "OA_MUL", - [OA_DIV] = "OA_DIV", - [OA_MOD] = "OA_MOD", - [OA_ADD] = "OA_ADD", - [OA_SUB] = "OA_SUB", - [OA_SHL] = "OA_SHL", - [OA_SHR] = "OA_SHR", - [OA_AND] = "OA_AND", - [OA_XOR] = "OA_XOR", - [OA_OR] = "OA_OR", - [OADDR] = "OADDR", - [OCOMMA] = "OCOMMA", - [OCAST] = "OCAST", - [OPTR] = "OPTR", - [OSYM] = "OSYM", - [OASK] = "OASK", - [OCOLON] = "OCOLON", - [OFIELD] = "OFIELD", - [OLABEL] = "OLABEL", - [ODEFAULT] = "ODEFAULT", - [OCASE] = "OCASE", - [OJUMP] = "OJUMP", - [OBRANCH] = "OBRANCH", - [OEXPR] = "OEXPR", - [OEFUN] = "OEFUN", - [OELOOP] = "OELOOP", - [OBLOOP] = "OBLOOP", - [OFUN] = "OFUN", - [OPAR] = "OPAR", - [OCALL] = "OCALL", - [OCALLE] = "OCALLE", - [ORET] = "ORET", - [ODECL] = "ODECL", - [OBSWITCH] = "OBSWITCH", - [OESWITCH] = "OESWITCH", - [OINIT] = "OINIT", - [OBUILTIN] = "OBUILTIN", - [OTYP] = "OTYP", - }; - - if (op >= NELEM(strings) || !strings[op]) - return "unkown operation"; - return strings[op]; -} -#endif - static void warn_error(int flag, char *fmt, va_list va) { diff --git a/src/cmd/cc/cc1/expr.c b/src/cmd/cc/cc1/expr.c @@ -81,7 +81,7 @@ promote(Node *np) tp = doubletype; break; default: - FATAL("default abort: tp->op = %s\n", tokstr(tp->op)); + abort(); } if ((new = convert(np, tp, 1)) != NULL) return new; @@ -466,7 +466,7 @@ negop(int op) case OGE: return OLT; case OLE: return OGT; case OGT: return OLE; - default: FATAL("default abort: op = %s\n", opstr(op)); + default: abort(); } return op; } diff --git a/src/cmd/cc/cc1/fold.c b/src/cmd/cc/cc1/fold.c @@ -305,7 +305,7 @@ foldconst(int type, int op, Type *tp, Symbol *ls, Symbol *rs) return NULL; break; default: - FATAL("default abort: type = %s\n", tokstr(type)); + abort(); } sym = newsym(NS_IDEN, NULL); sym->flags |= SCONSTANT; diff --git a/src/cmd/cc/cc1/init.c b/src/cmd/cc/cc1/init.c @@ -343,10 +343,8 @@ repeat: goto repeat; case ARY: case STRUCT: - if (!(np->flags & NCONST)) { - /* TODO */ - FATAL("default abort: tp->op = %s\n", tokstr(tp->op)); - } + if (!(np->flags & NCONST)) + abort(); /* TODO */ hidden = newsym(NS_IDEN, NULL); hidden->id = newid(); hidden->type = sym->type; diff --git a/src/cmd/cc/cc1/lex.c b/src/cmd/cc/cc1/lex.c @@ -107,7 +107,7 @@ addinput(int type, void *arg, int fail) DBG("INPUT: file input 'stdin'"); break; default: - FATAL("default abort: type = %d\n", type); + abort(); } if (!buffer) { @@ -153,7 +153,7 @@ delinput(void) DBG("INPUT: stdin finished"); break; default: - FATAL("default abort: type = %d\n", ip->flags & ITYPE); + abort(); } input = ip->next; diff --git a/src/cmd/cc/cc1/symbol.c b/src/cmd/cc/cc1/symbol.c @@ -40,7 +40,7 @@ dumpstab(Symbol **tbl, char *msg) else if (tbl == htablbl) size = NR_LBL_HASH; else - FATAL("default abort; tbl = %d\n", tbl); + abort(); for (bp = tbl; bp < &tbl[size]; ++bp) { if (*bp == NULL) diff --git a/src/cmd/cc/cc1/types.c b/src/cmd/cc/cc1/types.c @@ -98,7 +98,7 @@ getlimits(Type *tp) } break; default: - FATAL("default abort: tp->op = %s\n", tokstr(tp->op)); + abort(); } return &limits[ntable][ntype]; @@ -240,7 +240,7 @@ typesize(Type *tp) case FTN: return; default: - FATAL("default abort: tp->op = %s\n", tokstr(tp->op)); + abort(); } } @@ -337,7 +337,7 @@ mktype(Type *tp, int op, TINT nelem, Type *pars[]) create_type: return newtype(&type); default: - FATAL("default abort: op = %s\n", tokstr(op)); + abort(); } tbl = &typetab[HASH(&type)]; @@ -467,7 +467,7 @@ eqtype(Type *tp1, Type *tp2, int equiv) case FLOAT: return tp1->letter == tp2->letter; default: - FATAL("default abort: tp1->op = %s\n", tokstr(tp1->op)); + abort(); } } diff --git a/src/libscc/Makefile b/src/libscc/Makefile @@ -6,7 +6,6 @@ include $(PROJECTDIR)/scripts/rules.mk OBJS =\ debug.o\ die.o\ - fatal.o\ newitem.o\ xcalloc.o\ xmalloc.o\ diff --git a/src/libscc/fatal.c b/src/libscc/fatal.c @@ -1,18 +0,0 @@ -#include <stdarg.h> -#include <stdio.h> -#include <stdlib.h> - -#include <scc/arg.h> -#include <scc/scc.h> - -void -fatal(char *fname, int lineno, char *fmt, ...) -{ - va_list va; - - va_start(va, fmt); - fprintf(stderr, "%s:", argv0); - vfprintf(stderr, fmt, va); - fputc('\n', stderr); - abort(); -}