new->parent = TREENULL;
new->label = NULL;
new->name = new->reg = (char *)NULL;
- new->val = new->skip = 0;
+ new->val = new->skip = new->exprcount = 0;
new->param_index = -1;
return new;
}
-struct treenode *new_node(int op, struct treenode *l, struct treenode *r)
+struct treenode *new_node(int op, struct treenode *l, struct treenode *r, int exprcount)
{
struct treenode *new = _new_plain(op);
new->kids[0] = l;
new->kids[1] = r;
new->name = (char *)NULL;
+ new->exprcount = exprcount;
return new;
}
-struct treenode *new_param(int op, struct treenode *l, struct treenode *r, int param_index)
+struct treenode *new_param(int op, struct treenode *l, struct treenode *r, int param_index, int exprcount)
{
- struct treenode *new = new_node(op, l, r);
+ struct treenode *new = new_node(op, l, r, exprcount);
#ifdef DDTREE
fprintf(stderr, "new_param: %i (index)\n", param_index);
return new;
}
-struct treenode *new_number(long val)
+struct treenode *new_number(long val, int exprcount)
{
struct treenode *new = _new_plain(O_NUM);
#ifdef DDTREE
fprintf(stderr, "new_number: %i\n", val);
#endif
new->val = val;
+ new->exprcount = exprcount;
return new;
}
void write_tree(struct treenode *node, int indent)
{
write_indent(indent);
- fprintf(stderr, "%s @ %%%s\n", o_names[node->op], node->reg);
+ fprintf(stderr, "%s @ %%%s (%i)\n", o_names[node->op], node->reg, node->exprcount);
if(node->kids[0] != TREENULL) {
write_tree(node->kids[0], indent+1);
}