http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48858

--- Comment #1 from Bill Long <longb at cray dot com> 2011-05-03 21:51:29 UTC 
---
As an aside, the code in the Description is a "work-around" to avoid using the
TR 29113 feature that allows Optional arguments.  This would be the preferred
code in the future:

> cat cknew1.f90
module graph_partitions
  use,intrinsic :: iso_c_binding

  interface 
     subroutine Cfun (num, array) bind(c, name="Cfun")
       import :: c_int
       integer(c_int),value :: num
       integer(c_int),optional:: array(*)
     end subroutine Cfun
  end interface

end module graph_partitions

program test
  use graph_partitions
  integer(c_int) :: a(100)

  call Cfun (1, a)
  call Cfun (2)
end program test


The Intel and PGI compilers already support this (no compile errors, correct
output).  The Cray compiler also does if the NEW_FORTRAN environment variable
is set (which just disables the error about having an OPTIONAL dummy in a
BIND(C) interface).  

It is a separate issue from this BUG, but it might be a nice enhancement to
enable the TR feature of allowing OPTIONAL arguments in BIND(C) interfaces. It
appears that some other vendors have already jumped on that bandwagon.

Reply via email to