X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fboolopt.c;h=e1d70eb77272e83f82329a727d26b94272e318f8;hb=3db23eee84cbabb3f399f1ca820948114a9c837c;hp=1ca652717ec2f9f8dfded0c46038c3c3a30a9b77;hpb=7a483ab981d403222150c320242adaad13d60af9;p=libfirm diff --git a/ir/opt/boolopt.c b/ir/opt/boolopt.c index 1ca652717..e1d70eb77 100644 --- a/ir/opt/boolopt.c +++ b/ir/opt/boolopt.c @@ -583,8 +583,6 @@ restart: ir_node *lower_block; ir_node *lower_cf; ir_node *cond; - ir_node *cond_selector; - ir_node *lower_pred; lower_cf = get_Block_cfgpred(block, low_idx); lower_cf = skip_empty_blocks(lower_cf); @@ -603,17 +601,11 @@ restart: if (get_Block_mark(lower_block)) continue; - cond_selector = get_Cond_selector(cond); - if (get_irn_mode(cond_selector) != mode_b) - continue; - - lower_pred = get_Block_cfgpred_block(lower_block, 0); - + ir_node *const cond_selector = get_Cond_selector(cond); + ir_node *const lower_pred = get_Block_cfgpred_block(lower_block, 0); for (up_idx = 0; up_idx < n_cfgpreds; ++up_idx) { ir_node *upper_block; ir_node *upper_cf; - ir_node *upper_cond; - ir_node *upper_cond_selector; ir_node *replacement; cond_pair cpair; @@ -627,13 +619,6 @@ restart: if (!block_dominates(upper_block, block)) continue; - assert(is_Proj(upper_cf)); - upper_cond = get_Proj_pred(upper_cf); - assert(is_Cond(upper_cond)); - upper_cond_selector = get_Cond_selector(upper_cond); - if (get_irn_mode(upper_cond_selector) != mode_b) - continue; - /* we have found the structure */ /* check Phis: There must be NO Phi in block that depends on the existence of low block */ @@ -641,11 +626,13 @@ restart: continue; /* all fine, try it */ + ir_node *const upper_cond = get_Proj_pred(upper_cf); + ir_node *const upper_cond_selector = get_Cond_selector(upper_cond); if (!find_cond_pair(cond_selector, upper_cond_selector, &cpair)) continue; /* normalize pncs: we need the true case to jump into the - * common block (ie. conjunctive normal form) */ + * common block (i.e. conjunctive normal form) */ if (get_Proj_proj(lower_cf) == pn_Cond_false) { if (cpair.cmp_lo == cond_selector) { ir_node *cmp = cpair.cmp_lo;