foreach_out_edge(irn, edge) {
ir_node *desc = get_edge_src_irn(edge);
foreach_out_edge(irn, edge) {
ir_node *desc = get_edge_src_irn(edge);
obstack_ptr_grow(&env->obst, desc);
bitset_add_irn(visited, desc);
}
obstack_ptr_grow(&env->obst, desc);
bitset_add_irn(visited, desc);
}
foreach_out_edge_kind(irn, edge, EDGE_KIND_DEP) {
ir_node *desc = get_edge_src_irn(edge);
foreach_out_edge_kind(irn, edge, EDGE_KIND_DEP) {
ir_node *desc = get_edge_src_irn(edge);
obstack_ptr_grow(&env->obst, desc);
bitset_add_irn(visited, desc);
}
obstack_ptr_grow(&env->obst, desc);
bitset_add_irn(visited, desc);
}
const ir_edge_t *edge;
foreach_out_edge(irn, edge) {
ir_node *desc = get_edge_src_irn(edge);
const ir_edge_t *edge;
foreach_out_edge(irn, edge) {
ir_node *desc = get_edge_src_irn(edge);
foreach_out_edge(env->bl, edge) {
ir_node *irn = get_edge_src_irn(edge);
foreach_out_edge(env->bl, edge) {
ir_node *irn = get_edge_src_irn(edge);
/* search the highest node which is not yet in a lineage. */
foreach_ir_nodeset(&nodes, irn, iter) {
unsigned height = get_irn_height(env->heights, irn);
/* search the highest node which is not yet in a lineage. */
foreach_ir_nodeset(&nodes, irn, iter) {
unsigned height = get_irn_height(env->heights, irn);
lowest_desc = put_lowest_in_front(env, in);
/* as long as the current highest node has still descendants */
lowest_desc = put_lowest_in_front(env, in);
/* as long as the current highest node has still descendants */
mris_irn_t *lowest_mi = get_mris_irn(env, lowest_desc);
mris_irn_t *highest_mi = get_mris_irn(env, highest_node);
mris_irn_t *lowest_mi = get_mris_irn(env, lowest_desc);
mris_irn_t *highest_mi = get_mris_irn(env, highest_node);
int n_desc;
DBG((dbg, LEVEL_2, "\tlowest descendant %+F height %d\n", lowest_desc, get_irn_height(env->heights, lowest_desc)));
/* count the number of all descendants which are not the lowest descendant */
int n_desc;
DBG((dbg, LEVEL_2, "\tlowest descendant %+F height %d\n", lowest_desc, get_irn_height(env->heights, lowest_desc)));
/* count the number of all descendants which are not the lowest descendant */
/*
we insert a CopyKeep node to express the artificial dependencies from the lowest
descendant to all other descendants.
*/
/*
we insert a CopyKeep node to express the artificial dependencies from the lowest
descendant to all other descendants.
*/
- for(i = 0, n = get_irn_ins_or_deps(lowest_desc); i < n; ++i) {
- ir_node *cmp;
-
- op = get_irn_in_or_dep(lowest_desc, i);
- cmp = highest_is_tuple ? skip_Projs(op) : op;
-
- // if(cmp == highest_node)
- if(op == highest_node)
+ for (i = 0, n = get_irn_ins_or_deps(lowest_desc); i < n; ++i) {
+ op = get_irn_in_or_dep(lowest_desc, i);
+ if (op == highest_node)
break;
}
assert(i < n && "could not find operand");
//replace_tuple_by_repr_proj(env, &in[1]);
break;
}
assert(i < n && "could not find operand");
//replace_tuple_by_repr_proj(env, &in[1]);
add_irn_dep(lowest_desc, in[1]);
}
obstack_free(&env->obst, in);
/* if the current lowest node is not yet in a lineage, add it to the current one. */
add_irn_dep(lowest_desc, in[1]);
}
obstack_free(&env->obst, in);
/* if the current lowest node is not yet in a lineage, add it to the current one. */
/* mark the current lowest node as the last one in the lineage. */
highest_mi->lineage_next = lowest_desc;
start_mi->lineage_end = lowest_desc;
/* mark the current lowest node as the last one in the lineage. */
highest_mi->lineage_next = lowest_desc;
start_mi->lineage_end = lowest_desc;
return 0;
/* set lineage end of nodes in u to end of v. */
irn = last = u->lineage_start;
mi = get_mris_irn(env, irn);
return 0;
/* set lineage end of nodes in u to end of v. */
irn = last = u->lineage_start;
mi = get_mris_irn(env, irn);
mi = get_mris_irn(env, irn);
mi->lineage_end = v->lineage_end;
last = irn;
mi = get_mris_irn(env, irn);
mi->lineage_end = v->lineage_end;
last = irn;
- if(get_irn_mode(last) == mode_T) {
- const ir_edge_t *edge;
- foreach_out_edge(last, edge) {
- last = get_edge_src_irn(edge);
- break;
- }
+ if (get_irn_mode(last) == mode_T) {
+ const ir_edge_t *edge = get_irn_out_edge_first(last);
+ last = get_edge_src_irn(edge);
mris_irn_t *mi = get_mris_irn(env, irn);
mi->lineage_start = u->lineage_start;
irn = mi->lineage_next;
mris_irn_t *mi = get_mris_irn(env, irn);
mi->lineage_start = u->lineage_start;
irn = mi->lineage_next;
again:
foreach_lineage(env, u, tmp1) {
foreach_lineage(env, v, tmp2) {
again:
foreach_lineage(env, u, tmp1) {
foreach_lineage(env, v, tmp2) {
&& get_nodes_block(u->lineage_start) == get_nodes_block(v->lineage_start)) {
int uv = heights_reachable_in_block(env->heights, u->lineage_start, v->lineage_end);
int vu = heights_reachable_in_block(env->heights, v->lineage_start, u->lineage_end);
&& get_nodes_block(u->lineage_start) == get_nodes_block(v->lineage_start)) {
int uv = heights_reachable_in_block(env->heights, u->lineage_start, v->lineage_end);
int vu = heights_reachable_in_block(env->heights, v->lineage_start, u->lineage_end);
fprintf(F, "edge:{sourcename:\"");
PRINT_NODEID(mi->lineage_next);
fprintf(F, "\" targetname:\"");
fprintf(F, "edge:{sourcename:\"");
PRINT_NODEID(mi->lineage_next);
fprintf(F, "\" targetname:\"");
- phase_init(&env->ph, "mris", irg, 2 * PHASE_DEFAULT_GROWTH, mris_irn_data_init, NULL);
+ phase_init(&env->ph, irg, mris_irn_data_init);