Silverfrost Forums

Welcome to our forums

AMD backend failure:Can't complete RBP relative address

18 May 2016 9:28 #17497

This compiler error occurs in the following fragment

! Compile fails with FTN95 /64 
! 
      subroutine broken
      integer i,j
      character(3),parameter :: noyes(2)=(/'no ','yes'/)
      character(3) :: test,workaround
!
      test = 'something'
      do 20 j = 1,2
         workaround = noyes(j)
         do i = 1,3
! *** AMD backend failure:Can't complete RBP relative address
            if (test(i:i)/=noyes(j)(i:i)) exit
! works fine
            if (test(i:i)/=workaround(i:i)) exit
         end do
20    continue
      end subroutine broken

Compilation also succeeds when noyes is initialized in DATA.

18 May 2016 10:21 #17501

Thank you for the feedback. We will aim to have a fix shortly.

19 May 2016 11:35 #17506

This bug has now been fixed for the next release.

3 Jun 2016 1:06 #17543

I am getting the same error message at the start of a FUNCTION definition, where the FUNCTION is part of a generic interface. Is the fix expected to resolve this issue too?

4 Jun 2016 6:11 #17548

If you can post some sample code then I will check it out for you.

8 Jul 2016 1:06 #17754

I'm using version 8.05 and I get the following errors when I try to compile my sources:

*** AMD backend failure:Invalid instruction in i_emit
*** AMD backend failure: argument number 7 is locked

At the moment I don't have small examples for your testing.

That's my next error using scc with option /64:

[Silverfrost SCC/WIN32 Ver 3.88 Copyright (c) Silverfrost Ltd 2016]
 3/0257   inline int ios::setf(int flags, int mask)
 2/0113            virtual streampos seekpos(streampos, int = ios::in | ios::out
 );
*** Constant cannot be converted to type int (In include file
     D:\Darius\Silverfrost\FTN95\INCLUDE\streambu.h)
 2/0112                                               int = ios::in | ios::out);

*** Constant cannot be converted to type int (In include file
     D:\Darius\Silverfrost\FTN95\INCLUDE\streambu.h)
   0102   }
*** Attempt to emit 32-bit instruction in /64 mode
    3 ERRORS  [<FILEDIAL_MAIN> SCC/WIN32 Ver 3.88]
*** Compilation failed
8 Jul 2016 4:56 #17757

Thanks for the feedback. Please let us know when you have some sample code that illustrate the problems.

27 Jul 2016 10:40 #17845

Here is a code segment which does **not **compile if preprocessor symbol BAD is defined but which compiles **successfully **if preprocessor symbol BAD is **not **defined: Code segment FUNCTION IMOD(I1,I2) #if BAD INTEGER2 IMOD,I1,I2 #else INTEGER4 IMOD,I1,I2 #endif
IMOD=I1-I1/I2*I2 RETURN END

If the code section is saved to file imod.for then executing command

ftn95 imod.for /64 /Cfpp /define BAD 1

results in error

*** AMD backend failure:Invalid instruction in i_emit

whereas executing command

ftn95 imod.for /64 /Cfpp

is successful and produces file imod.obj. The version of ftn95 used is 8.05.0.

27 Jul 2016 11:30 #17846

Thank you for the feedback. I have logged this as a bug that needs fixing.

2 Aug 2016 6:23 #17866

Dietmar

This has now been fixed for the next release.

27 Sep 2016 7:27 #18037

Dear Paul,

is the latest release still 8.05.0? Do you know when a next release comes out?

27 Sep 2016 8:25 #18038

We don't have a fixed release date as yet. It will probably be in a month or two.


-- Admin Silverfrost Limited
27 Sep 2016 9:02 #18039

Yes, the latest release is 8.05.

Please login to reply.