some more Minix squeezing
This commit is contained in:
parent
64b7d49c0a
commit
352c5c581b
6 changed files with 22 additions and 32 deletions
|
@ -334,9 +334,9 @@ int2float(expp, tp)
|
|||
|
||||
exp->ex_type = tp;
|
||||
exp->ex_class = Float;
|
||||
exp->FL_VALUE = 0 /* Salloc(buf, (unsigned)strlen(buf)+1) */ ;
|
||||
/* exp->FL_VALUE = 0 /* Salloc(buf, (unsigned)strlen(buf)+1) */ ;
|
||||
flt_arith2flt(exp->VL_VALUE, &(exp->FL_ARITH));
|
||||
exp->FL_DATLAB = 0;
|
||||
/* exp->FL_DATLAB = 0; */
|
||||
}
|
||||
else *expp = arith2arith(tp, INT2FLOAT, *expp);
|
||||
}
|
||||
|
|
|
@ -209,11 +209,11 @@ string2expr(expp, str, len)
|
|||
ex->ex_type = string_type;
|
||||
/* ex->ex_type = qualifier_type(ex->ex_type, TQ_CONST); */
|
||||
ex->ex_flags |= EX_READONLY;
|
||||
ex->ex_lvalue = 0;
|
||||
/* ex->ex_lvalue = 0; */
|
||||
ex->ex_class = String;
|
||||
ex->SG_VALUE = str;
|
||||
ex->SG_LEN = len;
|
||||
ex->SG_DATLAB = 0;
|
||||
/* ex->SG_DATLAB = 0; */
|
||||
}
|
||||
|
||||
int2expr(expr)
|
||||
|
|
|
@ -90,7 +90,7 @@ idf_hashed(tg, size, hc)
|
|||
*hook = notch; /* hooked in */
|
||||
notch->id_text = Salloc(tg, (unsigned) size);
|
||||
#ifndef NOPP
|
||||
notch->id_resmac = 0;
|
||||
/* notch->id_resmac = 0; */
|
||||
#endif NOPP
|
||||
return notch;
|
||||
}
|
||||
|
@ -346,7 +346,7 @@ declare_idf(ds, dc, lvl)
|
|||
newdef->df_line = idf->id_line;
|
||||
#ifdef LINT
|
||||
newdef->df_set = (type->tp_fund == ARRAY);
|
||||
newdef->df_firstbrace = 0;
|
||||
/* newdef->df_firstbrace = 0; */
|
||||
#endif LINT
|
||||
|
||||
/* link it into the name list in the proper place */
|
||||
|
|
|
@ -119,7 +119,7 @@ add_proto(pl, ds, dc, level)
|
|||
newdef->df_line = idf->id_line;
|
||||
#ifdef LINT
|
||||
newdef->df_set = (type->tp_fund == ARRAY);
|
||||
newdef->df_firstbrace = 0;
|
||||
/* newdef->df_firstbrace = 0; */
|
||||
#endif
|
||||
/* We can't put the idf onto the stack, since these kinds
|
||||
of declaration may occurs at any level, and the idf
|
||||
|
|
|
@ -103,7 +103,7 @@ add_sel(stp, tp, idf, sdefpp, szp, fd) /* this is horrible */
|
|||
check_selector(idf, stp);
|
||||
|
||||
newsdef = new_sdef();
|
||||
newsdef->sd_sdef = (struct sdef *) 0;
|
||||
/* newsdef->sd_sdef = (struct sdef *) 0; */
|
||||
|
||||
/* link into selector descriptor list of this id
|
||||
*/
|
||||
|
|
|
@ -42,7 +42,6 @@ static struct switch_hdr *switch_stack = 0;
|
|||
- the expression E in "switch(E)" shall have integral type (3.6.4.2)
|
||||
- the expression E in "case E:" is converted to the promoted type
|
||||
of the controlling expression
|
||||
- the values in the CSA/CSB tables are words (EM 7.4) (??? JvE)
|
||||
For simplicity, we suppose int_size == word_size.
|
||||
*/
|
||||
|
||||
|
@ -59,18 +58,6 @@ code_startswitch(expp)
|
|||
/* INT, LONG, FLOAT, DOUBLE or LNGDBL */
|
||||
|
||||
switch (fund) {
|
||||
case LONG:
|
||||
/* switches on longs should work. Unfortunately, no backend
|
||||
* has simplemented switches with sizes other than the
|
||||
* word_size. Furthermore, building the rom should then be
|
||||
* done using C_rom_icon().
|
||||
* Just cast the expression to int and give a warning when
|
||||
* this means truncation.
|
||||
*/
|
||||
if (long_size > int_size)
|
||||
warning("can't switch on longs (cast to int)");
|
||||
int2int(expp, int_type); /* for now ??? */
|
||||
break;
|
||||
case FLOAT:
|
||||
case DOUBLE:
|
||||
case LNGDBL:
|
||||
|
@ -80,23 +67,25 @@ code_startswitch(expp)
|
|||
}
|
||||
stack_stmt(l_break, NO_LABEL);
|
||||
sh->sh_break = l_break;
|
||||
sh->sh_default = 0;
|
||||
/* sh->sh_default = 0; */
|
||||
sh->sh_table = l_table;
|
||||
sh->sh_nrofentries = 0;
|
||||
/* sh->sh_nrofentries = 0; */
|
||||
sh->sh_type = (*expp)->ex_type; /* the expression switched */
|
||||
sh->sh_lowerbd = sh->sh_upperbd = (arith)0; /* immaterial ??? */
|
||||
sh->sh_entries = (struct case_entry *) 0; /* case-entry list */
|
||||
/* sh->sh_entries = (struct case_entry *) 0; /* case-entry list */
|
||||
sh->sh_expr = *expp;
|
||||
sh->next = switch_stack; /* push onto switch-stack */
|
||||
switch_stack = sh;
|
||||
C_bra(l_table); /* goto start of switch_table */
|
||||
}
|
||||
|
||||
extern char *long2str();
|
||||
|
||||
code_endswitch()
|
||||
{
|
||||
register struct switch_hdr *sh = switch_stack;
|
||||
register label tablabel;
|
||||
register struct case_entry *ce;
|
||||
arith size = sh->sh_type->tp_size;
|
||||
|
||||
if (sh->sh_default == 0) /* no default occurred yet */
|
||||
sh->sh_default = sh->sh_break;
|
||||
|
@ -111,8 +100,9 @@ code_endswitch()
|
|||
/* CSA */
|
||||
register arith val;
|
||||
|
||||
C_rom_cst(sh->sh_lowerbd);
|
||||
C_rom_cst(sh->sh_upperbd - sh->sh_lowerbd);
|
||||
C_rom_icon(long2str((long)sh->sh_lowerbd,10), size);
|
||||
C_rom_icon(long2str((long)(sh->sh_upperbd - sh->sh_lowerbd),10),
|
||||
size);
|
||||
ce = sh->sh_entries;
|
||||
if (sh->sh_nrofentries)
|
||||
for (val = sh->sh_lowerbd; val <= sh->sh_upperbd; val++) {
|
||||
|
@ -125,17 +115,17 @@ code_endswitch()
|
|||
C_rom_ilb(sh->sh_default);
|
||||
}
|
||||
C_lae_dlb(tablabel, (arith)0); /* perform the switch */
|
||||
C_csa(sh->sh_type->tp_size);
|
||||
C_csa(size);
|
||||
}
|
||||
else { /* CSB */
|
||||
C_rom_cst((arith)sh->sh_nrofentries);
|
||||
C_rom_icon(long2str((long)sh->sh_nrofentries,10),size);
|
||||
for (ce = sh->sh_entries; ce; ce = ce->next) {
|
||||
/* generate the entries: value + prog.label */
|
||||
C_rom_cst(ce->ce_value);
|
||||
C_rom_icon(long2str((long)ce->ce_value,10),size);
|
||||
C_rom_ilb(ce->ce_label);
|
||||
}
|
||||
C_lae_dlb(tablabel, (arith)0); /* perform the switch */
|
||||
C_csb(sh->sh_type->tp_size);
|
||||
C_csb(size);
|
||||
}
|
||||
C_df_ilb(sh->sh_break);
|
||||
switch_stack = sh->next; /* unstack the switch descriptor */
|
||||
|
@ -168,7 +158,7 @@ code_case(expr)
|
|||
C_df_ilb(ce->ce_label = text_label());
|
||||
ce->ce_value = val = expr->VL_VALUE;
|
||||
if (sh->sh_entries == 0) { /* first case entry */
|
||||
ce->next = (struct case_entry *) 0;
|
||||
/* ce->next = (struct case_entry *) 0; */
|
||||
sh->sh_entries = ce;
|
||||
sh->sh_lowerbd = sh->sh_upperbd = val;
|
||||
sh->sh_nrofentries = 1;
|
||||
|
|
Loading…
Reference in a new issue