(j3.2006) (SC22WG5.3584) OPTIONAL arguments and C interop
Thu Jul 17 13:36:52 EDT 2008
On Thursday 17 July 2008 09:09, Jim Xia wrote:
> mance. ?Call by value is known as a performance killer in other languages.
> ?The compiler, not language, should be smart enough to decide what the best
> calling convention to use (whether or not get registers involved).
Yes, for Fortran-to-Fortran, it may have the freedom to decide the calling
convention on-the-fly. But people often write codes to be used with other
languages, even long before Interop, and platforms/compilers have ABI's to
follow, so I am not aware of many compilers that actually use the full
freedom and change calling conventions on-the-fly. When it comes to Interop,
one must standardize, and this is why VALUE was added. J3 apparently has
operated under the principle that one cannot just add VALUE for Interop, but
rather, it must be integrated with the rest of Fortran. This leads to
polymorphic VALUE arguments or OPTIONAL VALUE arguments and other stuff that
while it not unreasonable, are certainly not worth the complication to
implementation and confusion about performance impacts. One can *always* make
a copy inside the routine if one really wants a copy! What's done is
done...but, that does not mean the TR has to be messed up just to accomodate
past bad choices, IMO.
More information about the J3