[Bug fortran/92284] Subroutine with bind(c) attribute causing varied problems
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Oct 30 20:45:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92284
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |wrong-code
Status|RESOLVED |NEW
Last reconfirmed| |2019-10-30
Resolution|INVALID |---
Ever confirmed|0 |1
--- Comment #5 from Tobias Burnus <burnus at gcc dot gnu.org> ---
(In reply to José Rui Faustino de Sousa from comment #4)
> The new code should ICE 10.0.0, but not 9.1.0, using either the C procedure
> or the Fortran bind(c) one.
I have now tried (using current GCC trunk + submitted but not committed patch
for PR92277):
Fortran + C program unmodified: works.
BUT:
* Leaks memory via _gfortran_gfc_desc_to_cfi_desc (ISO_Fortran_binding.c:100)
* valgrind reports "Conditional jump or move depends on uninitialised value(s)"
in _gfortran_gfc_desc_to_cfi_desc (ISO_Fortran_binding.c:132)"
for the call on the Fortran side (line 50).
Hence re-opened.
I think one of the recent patches has probably fixed the ICE, it might even the
PR92277 patch (which is not yet approved/committed) – See
https://gcc.gnu.org/ml/gcc-patches/2019-10/msg02148.html
> Using just the "arr_set" procedure with bind(c) set is very likely a
> duplicate of PR 92189 like you mention.
Presumably – this should be re-checked, once one has a patch for PR 92189.
Looking at the memory leakage/mem-access issues:
* Memory leak: gfc_desc_to_cfi_desc actually allocates the array descriptor if
one has passed a pointer to NULL. That presumably means that one has to undo
the the free removal of r277502 for PR91863 – or at least something like that.
* The for-loops regarding the bounds should be guarded by "if
(GFC_DESCRIPTOR_DATA (s))" – as unallocated/unassociated arrays do not really
have array bounds
More information about the Gcc-bugs
mailing list