Data Fields | |
int | cost |
cost of this node in temp vars More... | |
struct set_s * | identifiers |
set of identifiers attached to this node More... | |
unsigned | killed:1 |
node is unavailable for cse More... | |
daglabel_t * | label |
ident/const if leaf node, or operator More... | |
struct dagnode_s * | next |
int | number |
index into array of nodes in dag_t More... | |
struct set_s * | parents |
empty if root node More... | |
etype_t | tl |
int | topo |
topological sort order More... | |
st_type_t | type |
type of node (st_node = leaf) More... | |
struct operand_s * | value |
operand holding the value of this node More... | |
child nodes | |
if children[0] is null, the rest must be null as well. Similar for children[1]. edges is the set of all nodes upon which this node depends. ie, they must be evaluated before this node is evaluted. So while nodes in edges may not be true children of this node, they are effective children in the DAG. That is, edges is for producing a correct topological sort of the DAG. | |
struct dagnode_s * | children [3] |
etype_t | types [3] |
desired type of each operand (to alias) More... | |
struct set_s * | edges |
includes nodes pointed to by children More... | |
struct dagnode_s* children[3] |
int cost |
cost of this node in temp vars
struct set_s* edges |
includes nodes pointed to by children
struct set_s* identifiers |
set of identifiers attached to this node
unsigned killed |
node is unavailable for cse
daglabel_t* label |
ident/const if leaf node, or operator
struct dagnode_s* next |
int number |
index into array of nodes in dag_t
struct set_s* parents |
empty if root node
etype_t tl |
int topo |
topological sort order
st_type_t type |
type of node (st_node = leaf)
etype_t types[3] |
desired type of each operand (to alias)
struct operand_s* value |
operand holding the value of this node