[Bug fortran/35612] testsuite ISO_C_BIND code error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35612 Daniel Franke dfranke at gcc dot gnu.org changed: What|Removed |Added Status|WAITING |RESOLVED Resolution||WORKSFORME --- Comment #7 from Daniel Franke dfranke at gcc dot gnu.org 2010-12-27 23:28:16 UTC --- (In reply to comment #6) Setting status to WAITING. To be closed as WORKSFORME(?) in 3 months form now if no further information comes forward. Closing.
[Bug fortran/35612] testsuite ISO_C_BIND code error
--- Comment #6 from dfranke at gcc dot gnu dot org 2010-05-02 14:00 --- The testcase is still in its original form, the last attempt to get this changed was never commented on: http://gcc.gnu.org/ml/gcc-patches/2009-01/msg00118.html Setting status to WAITING. To be closed as WORKSFORME(?) in 3 months form now if no further information comes forward. -- dfranke at gcc dot gnu dot org changed: What|Removed |Added CC||dfranke at gcc dot gnu dot ||org Status|NEW |WAITING http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35612
[Bug fortran/35612] testsuite ISO_C_BIND code error
--- Comment #5 from mikael at gcc dot gnu dot org 2009-01-07 13:51 --- (In reply to comment #4) For TARGET, I agree because the standard says about c_f_pointer: The value of CPTR shall not be the C address of a Fortran variable that does not have the TARGET attribute. Hum, I don't agree with myself. Only the pointee shall have the TARGET attribute. Not the pointer. Thus, I think the testcase is OK as is. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35612
[Bug fortran/35612] testsuite ISO_C_BIND code error
--- Comment #4 from mikael at gcc dot gnu dot org 2009-01-06 21:16 --- (In reply to comment #2) The line: TYPE(C_PTR), INTENT(IN) :: CPTR ! The C address should be:C_F_STRING(CPTR) TYPE(C_PTR), VALUE, TARGET:: CPTR ! the C address You are right. The call to strlen is OK in either case, however, the call to C_F_POINTER() does not make sense for a pointer to a C string (**char) only for the version with VALUE (*char) as fptr should finally contain the string. For TARGET, I agree because the standard says about c_f_pointer: The value of CPTR shall not be the C address of a Fortran variable that does not have the TARGET attribute. However, for VALUE, I fail to understand what is wrong. Without value, the code generated is: c_f_string (struct array1_unknown __result, integer(kind=4) .__result, void * cptr) { (...) (*(integer(kind=4)[1] *) atmp.0.data)[0] = strlen (*cptr); (...) c_f_pointer_s0 (*cptr, (struct array1_unknown *) __result, atmp.3, 1); } With value: c_f_string (struct array1_unknown __result, integer(kind=4) .__result, void * cptr) { (...) (*(integer(kind=4)[1] *) atmp.0.data)[0] = strlen (cptr); (...) c_f_pointer_s0 (cptr, (struct array1_unknown *) __result, atmp.3, 1); } Both seem equally good, aren't they? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35612
[Bug fortran/35612] testsuite ISO_C_BIND code error
--- Comment #1 from toon at moene dot indiv dot nluug dot nl 2008-03-17 16:00 --- *** Bug 35613 has been marked as a duplicate of this bug. *** -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35612
[Bug fortran/35612] testsuite ISO_C_BIND code error
--- Comment #2 from burnus at gcc dot gnu dot org 2008-03-17 23:37 --- The line: TYPE(C_PTR), INTENT(IN) :: CPTR ! The C address should be:C_F_STRING(CPTR) TYPE(C_PTR), VALUE, TARGET:: CPTR ! the C address You are right. The call to strlen is OK in either case, however, the call to C_F_POINTER() does not make sense for a pointer to a C string (**char) only for the version with VALUE (*char) as fptr should finally contain the string. -- burnus at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2008-03-17 23:37:32 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35612
[Bug fortran/35612] testsuite ISO_C_BIND code error
--- Comment #3 from danp57 at optonline dot net 2008-03-18 01:22 --- Subject: Re: testsuite ISO_C_BIND code error FPTR finally should POINT at that string (same thing CSTR points at) with the correct type info/structure/array-shape set up correctly. My primary reason to send this in is that these test code provides great source code examples to figure out how this stuff SHOULD work... in this case, I found myself taking on the role of debugger when I wasn't quite sure how it was supposed to work in the first place. I just figured it would help out... Dan On Mar 17, 2008, at 7:37 PM, burnus at gcc dot gnu dot org wrote: --- Comment #2 from burnus at gcc dot gnu dot org 2008-03-17 23:37 --- The line: TYPE(C_PTR), INTENT(IN) :: CPTR ! The C address should be:C_F_STRING(CPTR) TYPE(C_PTR), VALUE, TARGET:: CPTR ! the C address You are right. The call to strlen is OK in either case, however, the call to C_F_POINTER() does not make sense for a pointer to a C string (**char) only for the version with VALUE (*char) as fptr should finally contain the string. -- burnus at gcc dot gnu dot org changed: What|Removed |Added -- -- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2008-03-17 23:37:32 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35612 --- You are receiving this mail because: --- You reported the bug, or are watching the reporter. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35612