2012-07-17 Tobias Burnus PR fortran/53985 * decl.c (gfc_verify_c_interop_param): Make warning conditional on -Wc-binding-type works and improve the wording. 2012-07-17 Tobias Burnus PR fortran/53985 * gfortran.dg/bind_c_usage_26.f90: New. * gfortran.dg/bind_c_procs.f03: Add dg-options "-Wc-binding-type". * gfortran.dg/bind_c_usage_13.f03: Ditto. * gfortran.dg/bind_c_usage_18.f90: Ditto. * gfortran.dg/interop_params.f03: Ditto. diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index c3644b6..c6ba43e 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -1027,8 +1032,8 @@ gfc_verify_c_interop_param (gfc_symbol *sym) "because it is polymorphic", sym->name, &(sym->declared_at), sym->ns->proc_name->name); - else - gfc_warning ("Variable '%s' at %L is a parameter to the " + else if (gfc_option.warn_c_binding_type) + gfc_warning ("Variable '%s' at %L is a dummy argument of the " "BIND(C) procedure '%s' but may not be C " "interoperable", sym->name, &(sym->declared_at), --- /dev/null 2012-07-17 07:28:04.995717470 +0200 +++ gcc/gcc/testsuite/gfortran.dg/bind_c_usage_26.f90 2012-07-17 09:05:56.000000000 +0200 @@ -0,0 +1,14 @@ +! { dg-do compile } +! +! PR fortran/53985 +! +! Check that the (default) -Wno-c-binding-type works +! and no warning is printed. +! +! With -Wc-binding-type, one gets: +! Warning: Variable 'x' at (1) is a dummy argument to the BIND(C) procedure +! 'test' but may not be C interoperable ) +! +subroutine test(x) bind(C) + integer :: x +end subroutine test diff --git a/gcc/testsuite/gfortran.dg/bind_c_procs.f03 b/gcc/testsuite/gfortran.dg/bind_c_procs.f03 index eaf0672..3bb6ea3 100644 --- a/gcc/testsuite/gfortran.dg/bind_c_procs.f03 +++ b/gcc/testsuite/gfortran.dg/bind_c_procs.f03 @@ -1,4 +1,5 @@ ! { dg-do compile } +! { dg-options "-Wc-binding-type" } module bind_c_procs use, intrinsic :: iso_c_binding, only: c_int diff --git a/gcc/testsuite/gfortran.dg/bind_c_usage_13.f03 b/gcc/testsuite/gfortran.dg/bind_c_usage_13.f03 index d89963d..b8c2261 100644 --- a/gcc/testsuite/gfortran.dg/bind_c_usage_13.f03 +++ b/gcc/testsuite/gfortran.dg/bind_c_usage_13.f03 @@ -1,5 +1,5 @@ ! { dg-do compile } -! { dg-options "-fdump-tree-original" } +! { dg-options "-fdump-tree-original -Wc-binding-type" } ! ! PR fortran/34079 ! Character bind(c) arguments shall not pass the length as additional argument diff --git a/gcc/testsuite/gfortran.dg/bind_c_usage_18.f90 b/gcc/testsuite/gfortran.dg/bind_c_usage_18.f90 index 2bce215..ede9f60 100644 --- a/gcc/testsuite/gfortran.dg/bind_c_usage_18.f90 +++ b/gcc/testsuite/gfortran.dg/bind_c_usage_18.f90 @@ -1,4 +1,5 @@ ! { dg-do compile } +! { dg-options "-Wc-binding-type" } ! ! PR fortran/38160 ! diff --git a/gcc/testsuite/gfortran.dg/interop_params.f03 b/gcc/testsuite/gfortran.dg/interop_params.f03 index ea3dada..6eafba0 100644 --- a/gcc/testsuite/gfortran.dg/interop_params.f03 +++ b/gcc/testsuite/gfortran.dg/interop_params.f03 @@ -1,4 +1,5 @@ ! { dg-do compile } +! { dg-options "-Wc-binding-type" } module interop_params use, intrinsic :: iso_c_binding