https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83296
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2017-12-07 Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Happens because: /* Create an SSA var to hold the min/max result. If we're the only things setting the target PHI, then we can clone the PHI variable. Otherwise we must create a new one. */ result = PHI_RESULT (phi); if (EDGE_COUNT (gimple_bb (phi)->preds) == 2) result = duplicate_ssa_name (result, NULL); else result = make_ssa_name (TREE_TYPE (result)); /* Emit the statement to compute min/max. */ new_stmt = gimple_build_assign (result, minmax, arg0, arg1); gsi = gsi_last_bb (cond_bb); gsi_insert_before (&gsi, new_stmt, GSI_NEW_STMT); replace_phi_edge_with_variable (cond_bb, e1, phi, result); ok until here but then: reset_flow_sensitive_info_in_bb (cond_bb); added by r228341. I don't see immediately why we need that - it resets flow-sensitive info in the BB of the conditional not in a block only dominated by the true/false edge. I have a patch.