https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106692
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Marek Polacek from comment #1)
> Started with r238754 but removing that match.pd doesn't help, so the problem
> is elsewhere.
>
> We optimize away zz1_1(D) != 0:
>
> __attribute__((fn spec (". w ")))
> void shape_cray (real(kind=4) & restrict zz1)
> {
> integer(kind=8) ptrzz;
> - integer(kind=8) _2;
> + integer(kind=8) _3;
>
> <bb 2> :
> - _2 = (integer(kind=8)) zz1_1(D);
> - if (zz1_1(D) != 0)
> - goto <bb 3>; [INV]
> - else
> - goto <bb 4>; [INV]
> -
> - <bb 3> :
> + _3 = (integer(kind=8)) zz1_1(D);
> _gfortran_abort ();
I suspect there was a patch which special case references to say they cannot be
null in the middle-end.