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

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Note we have an abnormal edge from BB2 to the abnormal dispatcher (missed
optimization, we should get rid of it), but the last stmts in the abnormal
edge sources are debug vs. non-debug stmts (but neither are calls which
are the only sources of abnormal control flow - thus the missed optimization,
to be rectified in CFG cleanup I guess or some pass missing to call
abnormal cleanup - that would be IPA inlining in this case).

int foo ()
{
;;   basic block 2, loop depth 0
;;    pred:       ENTRY
  # DEBUG BEGIN_STMT
  # DEBUG INLINE_ENTRY bar
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  n = 0;
  # DEBUG BEGIN_STMT
  # DEBUG a => 0
  # DEBUG BEGIN_STMT
;;    succ:       3
;;                5

;;   basic block 3, loop depth 0
;;    pred:       2
  n = 1;
  # DEBUG BEGIN_STMT
;;    succ:       4

;;   basic block 4, loop depth 0
;;    pred:       3
;;                5
  # DEBUG BEGIN_STMT
  return 0;
;;    succ:       EXIT

;;   basic block 5, loop depth 0
;;    pred:       2
  .ABNORMAL_DISPATCHER (0);
;;    succ:       4

Reply via email to