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

--- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> ---
So we somehow have recorded a non-null global range for a5_16:

void f11 (int64_t a0, void * a4, void * a5)
{
  # PT = nonlocal null 
  void * a4_14(D) = a4;
  # PT = nonlocal 
  void * a5_16(D) = a5;

which DOM2 records.  The pass before (thread1) still has

void f11 (int64_t a0, void * a4, void * a5)
{
  # PT = nonlocal null
  void * a4_14(D) = a4; 
  # PT = nonlocal null
  void * a5_16(D) = a5; 

disabling only DOM2 is enough to fix things.  So the logic is likely
that a4 != 0 (in the outer loop header) and the inner loop exit
is if (!(a4 == a5)) __builtin_unreachable (); and thus a5 is not NULL,
but only when a4 != 0, so not sure why we think we can set that
as global range?

Reply via email to