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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|c++                         |tree-optimization
           Keywords|                            |diagnostic

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
>so I'd like to understand what's actually causing this warning, so I can avoid 
>it.

It comes from jump threading.
Considering -Wnull-dereference is not turned on via either -Wextra or -Wall.
Just turn off the warning.

Basically when the front-end expands does:
B *tmp;
A *a = tmp;

It expands it as:
if (D.30650 != 0B)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  iftmp.0 = &D.30650->D.28785;
  goto <bb 6>; [INV]

  <bb 5> :
  iftmp.0 = 0B;

  <bb 6> :
  a = iftmp.0;

And then there is a jump threading with the check of the null pointer and then
propagating the null pointer into the deference.

Reply via email to