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

--- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> ---
What we do:

a ()
{
  int b;
  int b.0_1;

  <bb 2> [100.00%] [count: INV]:
  __builtin_setjmp_setup (0B, &<L0>);
  goto <bb 8>; [99.96%] [count: INV]

  <bb 3> [0.12%] [count: INV]:
<L0>:
  __builtin_setjmp_receiver (&<L0>);
  goto <bb 5>; [100.00%] [count: INV]

  <bb 4> [0.12%] [count: INV]:
  # b_12(ab) = PHI <b_14(D)(ab)(2), b_13(ab)(5), b_15(ab)(6)>
  __builtin___asan_handle_no_return ();
  ABNORMAL_DISPATCHER (0);

  <bb 8> [99.96%] [count: INV]:

  <bb 5> [99.96%] [count: INV]:
  # b_13(ab) = PHI <b_12(ab)(3), b_14(D)(ab)(8)>
  b.0_1 = b_13(ab);
  c (b.0_1);

  <bb 6> [99.92%] [count: INV]:
  b_15(ab) = ASAN_POISON ();
  d ();

  <bb 7> [99.88%] [count: INV]:
  return;

}

We expand ASAN_POISON and we propagate ASAN report function on all edges. In
this case <bb 7> -> <bb 4> is an abnormal edge, that we can't split.
Thoughts?

Reply via email to