https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124651

--- Comment #10 from Heiko Eißfeldt <heiko at hexco dot de> ---
Thanks a lot! With your comments I could replace the recursion and passed the
Winfinite-recursion* tests from the testsuite.

>From debugging a core dump I found another place where recursion over many BBs
occurs.
this is from tree-ssa.cc in function verify_vssa()

```
/* Verify virtual SSA form.  */

bool
verify_vssa (basic_block bb, tree current_vdef, sbitmap visited)
{
...
  /* Verify destination PHI uses and recurse.  */
  edge_iterator ei;
  edge e;
  FOR_EACH_EDGE (e, ei, bb->succs)
    {
      gphi *phi = get_virtual_phi (e->dest);
      if (phi
          && PHI_ARG_DEF_FROM_EDGE (phi, e) != current_vdef)
        {
          error ("PHI node with wrong VUSE on edge from BB %d",
                 e->src->index);
          print_gimple_stmt (stderr, phi, 0, TDF_VOPS);
          fprintf (stderr, "expected ");
          print_generic_expr (stderr, current_vdef);
          fprintf (stderr, "\n");
          err = true;
        }

      /* Recurse.  */
      err |= verify_vssa (e->dest, current_vdef, visited);
    }

  return err;
}
```

Would this also be easy to transform?

Reply via email to