Alternate-return arguments in argument lists are represented by a null symbol or expression pointer. In intrinsic.c, remove_nullargs() simply removes null-pointer symbols from the argument list handled by an intrinsic function or subroutine. Ergo, an alternate-return actual argument in an intrinsic subroutine call will simply be skipped over and ignored. The following code demonstrates this:
------------------------------------------------------------------- debian-gfortran:~/test> cat ar1.f90 program ar1 real t1 call cpu_time(*20, t1) 20 write(*,*) t1 end debian-gfortran:~/test> ../bin-trunk/bin/gfortran ar1.f90 debian-gfortran:~/test> ./a.out 1.2997000E-02 debian-gfortran:~/test> ../bin-trunk/bin/gfortran --version GNU Fortran 95 (GCC) 4.3.0 20061128 (experimental) Copyright (C) 2006 Free Software Foundation, Inc. -- Summary: Alternate return arguments in intrinsic subroutine calls are ignored Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: accepts-invalid Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: brooks at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30237