X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Ffirmwalk.c;h=30019c0e7fb282d35e4baf46be838c1d0fbb8590;hb=98ca7e71bc79bb2a3b2ccb039df78000fc48e70a;hp=efb05ad004bbf500f9787e657afbd3bcad486e91;hpb=dddcc630819f338c3b45e2bc646233e6872d5bb6;p=libfirm diff --git a/ir/common/firmwalk.c b/ir/common/firmwalk.c index efb05ad00..30019c0e7 100644 --- a/ir/common/firmwalk.c +++ b/ir/common/firmwalk.c @@ -11,10 +11,12 @@ */ #ifdef HAVE_CONFIG_H -# include +# include "config.h" #endif -#include +#ifdef HAVE_STRING_H +# include +#endif #include "firmwalk.h" @@ -469,7 +471,7 @@ void firm_walk(firm_walk_interface *wif) /* 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? */ @@ -490,18 +492,28 @@ void firm_walk(firm_walk_interface *wif) } /* 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. */