Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
29285 Discussions

The type of the actual argument differs from the type of the dummy argument.

Mike896
Beginner
493 Views

Hi

I just download and run with IVF v11.

Then I got this problem. I saw many user had also this problem.

But I don't see any suggsted way.

The file is in *.f and have declared

IMPLICIT REAL*8(A-H,O-Z)

CALL TRIDAG(AA,BB,CC,RR,UU,JMAX-2)

but the compiler automatically generate module:

MODULE TRIDAG_mod
INTERFACE
SUBROUTINE TRIDAG(A,B,C,R,U,N)
INTEGER(KIND=4) :: N
REAL(KIND=4) :: A(N)
REAL(KIND=4) :: B(N)
REAL(KIND=4) :: C(N)
REAL(KIND=4) :: R(N)
REAL(KIND=4) :: U(N)
END SUBROUTINE TRIDAG
END INTERFACE
END MODULE TRIDAG_mod

and it's real(4).

I don't have problem for IVF v10.

May I ask how to get away with this?

Thank you in advance.

Mike

0 Kudos
3 Replies
Mike896
Beginner
493 Views
Quoting - Mike896

Hi

I just download and run with IVF v11.

Then I got this problem. I saw many user had also this problem.

But I don't see any suggsted way.

The file is in *.f and have declared

IMPLICIT REAL*8(A-H,O-Z)

CALL TRIDAG(AA,BB,CC,RR,UU,JMAX-2)

but the compiler automatically generate module:

MODULE TRIDAG_mod
INTERFACE
SUBROUTINE TRIDAG(A,B,C,R,U,N)
INTEGER(KIND=4) :: N
REAL(KIND=4) :: A(N)
REAL(KIND=4) :: B(N)
REAL(KIND=4) :: C(N)
REAL(KIND=4) :: R(N)
REAL(KIND=4) :: U(N)
END SUBROUTINE TRIDAG
END INTERFACE
END MODULE TRIDAG_mod

and it's real(4).

I don't have problem for IVF v10.

May I ask how to get away with this?

Thank you in advance.

Mike

I set "check the routine interface" to No.

But I am not sure if it may cause some problem.

Why the compiler-generated module is not in real(8)?

Mike

0 Kudos
Steven_L_Intel1
Employee
493 Views

The generated module is based on the actual routine, not the call. This suggests that the function is not properly declared as REAL(8) in the function. You need to fix that.

0 Kudos
TimP
Honored Contributor III
493 Views

The generated module is based on the actual routine, not the call. This suggests that the function is not properly declared as REAL(8) in the function. You need to fix that.

With 32-bit linux x87 code, it was frequently possible to mix various REAL types in function returns, without declaring them. That will not work with the current usual options, and should be diagnosed as an error even if it still happens to work.

0 Kudos
Reply