+ }
+ } else {
+ long num = get_Proj_proj(proj);
+ if (num != get_Cond_default_proj(n) && b->vrp.valid) {
+ /* Try handling with vrp data. We only remove dead parts. */
+ tarval *tp = new_tarval_from_long(num, get_irn_mode(b));
+
+ if (b->vrp.range_type == VRP_RANGE) {
+ pn_Cmp cmp_result = tarval_cmp(b->vrp.range_bottom, tp);
+ pn_Cmp cmp_result2 = tarval_cmp(b->vrp.range_top, tp);
+
+ if ((cmp_result & pn_Cmp_Lt) == cmp_result && (cmp_result2
+ & pn_Cmp_Gt) == cmp_result2) {
+ return get_irg_bad(current_ir_graph);
+ }
+ } else if (b->vrp.range_type == VRP_ANTIRANGE) {
+ pn_Cmp cmp_result = tarval_cmp(b->vrp.range_bottom, tp);
+ pn_Cmp cmp_result2 = tarval_cmp(b->vrp.range_top, tp);
+
+ if ((cmp_result & pn_Cmp_Ge) == cmp_result && (cmp_result2
+ & pn_Cmp_Le) == cmp_result2) {
+ return get_irg_bad(current_ir_graph);
+ }
+ }
+
+ if (!(tarval_cmp(
+ tarval_and( b->vrp.bits_set, tp),
+ b->vrp.bits_set
+ ) == pn_Cmp_Eq)) {
+
+ return get_irg_bad(current_ir_graph);
+ }
+
+ if (!(tarval_cmp(
+ tarval_and(
+ tarval_not(tp),
+ b->vrp.bits_not_set),
+ b->vrp.bits_not_set)
+ == pn_Cmp_Eq)) {
+
+ return get_irg_bad(current_ir_graph);
+ }
+
+