tokenname.h
type.c
type.str
+util.str
+util.c
# Libraries and EM interface definitions
SYSLIB = $(EMHOME)/modules/lib/libsystem.a
EMKLIB = $(EMHOME)/modules/lib/libemk.a
-EMELIB = $(EMHOME)/modules/lib/libeme.a
+EMELIB = $(EMHOME)/modules/lib/libeme.a $(EMHOME)/lib/em_data.a
STRLIB = $(EMHOME)/modules/lib/libstring.a
PRTLIB = $(EMHOME)/modules/lib/libprint.a
EMMESLIB = $(EMHOME)/modules/lib/libem_mes.a
# Libraries and EM interface definitions
SYSLIB = $(EMHOME)/modules/lib/libsystem.a
EMKLIB = $(EMHOME)/modules/lib/libemk.a
-EMELIB = $(EMHOME)/modules/lib/libeme.a
+EMELIB = $(EMHOME)/modules/lib/libeme.a $(EMHOME)/lib/em_data.a
STRLIB = $(EMHOME)/modules/lib/libstring.a
PRTLIB = $(EMHOME)/modules/lib/libprint.a
EMMESLIB = $(EMHOME)/modules/lib/libem_mes.a
;
single_type_specifier(register struct decspecs *ds;):
- TYPE_IDENTIFIER /* this includes INT, CHAR, etc. */
+ %default TYPE_IDENTIFIER /* this includes INT, CHAR, etc. */
{idf2type(dot.tk_idf, &ds->ds_type);}
|
IDENTIFIER
- {error("%s is not a type identifier", dot.tk_idf->id_text);
- dot.tk_idf->id_def->df_type = error_type;
- dot.tk_idf->id_def->df_sc = TYPEDEF;
- ds->ds_type = error_type;
+ {
+ error("%s is not a type identifier", dot.tk_idf->id_text);
+ ds->ds_type = error_type;
+ if (dot.tk_idf->id_def) {
+ dot.tk_idf->id_def->df_type = error_type;
+ dot.tk_idf->id_def->df_sc = TYPEDEF;
+ }
}
|
struct_or_union_specifier(&ds->ds_type)
}
if (level == L_FORMAL2) {
- if (ds->ds_sc_given && ds->ds_sc != AUTO &&
+ if (ds->ds_sc_given &&
ds->ds_sc != REGISTER){
extern char *symbol2str();
error("%s formal illegal", symbol2str(ds->ds_sc));
inctable[0] = WorkingDir;
if (filenm) {
if (!InsertFile(filenm, &inctable[tok==FILESPECIFIER],&result)){
- fatal("cannot find include file \"%s\"", filenm);
+ fatal("cannot open include file \"%s\"", filenm);
}
else {
WorkingDir = getwdir(result);
extern char options[];
-#define compact(nr, low, up) (nr != 0 && (up - low) / nr <= (DENSITY - 1))
+compact(nr, low, up)
+ arith low, up;
+{
+ /* Careful! up - low might not fit in an arith. And then,
+ the test "up-low < 0" might also not work to detect this
+ situation! Or is this just a bug in the M68020/M68000?
+ */
+ arith diff = up - low;
+
+ return (nr != 0 && diff >= 0 && diff / nr <= (DENSITY - 1));
+}
static struct switch_hdr *switch_stack = 0;