This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/41227] COMMON block, BIND(C) and LTO interoperability issues
- From: "burnus at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 23 Feb 2010 09:08:36 -0000
- Subject: [Bug fortran/41227] COMMON block, BIND(C) and LTO interoperability issues
- References: <bug-41227-13404@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #6 from burnus at gcc dot gnu dot org 2010-02-23 09:08 -------
Regarding my question, Toon ask this question to Bill Long @ Cray and Jim Xia @
IBM at the Las Vegas meeting of J3/WG5 - they came to different conclusions ;-)
Bill Long stated what he also wrote at
http://j3-fortran.org/pipermail/j3/2010-February/003358.html
Namely: The "OR" is to be read as exclusive "OR":
> > Does a common block containing a single variable (e.g. of type
> > "integer(c_int)") need to be interoperable with the C variable ("int")
> > only [i.e. only (2)]
>
> Yes, this is my interpretation.
Toon agreed more with Bill and commented: "I think this is due to the fact that
- as every 'vendor' knows - the C compiler being the 'companion processor' (C
interoperability terminology) to its Fortran processor, it can allow additional
interoperability (for instance, allow COMMON /blah/ I interoperate with struct
{int i;} blah;)."
Thus, from the standard in a three-to-two-reading*, one only needs to
interoperate with the single variable and not with the struct. (* My reading,
Toon's, Bill's vs. Nick's (fortran@gcc) and Jim's.) -- Note: I have not
submitted an official interpretation request, for which all J3/WG5 members have
to vote.
I really wonder whether supporting both in LTO would be the better option
compared with changing it to a single variable in the frontend.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41227