void flow_fold(stmt_flow *flow, symtable **pstab) { if(flow){ decl **i; *pstab = flow->for_init_symtab; fold_shadow_dup_check_block_decls(*pstab); /* sanity check on _flow_ vars only */ for(i = symtab_decls(*pstab); i && *i; i++){ decl *const d = *i; switch((enum decl_storage)(d->store & STORE_MASK_STORE)){ case store_auto: case store_default: case store_register: break; default: die_at(&d->where, "%s variable in statement-initialisation", decl_store_to_str(d->store)); } /* block decls/for-init decls must be complete */ fold_check_decl_complete(d); if(d->bits.var.init.expr) FOLD_EXPR(d->bits.var.init.expr, *pstab); } } }
void gen_dump(symtable_global *globs) { dump dump = { 0 }; symtable_gasm **iasm = globs->gasms; decl **diter; dump.fout = stdout; for(diter = symtab_decls(&globs->stab); diter && *diter; diter++){ decl *d = *diter; while(iasm && d == (*iasm)->before){ dump_gasm(*iasm, &dump); if(!*++iasm) iasm = NULL; } dump_decl(d, &dump, NULL); } }