bad blocks have cf_probability 0
authorMatthias Braun <matze@braunis.de>
Mon, 1 Dec 2008 13:54:47 +0000 (13:54 +0000)
committerMatthias Braun <matze@braunis.de>
Mon, 1 Dec 2008 13:54:47 +0000 (13:54 +0000)
[r24186]

ir/ana/execfreq.c

index e312cd3..c6cbf1e 100644 (file)
@@ -181,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) {