1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: */
6:
7: #ifndef lint
8: static char sccsid[] = "@(#)tfree.c 5.1 (Berkeley) 6/6/85";
9: #endif not lint
10:
11: /*
12: * Free a tree; this is expensive but useful.
13: */
14:
15: #include "defs.h"
16: #include "tree.h"
17: #include "sym.h"
18: #include "tree.rep"
19:
20: tfree(p)
21: register NODE *p;
22: {
23: if (p == NIL) {
24: return;
25: }
26: switch(degree(p->op)) {
27: case LEAF:
28: switch(p->op) {
29: case O_CALL:
30: tfree(p->left);
31: tfree(p->right);
32: break;
33:
34: case O_QLINE:
35: dispose(p->left->sconval);
36: dispose(p->left);
37: tfree(p->right);
38: break;
39:
40: case O_ALIAS:
41: dispose(p->left->sconval);
42: dispose(p->left);
43: dispose(p->right->sconval);
44: dispose(p->right);
45: break;
46:
47: case O_SCON:
48: unmkstring(p->nodetype);
49: free(p->nodetype);
50: free(p->sconval);
51: p->sconval = NIL;
52: break;
53: }
54: break;
55:
56: case BINARY:
57: tfree(p->right);
58: /* fall through */
59: case UNARY:
60: tfree(p->left);
61: break;
62:
63: default:
64: panic("bad op %d in tfree", p->op);
65: }
66: dispose(p);
67: }
Defined functions
tfree
defined in line
20; used 8 times
Defined variables
sccsid
defined in line
8;
never used