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...

Reply via email to