Commit e32ef434 authored by Christian Würdig's avatar Christian Würdig
Browse files

added function get nodes nodes live at another including the node inputs

parent 1acb2d4d
...@@ -734,3 +734,18 @@ pset *be_liveness_nodes_live_at(const be_lv_t *lv, const arch_env_t *arch_env, c ...@@ -734,3 +734,18 @@ pset *be_liveness_nodes_live_at(const be_lv_t *lv, const arch_env_t *arch_env, c
return live; return live;
} }
pset *be_liveness_nodes_live_at_input(const be_lv_t *lv, const arch_env_t *arch_env, const arch_register_class_t *cls, const ir_node *pos, pset *live)
{
const ir_node *bl = is_Block(pos) ? pos : get_nodes_block(pos);
ir_node *irn;
be_liveness_end_of_block(lv, arch_env, cls, bl, live);
sched_foreach_reverse(bl, irn) {
be_liveness_transfer(arch_env, cls, irn, live);
if(irn == pos)
return live;
}
return live;
}
...@@ -145,6 +145,8 @@ pset *be_liveness_end_of_block(const be_lv_t *lv, const arch_env_t *arch_env, co ...@@ -145,6 +145,8 @@ pset *be_liveness_end_of_block(const be_lv_t *lv, const arch_env_t *arch_env, co
/** /**
* Compute a set of nodes which are live at another node. * Compute a set of nodes which are live at another node.
* BEWARE: This is the liveness immediately after the node,
* so the node itself is alive but it's operands maybe not.
* @param arch_env The architecture environment. * @param arch_env The architecture environment.
* @param cls The register class to consider. * @param cls The register class to consider.
* @param pos The node. * @param pos The node.
...@@ -153,6 +155,18 @@ pset *be_liveness_end_of_block(const be_lv_t *lv, const arch_env_t *arch_env, co ...@@ -153,6 +155,18 @@ pset *be_liveness_end_of_block(const be_lv_t *lv, const arch_env_t *arch_env, co
*/ */
pset *be_liveness_nodes_live_at(const be_lv_t *lv, const arch_env_t *arch_env, const arch_register_class_t *cls, const ir_node *pos, pset *live); pset *be_liveness_nodes_live_at(const be_lv_t *lv, const arch_env_t *arch_env, const arch_register_class_t *cls, const ir_node *pos, pset *live);
/**
* Compute a set of nodes which are live at another node.
* BEWARE: This is the liveness immediately before the node,
* so the node itself is not alive but it's operands are.
* @param arch_env The architecture environment.
* @param cls The register class to consider.
* @param pos The node.
* @param live The set to put them into.
* @return live.
*/
pset *be_liveness_nodes_live_at_input(const be_lv_t *lv, const arch_env_t *arch_env, const arch_register_class_t *cls, const ir_node *pos, pset *live);
/** /**
* FIXME: Need comment * FIXME: Need comment
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment