codea: immediate values gehen auch fuer subtraktion
[uebersetzerbau-ss10.git] / codea / tree.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include "tree.h"
4
5 #if 1
6 #define DDTREE
7 #endif
8
9 static struct treenode *_new_plain(int op)
10 {
11         struct treenode *new = (TREECAST) malloc(TREESIZE);
12         new->op = op;
13         new->kids[0] = new->kids[1] = TREENULL;
14         new->parent = TREENULL;
15         new->label = NULL;
16         new->name = new->reg = (char *)NULL;
17         new->val = new->skip = 0;
18         new->param_index = -1;
19         return new;
20 }
21
22 struct treenode *new_node(int op, struct treenode *l, struct treenode *r)
23 {
24         struct treenode *new = _new_plain(op);
25
26 #ifdef DDTREE
27         fprintf(stderr, "new_node: %i (%s)\n", op, o_names[op]);
28 #endif
29
30         new->kids[0] = l;
31         new->kids[1] = r;
32         new->name = (char *)NULL;
33         return new;
34 }
35
36 struct treenode *new_number(long val)
37 {
38         struct treenode *new = _new_plain(O_NUM);
39 #ifdef DDTREE
40         fprintf(stderr, "new_number: %i\n", val);
41 #endif
42         new->val = val;
43         return new;
44 }
45