/* call block as prefix ir node */
if ((wif->do_node) &&
- (wif->flags & FW_DUMP_BLOCK_AS_IRN & !FW_DUMP_IRN_IN_PREFIX))
+ (wif->flags & (FW_DUMP_BLOCK_AS_IRN | FW_DUMP_IRN_IN_PREFIX)))
wif->do_node(block, wif->env);
/* do ir nodes in prefix or postfix order? */
}
/* call block as postfix ir node */
if ((wif->do_node) &&
- (wif->flags & (FW_DUMP_BLOCK_AS_IRN | FW_DUMP_IRN_IN_PREFIX)))
+ ((wif->flags & (FW_DUMP_BLOCK_AS_IRN | FW_DUMP_IRN_IN_PREFIX))
+ == FW_DUMP_BLOCK_AS_IRN))
wif->do_node(block, wif->env);
/* wall over all block's ir nodes nested end =============== */
- if (wif->do_block_finalize) wif->do_block_finalize(current_ir_graph, wif->env);
+ if(wif->do_block_post)
+ wif->do_block_post(block, wif->env);
+
} /* for each block */
+ if (wif->do_block_finalize)
+ wif->do_block_finalize(current_ir_graph, wif->env);
+
/* walk over all irg's block nested end ====================== */
+ if(wif->do_graph_post)
+ wif->do_graph_post(current_ir_graph, wif->env);
} /* for each ir graph irg */
- if (wif->do_graph_finalize) wif->do_graph_finalize(wif->env);
+
+ if(wif->do_graph_finalize)
+ wif->do_graph_finalize(wif->env);
/** ### ToDo: Dump const_code_irg ?? No! Dump const code with entities, types etc. */
*
* The firm walker dump a graph with its blocks and nodes nested.
* Fist do_graph_init will be called (if defined). For each graph
- * do_graph will be call in a loop. After dumped all graphs,
- * do_graph_finalize will be called.
+ * do_graph will be call in a loop.
+ * After all blocks in a graph are dumped, do_graph_post() is called.
+ * After dumped all graphs, do_graph_finalize will be called.
*
* Within do_graph each block will be dumped. First do_block_init,
* for each block do_block and after all dumped blocks
* walking flag, a prefix order is also possible. */
firm_walk_init_func *do_graph_init;
firm_walk_graph_func *do_graph;
+ firm_walk_graph_func *do_graph_post;
firm_walk_finalize_func *do_graph_finalize;
/* @{ */
* @see do_graph */
firm_walk_block_init_func *do_block_init;
firm_walk_block_func *do_block;
+ firm_walk_block_func *do_block_post;
firm_walk_block_finalize_func *do_block_finalize;
/* @} */