On Sat, Mar 03, 2012 at 03:23:01PM +0100, Tobias Burnus wrote:
> GNU Fortran warns by default for code like the following:
>
> interface
> subroutine sub (n) bind (C)
> integer :: n
> end subroutine sub
> end interface
>
> Namely, it prints:
>
> Warning: Variable 'n' at (1) is a parameter to the BIND(C) procedure
> 'sub' but may not be C interoperable
>
> That's on one hand correct: There is no defined relation between Fortran
> default kinds (or any kind number) and the C types. Thus, the proper way
> is to use the parameters defined in ISO_C_BINDING, such as "c_int".
>
> On the other hand, "integer" and "int" is the same on many (but not on
> all systems) and, thus, many users simply use the default type.
>
> Compiling interfaces with hundreds of such definitions clutters the
> screen with those warnings and makes it difficult to spot other warnings.
>
> Thus, this patch adds a warning flag for this purpose - and it also
> excludes those warnings from the default setting. That's a bit in line
> with Fortran 2008 and TS 29113, which remove more and more constraints
> and force the users to ensure themselves that the variables are
> interoperable. However, keeping it as default warning is also fine with me.
>
> Build and regtested on x86-64-linux.
> OK?
>
OK.
--
Steve