https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67614
--- Comment #5 from Gerhard Steinmetz <gerhard.steinmetz.fort...@t-online.de> --- For comparison, a logical if (assumes scalar-logical-expr instead of scalar-numeric-expr in arithmetic if) "avoids" an ICE. Analogous examples : $ cat y1.f90 program p logical, allocatable :: z if ( null(z) ) print *, 'a' end $ cat y2.f90 program p logical, pointer :: z if ( null(z) ) print *, 'a' end $ cat y7.f90 program p logical, allocatable :: z if ( null(z) ) then print *, 'a' else print *, 'not a' end if end $ gfortran -g -O0 -Wall -fcheck=all -fno-frontend-optimize y7.f90 $ a.out not a