https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87673

            Bug ID: 87673
           Summary: Errors caused by using function for character length
                    in allocate with typespec
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pault at gcc dot gnu.org
  Target Milestone: ---

Created attachment 44873
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44873&action=edit
Reduced source for the problem

The attached causes a variety of failures, ranging from a segfault in resolve.c
to the following message:

[pault@pc30 pr85603]$ ~/irun/bin/gfortran -static-libgfortran
-fdump-tree-original ~/prs/pr85603/f*.f90 -g
/home/pault/prs/pr85603/fragment.f90:46:24:

   46 |     ALLOCATE( CHARACTER(get_char_result_length(len(string%chars),
length)) ::  &
      |                        1
Error: Reference to impure function ‘_chars_length’ at (1) within a PURE
procedure
/home/pault/prs/pr85603/fragment.f90:75:10:

   75 | end module
      |          1
Warning: _chars_length at (1) is not a procedure

If the assignment to 'klen' is included, the function identified changes to
'__vtab_v_Varying_string'.

Using 'klen' in the typespec, instead of the function call works fine.

I have to drop the search for the source of the problem right now and so I am
posting it.

Paul

Reply via email to