return;
}
- while (du && du->du_fund != FUNCTION)
+ while (du
+ && (du->du_fund != FUNCTION
+ || du->next != (struct decl_unary *) 0)) {
du = du->next;
+ }
if (!du) return; /* terrible error, signalled earlier */
if (du->du_proto) return;
return tg;
}
+
declare_protos(dc)
register struct declarator *dc;
{
dumpidftab("start declare_protos", 0);
#endif DEBUG
du = dc->dc_decl_unary;
- while (du && du->du_fund != FUNCTION)
+ while (du) {
+ if (du->du_fund == FUNCTION) {
+ if (du->next != (struct decl_unary *) 0) {
+ remove_proto_idfs(du->du_proto);
+ du->du_proto = 0;
+ } else break;
+ }
du = du->next;
+ }
pl = du ? du->du_proto : NO_PROTO;
if (pl) {
#if 0 /* the id_proto member is deleted (???) */
if (!dtp) {
dtp = create_type(FUNCTION);
dtp->tp_up = tp;
- /* dtp->tp_size = pointer_size; ??? */
dtp->tp_size = -1; /* function size is not known */
dtp->tp_align = pointer_align;
dtp->tp_typequal = qual;