[Bug fortran/39505] New: Consider a 'no arg check' directive
w6ws at earthlink dot net
gcc-bugzilla@gcc.gnu.org
Thu Mar 19 16:32:00 GMT 2009
A few compilers support a 'no arg check' compiler directive which tells the
compiler to ignore type/kind/rank checking on specified arguments. This is
useful when routines have 'generic' arguments which are simply passed on to
other routines. Two compilers which support this feature are ifort, with the
'!dec$ attributes no_arg_check' directive, and MIPSpro f90, with the '!dir$
ignore_tkr' directive.
For example, in the Message Passing Interface (MPI), the send and receive
buffer arguments are typically 'choice' arguments which can have any type.
This makes it difficult to write interface blocks to help validate the
remaining arguments (and allow keyword=value usage for better self-documenting
code.) Using the Intel compiler directive, an interface block could be written
as follows:
interface
subroutine mpi_send (BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
implicit none
integer :: BUF(*)
!dec$ attributes no_arg_check::buf
integer, intent(in) :: COUNT, DATATYPE, DEST, TAG, COMM
integer, intent(out) :: IERROR
end subroutine
end interface
The alternative to this is to do as OpenMPI does and generate dozens of
specific 'glue' routines, and tie them together under a generic name.
(Tedious, less so by using a preprocessor.) Or to not have explicit interfaces
at all, at least for routines with 'choice' arguments, and get no argument
checking at all. (In most cases, the current status quo.)
--
Summary: Consider a 'no arg check' directive
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: w6ws at earthlink dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39505
More information about the Gcc-bugs
mailing list