diff options
Diffstat (limited to 'node.c')
-rw-r--r-- | node.c | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -13,6 +13,7 @@ struct node* node_make_0(enum node_type type) { node->name = NULL; node->value = 0; node->oper = -1; + node->irins = NULL; node->valuetype = NULL; return node; } @@ -61,6 +62,7 @@ void node_delete_recursive(struct node *node) { if (node->child2) node_delete_recursive(node->child2); if (node->child3) node_delete_recursive(node->child3); if (node->name) free(node->name); + if (node->irins) irins_delete(node->irins); free(node); } @@ -85,6 +87,7 @@ const char* node_type_string(enum node_type type) { case N_BINOP: return "N_BINOP"; break; case N_UNOP: return "N_UNOP"; break; case N_CALL: return "N_CALL"; break; + case N_IRINS: return "N_IRINS"; break; default: assert(false); } } @@ -114,6 +117,10 @@ const char* oper_string(enum operator oper) { void node_print(const struct node *node, FILE *f, int indent) { const char *t = node_type_string(node->type); fprintf(f, "(%s", t); + if (node->irins) { + fprintf(f, " "); + irins_print(node->irins, f); + } if (node->rtype) { fprintf(f, "[rtype="); type_print(node->rtype, f); |