many minor fixes and modifications

This commit is contained in:
ceriel 1987-03-20 08:30:31 +00:00
parent 73818f1a53
commit 4e03fc78dd
9 changed files with 43 additions and 18 deletions

View file

@ -435,10 +435,10 @@ firstline:
buf[0] = '-'; /* good heavens... */ buf[0] = '-'; /* good heavens... */
if (np == &buf[NUMSIZE+1]) { if (np == &buf[NUMSIZE+1]) {
lexerror("floating constant too long"); lexerror("floating constant too long");
ptok->tk_fval = Salloc("0.0", 5) + 1; ptok->tk_fval = Salloc("0.0",(unsigned) 5) + 1;
} }
else else
ptok->tk_fval = Salloc(buf, np - buf) + 1; ptok->tk_fval = Salloc(buf,(unsigned) (np - buf)) + 1;
return ptok->tk_symb = FLOATING; return ptok->tk_symb = FLOATING;
#endif NOFLOAT #endif NOFLOAT
} }
@ -489,7 +489,7 @@ string_token(nm, stop_char, plen)
{ {
register int ch; register int ch;
register int str_size; register int str_size;
register char *str = Malloc(str_size = ISTRSIZE); register char *str = Malloc((unsigned) (str_size = ISTRSIZE));
register int pos = 0; register int pos = 0;
LoadChar(ch); LoadChar(ch);
@ -514,7 +514,7 @@ string_token(nm, stop_char, plen)
} }
str[pos++] = ch; str[pos++] = ch;
if (pos == str_size) if (pos == str_size)
str = Srealloc(str, str_size += RSTRSIZE); str = Srealloc(str, (unsigned) (str_size += RSTRSIZE));
LoadChar(ch); LoadChar(ch);
} }
str[pos++] = '\0'; /* for filenames etc. */ str[pos++] = '\0'; /* for filenames etc. */

View file

@ -5,6 +5,6 @@
/* $Header$ */ /* $Header$ */
/* Align To Word boundary Definition */ /* Align To Word boundary Definition */
extern int word_align; /* align of a word */ extern arith word_size;
#define ATW(arg) ((((arg) + word_align - 1) / word_align) * word_align) #define ATW(arg) ((((arg) + word_size - 1) / word_size) * word_size)

View file

@ -9,9 +9,11 @@
#include "arith.h" #include "arith.h"
#include "sizes.h" #include "sizes.h"
#include "atw.h" #include "atw.h"
#include "align.h"
#ifndef STB #ifndef STB
#include "label.h" #include "label.h"
#include "stack.h" #include "stack.h"
extern arith tmp_pointer_var();
#endif STB #endif STB
/* Because EM does not support the loading and storing of /* Because EM does not support the loading and storing of

View file

@ -30,6 +30,7 @@
#include "specials.h" #include "specials.h"
#include "atw.h" #include "atw.h"
#include "assert.h" #include "assert.h"
#include "align.h"
label lab_count = 1; label lab_count = 1;
label datlab_count = 1; label datlab_count = 1;
@ -368,7 +369,7 @@ code_declaration(idf, expr, lvl, sc)
error("size of %s unknown", text); error("size of %s unknown", text);
size = (arith)0; size = (arith)0;
} }
C_bss_cst(align(size, word_align), (arith)0, 1); C_bss_cst(ATW(size), (arith)0, 1);
} }
break; break;
case EXTERN: case EXTERN:
@ -460,7 +461,7 @@ bss(idf)
warning("actual array of size 0"); warning("actual array of size 0");
*/ */
C_df_dnam(idf->id_text); C_df_dnam(idf->id_text);
C_bss_cst(align(size, word_align), (arith)0, 1); C_bss_cst(ATW(size), (arith)0, 1);
} }
formal_cvt(df) formal_cvt(df)

View file

@ -193,6 +193,12 @@ cut_size(expr)
int size = (int) expr->ex_type->tp_size; int size = (int) expr->ex_type->tp_size;
ASSERT(expr->ex_class == Value); ASSERT(expr->ex_class == Value);
if (expr->ex_type->tp_fund == POINTER) {
/* why warn on "ptr-3" ?
This quick hack fixes it
*/
uns = 0;
}
if (uns) { if (uns) {
if (o1 & ~full_mask[size]) if (o1 & ~full_mask[size])
expr_warning(expr, expr_warning(expr,

View file

@ -656,7 +656,7 @@ domacro()
SkipRestOfLine(); SkipRestOfLine();
return; return;
} }
do_line(tk.tk_ival); do_line((unsigned int) tk.tk_ival);
EoiForNewline = 0; EoiForNewline = 0;
SkipEscNewline = 0; SkipEscNewline = 0;
} }

View file

@ -78,7 +78,7 @@ idf_hashed(tg, size, hc)
notch = new_idf(); notch = new_idf();
notch->next = *hook; notch->next = *hook;
*hook = notch; /* hooked in */ *hook = notch; /* hooked in */
notch->id_text = Salloc(tg, size); notch->id_text = Salloc(tg, (unsigned) size);
#ifndef NOPP #ifndef NOPP
notch->id_resmac = 0; notch->id_resmac = 0;
#endif NOPP #endif NOPP
@ -551,7 +551,7 @@ init_idf(idf)
error("multiple initialization of %s", idf->id_text); error("multiple initialization of %s", idf->id_text);
if (def->df_sc == TYPEDEF) { if (def->df_sc == TYPEDEF) {
warning("typedef cannot be initialized"); warning("typedef cannot be initialized");
def->df_sc == EXTERN; /* ??? *//* What else ? */ def->df_sc = EXTERN; /* ??? *//* What else ? */
} }
def->df_initialized = 1; def->df_initialized = 1;
} }

View file

@ -29,6 +29,7 @@
char *symbol2str(); char *symbol2str();
char *long2str(); char *long2str();
char *strncpy();
struct expr *do_array(), *do_struct(), *IVAL(); struct expr *do_array(), *do_struct(), *IVAL();
extern char options[]; extern char options[];
@ -482,7 +483,7 @@ ch_array(tpp, ex)
if (tp->tp_size == (arith)-1) { if (tp->tp_size == (arith)-1) {
/* set the dimension */ /* set the dimension */
tp = *tpp = construct_type(ARRAY, tp->tp_up, length); tp = *tpp = construct_type(ARRAY, tp->tp_up, length);
ntopad = align(tp->tp_size, word_align) - tp->tp_size; ntopad = align(tp->tp_size, word_size) - tp->tp_size;
} }
else { else {
arith dim = tp->tp_size / tp->tp_up->tp_size; arith dim = tp->tp_size / tp->tp_up->tp_size;
@ -498,12 +499,13 @@ ch_array(tpp, ex)
length = dim; length = dim;
} }
} }
ntopad = align(dim, word_align) - length; ntopad = align(dim, word_size) - length;
} }
/* throw out the characters of the already prepared string */ /* throw out the characters of the already prepared string */
s = Malloc((int) (length + ntopad)); s = Malloc((unsigned) (length + ntopad));
clear(s, (int) (length + ntopad)); clear(s, (int) (length + ntopad));
strncpy(s, ex->SG_VALUE, (int) length); strncpy(s, ex->SG_VALUE, (int) length);
free(ex->SG_VALUE);
str_cst(s, (int) (length + ntopad)); str_cst(s, (int) (length + ntopad));
free(s); free(s);
} }

View file

@ -117,6 +117,7 @@ char *source = 0;
char *nmlist = 0; char *nmlist = 0;
#ifdef USE_TMP #ifdef USE_TMP
extern char *strcpy(), *strcat();
extern char *mktemp(); /* library routine */ extern char *mktemp(); /* library routine */
char *tmpfdir = "/tmp"; /* where to keep the temporary file */ char *tmpfdir = "/tmp"; /* where to keep the temporary file */
static char *tmpfname = "/Cem.XXXXXX"; static char *tmpfname = "/Cem.XXXXXX";
@ -158,7 +159,12 @@ compile(argc, argv)
fatal("use: %s source destination [namelist]", prog_name); fatal("use: %s source destination [namelist]", prog_name);
break; break;
} }
source = strcmp(argv[0], "-") ? argv[0] : 0; if (strcmp(argv[0], "-"))
FileName = source = argv[0];
else {
source = 0;
FileName = "standard input";
}
#ifdef USE_TMP #ifdef USE_TMP
if (! options['N']) { if (! options['N']) {
@ -171,11 +177,9 @@ compile(argc, argv)
if (destination && strcmp(destination, "-") == 0) if (destination && strcmp(destination, "-") == 0)
destination = 0; destination = 0;
if (!InsertFile(source, (char **) 0, &result)) /* read the source file */ if (!InsertFile(source, (char **) 0, &result)) /* read the source file */
fatal("%s: no source file %s\n", prog_name, fatal("%s: no source file %s\n", prog_name, FileName);
source ? source : "stdin");
File_Inserted = 1; File_Inserted = 1;
init(); init();
FileName = source;
LineNumber = 0; LineNumber = 0;
#ifndef NOPP #ifndef NOPP
WorkingDir = getwdir(source); WorkingDir = getwdir(source);
@ -410,3 +414,13 @@ AppendFile(src, dst)
sys_close(fp_dst); sys_close(fp_dst);
} }
#endif USE_TMP #endif USE_TMP
No_Mem()
{
fatal("out of memory");
}
C_failed()
{
fatal("write failed");
}