Silverfrost Forums

Welcome to our forums

Internal compiler error (only with /64 option)

9 Feb 2021 10:29 #27070

The following simplified source code creates an 'Internal compiler error' when compiled with /64 and /check

  Subroutine DRGD2Z (PSZL)
  Character(len=*) :: PSZL(*)
  Character(Len=10), External ::  DRUTBQ
  PSZL(1)(52:61) = DRUTBQ(1)
  END

Without /64 no error appears.

The error can be avoided with an additional assignmnet:

  Subroutine DRGD2Z (PSZL)
  Character(len=*) :: PSZL(*)
  Character(Len=10), External ::  DRUTBQ
  Character(Len=10)           ::  xxx
  xxx = DRUTBQ(1)
  PSZL(1)(52:61) = xxx
  END
9 Feb 2021 11:36 #27071

Thomas

Thank you for this bug report. I have made a note that it needs fixing.

10 Feb 2021 4:07 #27078

This failure has now been fixed for the next release of FTN95.

11 Feb 2021 3:02 #27079

Does Subroutine DRGD2Z (PSZL) need an interface for using PSZL ? Character(len=) :: PSZL()

Perhaps (len=) is always provided, so PSZL() is an array of unknown size. So, len(PSZL(1)) is available, but size(PSZL) is not.

I would be interested if the following works.

  Subroutine DRGD2Z (PSZL)
  Character(len=*) :: PSZL(*)
  Character(Len=10), External :: DRUTBQ
  if (len(PSZL(1)) >= 61) then
    PSZL(1)(52:61) = DRUTBQ(1)
  else
    write (*,*) 'len(PSZL) =',len(PSZL(1)),' too small'
  end if
  END
11 Feb 2021 7:06 #27080

The original code provided by Thomas compiles in 32 bits and in 64 bits without /CHECK so FTN95 can be used to investigate any limitations.

Please login to reply.