[Patch, Fortran] C Binding - module+intrinsic cleanup+bug fixes

Dominique Dhumieres dominiq@lps.ens.fr
Sun Mar 24 10:35:00 GMT 2013


Dear Tobias,

On x86_64-apple-darwin10, I see the following failures with both -m32 and -m64,

FAIL: gfortran.dg/c_funloc_tests_8.f90  -O   (test for errors, line 24)
FAIL: gfortran.dg/c_funloc_tests_8.f90  -O   (test for errors, line 28)
FAIL: gfortran.dg/transfer_resolve_2.f90  -O  (internal compiler error)
FAIL: gfortran.dg/transfer_resolve_2.f90  -O  (test for excess errors)

I have tested the patch on my patched tree or on a clean revision 197010.

The bactracde for the ICE and the reduced test

program gar_nichts
   use ISO_C_BINDING
   type(c_ptr) nada
   nada=transfer(C_NULL_PTR,nada)
end program gar_nichts

is

Program received signal SIGSEGV, Segmentation fault.
0x00000001414ffa53 in __gmpz_sizeinbase () from /opt/mp/lib/libgmp.10.dylib
(gdb) bt
#0  0x00000001414ffa53 in __gmpz_sizeinbase () from /opt/mp/lib/libgmp.10.dylib
#1  0x00000001003b5eb3 in mpz_get_double_int (type=0x141b12738, val=0x14161b7a0, wrap=<value optimized out>) at ../../p_work/gcc/double-int.c:1470
#2  0x00000001000d97d0 in gfc_conv_mpz_to_tree (i=0x14161b7a0, kind=8) at ../../p_work/gcc/fortran/trans-const.c:203
#3  0x00000001000b68bf in gfc_target_encode_expr (source=0x14161b720, buffer=0x7fff5fbfd120 "", buffer_size=8)
    at ../../p_work/gcc/fortran/target-memory.c:171
#4  0x00000001000acba1 in gfc_simplify_transfer (source=0x14161b720, mold=<value optimized out>, size=<value optimized out>)
    at ../../p_work/gcc/fortran/simplify.c:6056
#5  0x0000000100045822 in do_simplify (specific=0x142024e08, e=0x14161b530) at ../../p_work/gcc/fortran/intrinsic.c:3870
#6  0x0000000100054151 in gfc_intrinsic_func_interface (expr=0x14161b530, error_flag=1) at ../../p_work/gcc/fortran/intrinsic.c:4213
#7  0x0000000100094fb7 in gfc_resolve_expr (e=<value optimized out>) at ../../p_work/gcc/fortran/resolve.c:2603
#8  0x000000010009b076 in resolve_code (code=<value optimized out>, ns=<value optimized out>) at ../../p_work/gcc/fortran/resolve.c:9573
#9  0x000000010009deb4 in resolve_codes (ns=<value optimized out>) at ../../p_work/gcc/fortran/resolve.c:14413
#10 0x000000010008e59d in gfc_resolve (ns=<value optimized out>) at ../../p_work/gcc/fortran/resolve.c:14441
#11 0x00000001000829eb in gfc_parse_file () at ../../p_work/gcc/fortran/parse.c:4399
#12 0x00000001000c0d86 in gfc_be_parse_file () at ../../p_work/gcc/fortran/f95-lang.c:189
#13 0x0000000100672724 in compile_file () at ../../p_work/gcc/toplev.c:543
#14 0x00000001006744a9 in toplev_main (argc=2, argv=0x7fff5fbfd700) at ../../p_work/gcc/toplev.c:1876
#15 0x000000010000a5e4 in start (pc=<value optimized out>, bases=0x0) at ../../../p_work/libgcc/config/unwind-dw2-fde-darwin.c:272

In case it matters, I use GMP version 5.1.1, MPFR version 3.1.2, MPC version 1.0.1.

Thanks for the patch.

Dominique



More information about the Fortran mailing list