aboutsummaryrefslogtreecommitdiff
path: root/node.c
diff options
context:
space:
mode:
Diffstat (limited to 'node.c')
-rw-r--r--node.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/node.c b/node.c
index 3e7d945..dd0e3bb 100644
--- a/node.c
+++ b/node.c
@@ -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);