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: [Patch, Fortran] PR fortran/37588: GENERIC resolution broken for array arguments


Tobias Burnus wrote:
Daniel Kraft wrote:
this fixes PR fortran/37588 by adding a missing call to resolve the
actual arglist before comparing it against the formal ones of the
specific procedures in finding a matching one for generic type-bound
procedures.

Currently regression testing on GNU/Linux-x86-32.
Ok to commit (for trunk only, of course) if no regressions?

OK - thanks for the patch.

Hi Tobias,


thanks for the quick review! Thinking about it, however, I found the following test still fails and I guess it should be valid:

MODULE m
  IMPLICIT NONE

  TYPE :: t
  CONTAINS
    PROCEDURE, NOPASS :: double
    GENERIC :: double_it => double
  END TYPE t

CONTAINS

  ELEMENTAL INTEGER FUNCTION double (arr)
    IMPLICIT NONE
    INTEGER, INTENT(IN) :: arr
    double = 2 * arr
  END FUNCTION double

END MODULE m

PROGRAM main
  USE m
  IMPLICIT NONE

  TYPE(t) :: obj
  INTEGER :: arr(42), arr2(42), arr3(42)
  INTEGER :: i

  arr = (/ (i, i = 1, 42) /)
  arr2 = obj%double (arr)
  arr3 = obj%double_it (arr)

  IF (ANY (arr2 /= 2 * arr)) THEN
    CALL abort ()
  END IF

  IF (ANY (arr3 /= 2 * arr)) THEN
    CALL abort ()
  END IF
END PROGRAM main

The problem is that ELEMENTAL procedures are not recognized correctly because ranks_must_agree is set to constant true in the call to gfc_compare_actual_formal (I thought that passing the elemental-flag itself would be enough but it seems those two parameters must be set to complementary values; doesn't make sense to me, though).

I've got a half-way working patch for this, too, and think it is best to combine both. The program above is really valid, isn't it?

Cheers,
Daniel

--
Done:     Arc-Bar-Cav-Sam-Val-Wiz, Dwa-Elf-Gno-Hum-Orc, Law-Neu-Cha, Fem-Mal
To go:    Hea-Kni-Mon-Pri-Ran-Rog-Tou


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