+ if (produced == produces_zero_in_carry) {
+ /* patch users to look at the carry instead of the zero flag */
+ foreach_out_edge(node, edge) {
+ ir_node *user = get_edge_src_irn(edge);
+ ia32_condition_code_t cc = get_ia32_condcode(user);
+
+ switch (cc) {
+ case ia32_cc_equal: cc = ia32_cc_above_equal; break;
+ case ia32_cc_not_equal: cc = ia32_cc_below; break;
+ default: panic("unexpected pn");
+ }
+ set_ia32_condcode(user, cc);
+ }