https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69013
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|error-recovery | Status|NEW |ASSIGNED CC| |xinliangli at gmail dot com Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Summary|[5 Regression] |[5/6 Regression] |gfortran-5.3.0 ICE in |gfortran-5.3.0 ICE in |prune_uninit_phi_opnds_in_u |prune_uninit_phi_opnds_in_u |nrealizable_paths, at |nrealizable_paths, at |tree-ssa-uninit.c:1121 |tree-ssa-uninit.c:1121 --- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- I dont' know the code good enough but the assert might be bogus? Thus Index: gcc/tree-ssa-uninit.c =================================================================== --- gcc/tree-ssa-uninit.c (revision 231672) +++ gcc/tree-ssa-uninit.c (working copy) @@ -1118,14 +1118,16 @@ prune_uninit_phi_opnds_in_unrealizable_p edge opnd_edge; unsigned uninit_opnds2 = compute_uninit_opnds_pos (opnd_def_phi); - gcc_assert (!MASK_EMPTY (uninit_opnds2)); - opnd_edge = gimple_phi_arg_edge (phi, i); - if (!is_use_properly_guarded (phi, - opnd_edge->src, - opnd_def_phi, - uninit_opnds2, - visited_phis)) - return false; + if (!MASK_EMPTY (uninit_opnds2)) + { + opnd_edge = gimple_phi_arg_edge (phi, i); + if (!is_use_properly_guarded (phi, + opnd_edge->src, + opnd_def_phi, + uninit_opnds2, + visited_phis)) + return false; + } } else return false; "fixes" it. Marking as 6 regression as well because it's clearly only latent. A smaller testcase for easier investigation would be nice. Not sure if David is still around...