fortran-experiments: patch for error checking, rename, dead code
Christopher D. Rickett
crickett@lanl.gov
Mon Feb 19 22:12:00 GMT 2007
hi all,
i've attached another patch for the fortran-experiments branch. my
apologies to the reviewer; the patch is fairly large but contains a number
of functions that were removed because they're not used.
the patch should cover the following:
- allow symbols from iso_c_binding to be renamed. this was partially
working before, but there were a number of places where i referred to
the symbols by their names. i now use the from_intmod/intmod_sym_id
flags that FX added.
- moved the checking for C interoperability to resolve_symbol since it
was shown by Tobias that checking in decl.c could be too early.
- allow BIND(C) derived types to have type components (if they are C
interoperable). this was previously reported as an error, but that
seems incorrect because the draft doesn't say that it shouldn't be
allowed (as far as i can tell).
- added a few new test cases and updated existing ones.
- removed functions that were no longer used (haven't been used for a
while either).
ChangeLog entry:
2007-02-19 Christopher D. Rickett <crickett@lanl.gov>
* gcc/testsuite/gfortran.dg/c_loc_tests_2.f03: New test case for
the c_loc function.
* gcc/testsuite/gfortran.dg/bind_c_implicit_vars.f03: New test
case for warning user about implicitly typed variables if they
need to be C interoperable.
* gcc/testsuite/gfortran.dg/interop_params.f03: Updated test case
to change the expected line of the warning messages.
* gcc/testsuite/gfortran.dg/bind_c_array_params.f03: New test case
to verify that gfortran reports errors if the user declares
assumed-shape or deferred-shape dummy arguments for a BIND(C)
procedure. Only assumed-size or explicitly-shaped arrays are
allowed.
* gcc/testsuite/gfortran.dg/bind_c_dts_2.f03: New test case that
shows gfortran accepting a BIND(C) derived type that contains
another BIND(C) derived type. This was previously reported as an
error.
* gcc/testsuite/gfortran.dg/binding_label_tests_2.f03: New test
case to verify that gfortran reports error messages for invalid
binding labels (error in the NAME= specifier).
* gcc/testsuite/gfortran.dg/binding_label_tests.f03: New test case
for verifying that gfortran accepts all valid binding labels.
* gcc/testsuite/gfortran.dg/bind_c_dts_3.f03: New test case for
verifying that gfortran correctly checks BIND(C) derived types
that are nested within another BIND(C) derived type for being C
interoperable.
* gcc/testsuite/gfortran.dg/iso_c_binding_rename_1_driver.c: Main
program for the iso_c_binding_rename_1 test.
* gcc/testsuite/gfortran.dg/iso_c_binding_rename_1.f03: New test
case to check that gfortran allows the symbols in iso_c_binding to
be renamed.
* gcc/testsuite/gfortran.dg/iso_c_binding_rename_2_driver.c: Main
program for the iso_c_binding_rename_2 test.
* gcc/testsuite/gfortran.dg/iso_c_binding_rename_2.f03: New test
case to check that gfortran allows the symbols in iso_c_binding to
be renamed.
* gcc/testsuite/gfortran.dg/bind_c_dts_2_driver.c: Main program
for the bind_c_dts_2 test case.
* gcc/testsuite/gfortran.dg/bind_c_usage_2.f03: Updated test case.
* gcc/testsuite/gfortran.dg/c_loc_tests_2_funcs.c: C functions
that go with c_loc_tests_2.f03.
* gcc/testsuite/gfortran.dg/bind_c_usage_3.f03: Updated test case.
* gcc/fortran/symbol.c: Added warnings for implicitly typed
variables that need to be C interoperable. Added
get_iso_c_binding_dt() for retrieving derived types from
namespace, independent of the type name. Changed
verify_bind_c_derived_type to allow type components. Updated
warning/error messages in many cases to not use the *_now
versions. Removed dead code: gen_c_interop_kind_sym,
gen_given_kinds, gen_c_interop_int_kinds,
gen_c_interop_logical_kinds, gen_c_interop_real_kinds,
gen_special_c_chars, gen_c_interop_char_kinds,
gen_c_interop_ptr_syms, gen_c_interop_ptr_kinds, gen_iso_c_proc,
gen_c_interop_int_funcs, gen_c_interop_kinds. These were removed
because they have not been necessary since FX added the
generate_isocbinding_symbol function. Updated functions to use
the from_intmod and intmod_sym_id instead of the symbol names.
This allows the symbols to be renamed by the user. Added the
derived types for c_ptr and c_funptr to the namespace
derived_types list.
* gcc/fortran/decl.c: Updated warning/error messages. Added test
cases for preventing assumed-shape and deferred-shape arrays as
parameters to BIND(C) procedures. Removed verification of C
interoperability because it is now done during resolve_sym().
Added an error check for binding labels where a name specifier was
given with a zero lengthed string.
* gcc/fortran/gfortran.h: Updated prototypes.
* gcc/fortran/module.c: Added code to put from_intmod and
intmod_sym_id in the module file. This is needed to correctly
recognize renamed iso_c_binding module symbols.
* gcc/fortran/trans-types.c: Updated to use from_intmod and
intmod_sym_id instead of the names for iso_c_binding symbols c_ptr
and c_funptr.
* gcc/fortran/resolve.c: Added test in resolve_contained_functions
to verify the return type of functions that are BIND(C). Use
from_intmod and intmod_sym_id to recognize iso_c_binding symbols
instead of their names. Added checks to resolve_symbol to verify
C interoperability for symbols that need to be. This use to be
done in decl.c, but it was pointed out that this could be too
early to check.
* gcc/fortran/match.c: Updated gfc_match_name_C to handle leading
or trailing spaces in the name specifier.
* gcc/fortran/match.h: Updated prototypes. Moved some to
gfortran.h.
bootstrapped and regtested on x86 with no new failures.
Chris
-------------- next part --------------
A non-text attachment was scrubbed...
Name: svn_diff.txt.gz
Type: application/x-gzip
Size: 17228 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20070219/5c0d394d/attachment.bin>
More information about the Fortran
mailing list