#include #include #include #include #include int main(int argc, char **argv) { assert(argc == 2); struct program program = libdietc_parse(argv[1]); for (struct function *f = program.functions; f; f = f->next) { for (struct instruction *i = f->instructions; i; i = i->next) { if (strncmp(i->line, "\tType_", strlen("\tType_"))) continue; char *name = libdietc_tokdup(strchrnul(i->line, ' ') + 1); struct instruction *n = calloc(1, sizeof(*n)); n->line = malloc(strlen(name) + 512); sprintf(n->line, "memset(&%s, 0, sizeof(%s));", name, name); n->next = i->next; i->next = n; i = n; } } libdietc_print(program); return 0; }