#define DDTREE
#endif
-struct treenode *new_node(int op, struct treenode *l, struct treenode *r)
+static struct treenode *_new_plain(int op)
{
struct treenode *new = (TREECAST) malloc(TREESIZE);
+ new->op = op;
+ new->kids[0] = new->kids[1] = TREENULL;
+ new->parent = TREENULL;
+ new->label = NULL;
+ new->name = new->reg = (char *)NULL;
+ new->val = new->skip = 0;
+ new->param_index = -1;
+ return new;
+}
+
+struct treenode *new_node(int op, struct treenode *l, struct treenode *r)
+{
+ struct treenode *new = _new_plain(op);
#ifdef DDTREE
fprintf(stderr, "new_node: %i (%s)\n", op, o_names[op]);
new->kids[0] = l;
new->kids[1] = r;
- new->op = op;
new->name = (char *)NULL;
return new;
}
+struct treenode *new_number(long val)
+{
+ struct treenode *new = _new_plain(O_NUM);
+#ifdef DDTREE
+ fprintf(stderr, "new_number: %i\n", val);
+#endif
+ new->val = val;
+ return new;
+}
+