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:
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();
-}