Re: [PATCH 2/2] Fortran: f_c_string intrinsic improvements

Tobias Burnus <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
Sandra Loosemore wrote:
> The existing implementation of f_c_string is quite inefficient, doing
> either 2 or 3 allocations and copies of the input string prefix.  This
> rewrite adds folding for constant string arguments and handles other
> cases with a single allocation and copy.
> 
> This patch also adds the missing documentation for this intrinsic to the
> gfortran manual.

Thanks for the patch. LGTM, I have one .texi comment, however:

> @@ -3558,6 +3559,7 @@ Fortran 2023 and later.
>   @ref{C_LOC}, @*
>   @ref{C_F_POINTER}
>   @ref{C_F_PROCPOINTER}
> +@ref{F_C_STRING}
>   @end table

I noticed that the others use ', @*'. In 'info' it displays
currently as:

_See also_:
      *note C_ASSOCIATED::,
      *note C_LOC::,
      *note C_F_POINTER::,
      *note C_F_PROCPOINTER:: *note F_C_STRING::


While in the PDF version:

See also:  Section 8.56 [C ASSOCIATED], page 155,
            Section 8.61 [C LOC], page 160,
            Section 8.57 [C F POINTER], page 156,
            Section 8.58 [C F PROCPOINTER], page 157, Section 8.112 [F C 
STRING], page 195,

which is comma wise fine (seems as if a comma always gets added, like 
the superfluous tailing one). For consistency, I think it would be good 
to if all followed the same pattern.

* * *

As an observation:
> +	  gfc_char_t *buf
> +	    = (gfc_char_t *) alloca ((orig_len + 1) * sizeof (gfc_char_t));

Let's hope that the original string isn't megabytes of DNA sequencing
data, exhausting the stack memory due to 'alloca'. On the other hand,
Fortran users are used to 'ulimit -s unlimited', such that there is
probably/hopefully be not a real problem with this.

Thanks again for the cleanup + adding the missing documentation!

Tobias
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.