X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Fexecfreq.c;h=c6cbf1ecc85cb065620a10dd3a962e0f303348c6;hb=2627a1884cc59bacf6b778cc6e9c3d0b992575a7;hp=41909a6843cfb7df6314d753d021db1797ce71d5;hpb=e07b61c6ed5d198a484761f8a40a4f26520d964d;p=libfirm diff --git a/ir/ana/execfreq.c b/ir/ana/execfreq.c index 41909a684..c6cbf1ecc 100644 --- a/ir/ana/execfreq.c +++ b/ir/ana/execfreq.c @@ -24,9 +24,7 @@ * @date 28.05.2006 * @version $Id$ */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif #include #include @@ -183,13 +181,19 @@ solve_lgs(gs_matrix_t *mat, double *x, int size) static double get_cf_probability(ir_node *bb, int pos, double loop_weight) { - double sum = 0.0; - double cur = 0.0; - const ir_node *pred = get_Block_cfgpred_block(bb, pos); - const ir_loop *pred_loop = get_irn_loop(pred); - int pred_depth = get_loop_depth(pred_loop); + double sum = 0.0; + double cur = 0.0; + const ir_node *pred = get_Block_cfgpred_block(bb, pos); + const ir_loop *pred_loop; + int pred_depth; const ir_edge_t *edge; + if (is_Bad(pred)) + return 0; + + pred_loop = get_irn_loop(pred); + pred_depth = get_loop_depth(pred_loop); + cur = get_loop_depth(get_irn_loop(bb)) < get_loop_depth(get_irn_loop(pred)) ? 1.0 : loop_weight; foreach_block_succ(pred, edge) {