If one passes an ALLOCATABLE variable as actual to a dummy argument which is not ALLOCATBLE, the should be an optional run-time to check whether the variable is allocated.
For pointers, one could check whether a pointer is NULL as this means non-associated. Checking for an uninitialized pointer is more difficult ... Using NAG f95 -C=pointer, the error is: ALLOCATABLE array N is not currently allocated Program terminated by fatal error In $main$, line 2 of test.f90 Using ifort -check pointers, the result is: forrtl: severe (408): fort: (7): Attempt to use pointer N when it is not associated with a target a.out 0000000000402D2D BAR 6 test.f90 a.out 0000000000402C60 MAIN__ 2 test.f90 Remark: NAG f95 does the check for the actual argument, ifort does it before using the dummy argument. I think I would fiddle it into gfc_conv_procedure_call (-> se.pre) using the check: if (actual->attr.allocatable && (!formal || !formal->attr.allocatable) && (gfc_option.rtcheck & GFC_RTCHECK_POINTER)) generateCode: if( not associated(actual) ) then rt-error else if (actual->attr.pointer && (!formal || !forrmal->attr.pointer) && (gfc_option.rtcheck & GFC_RTCHECK_POINTER)) generateCode: if( actual == NULL ) then rt-error (The check will fail if the actual argument is an uninitialized pointer; for this and further pointer checks, see PR .) integer, allocatable :: n(:) call bar(n) contains subroutine bar(n) integer :: n(:) print *, n end subroutine bar end -- Summary: Add -fcheck=pointer with runtime check for using an unallocated argument Product: gcc Version: 4.5.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: burnus at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40580