This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Fortran-Experiments]: patch for error checking on binding labels and derived types, etc.


Hi,

Christopher D. Rickett wrote:
>> Let's wait for the ok of Steve.
*ping*  ;-)

>> +++ gcc/fortran/decl.c  (working copy)
>> +     they're inteoperable if they're BIND(C) and they're params are all
>>
>> Spelling: interoperable.
> oops.  i also think the third "they're" is wrong; it should be
> "their". i'll fix those in my copy.  do you want me to send another
> patch, or did you want to fix this?
I can do the "interoperable", "their", "FUNCTION" and  "! { dg-final {
cleanup-modules "  changes. The rest I leave to your next round of patches.


>> +            gfc_error ("Return type of BIND(C) FUNCTION '%s' at %L
>> cannot "
>> and
>> +              gfc_error ("Return type of BIND(C) FUNCTION '%s' at %L
>> cannot "
>>
>> Not-capitalizing the word "function" ?
>
> i can lower-case the "FUNCTION".  i had put it as all-caps simply
> because it was a token and i started doing all caps for other things,
> like BIND(C).
For me "BIND(C) FUNCTION" looks as it is put in in one block rather than
as "FUNCTION name() BIND(C)", besides I think it looks too cluttered if
too many words are capitalized. However, I do think BIND(C) should
remain capitalized as it is both important in this sentence and it is a
token.

>> I think mangling is the wrong approach. Simply not creating the symbol
>> name from the subroutine is enough.
>
> what name should it be given for fortran to generate the symbol in the
> object file?  right now, with name="", i let fortran do what it
> normally would do.  is that acceptable?  that should prevent two
> functions from appearing with the same name "foo" i think.
That was my idea.

For completeness, gfortran currently calls module procedures
   __<module name>__<procedure name>
and procedures outside modules
  <procedure name>_
Special are procedures which are contained in the PROGRAM, they appear
e.g. as  <procedure name>.1351   and are local symbols.


> the binding label verification definitely doesn't seem like the
> easiest thing to enforce.
Indeed. For the Fortran part, it took quite long until we get it work
reasonably well. (Especially the part: When is a symbol ambiguous? We
probably have some still some bugs there - as have the other compilers.)

Tobias


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]