PGF90-S-0155: Generic procedure reference can not be resolve

Hi,

I am trying to use template with pgf90 but compilation fails with PGF90-S-0155 error. Other compilers (gnu, intel, cce) compile the same code without failure. Would you have a suggestion on how to compile the code with PGI please ?

pgf90 -g   -c RealPrecision.F90 -o RealPrecision.o
pgf90 -g   -c 0T.F90 -o 0T.o
pgf90 -g   -c 1.F90 -o 1.o
PGF90-S-0155-reducevals is use-associated from modules xi_mod and xrp_mod, and cannot
be accessed (1.F90: 7)
  • RealPrecision.F90
module RealPrecision
    integer, parameter :: RP=KIND(1.0D0)      ! double
end module RealPrecision
  • 0T.h.F90
    use RealPrecision
    implicit none
    private
    interface reduceVals
        module procedure reduceVals
    end interface reduceVals
    public :: reduceVals

    contains

subroutine reduceVals( AA )
    _TEMPLATE_TYPE_, dimension(:), allocatable, intent(inout) :: AA
    allocate( AA(2) )
    deallocate(AA)
end subroutine reduceVals
  • 0T.F90
#define IN_TEMPLATE

module xrp_mod
#define _TEMPLATE_TYPE_ real(RP)
#include "0T.h.F90"
#undef _TEMPLATE_TYPE_
end module xrp_mod

module xi_mod
#define _TEMPLATE_TYPE_ integer
#include "0T.h.F90"
#undef _TEMPLATE_TYPE_
end module xi_mod
  • 1.F90
module un_mod

    use xrp_mod
    use xi_mod
    implicit none
    private
    public :: reduceVals

end module un_mod
  • 2.F90
module starthere
    implicit none
    private
    public :: compute_values

contains

    subroutine compute_values()
    use RealPrecision
    use un_mod
    implicit none
    real(RP), allocatable, dimension(:) ::  Axi_storage
    allocate( Axi_storage(10) )
    Axi_storage=0._RP
    call reduceVals( Axi_storage )
    deallocate( Axi_storage )
    end subroutine compute_values

end module starthere
  • pgf90 16.9-0 64-bit target on x86-64 Linux -tp haswell

We have replicated what you reported, and we have logged this as TPR 23675.

thanks,
dave

Thank you for looking at this.
I have a license, does that make a difference regarding support ?

Having a PIN does make a difference if you are under maintenance contract.
Your PIN expired in 2014, making it eligible for 14.4 or older.

If we fix the reported problem, it will be in a future release, not 14.4.
It will also be in
a future community edition as well, but that is not released as often as
professional edition releases.

dave

My sysadmin showed me the new PIN and PIN codes.
How can i share them with you ? If i enter them in my profile, will my sysadmin still be able to manage the license keys ?

I see multiple FREE-PGI-OSX PINs tied to accounts from your email address.
Those are not licenses actually, just the ability to download a version of the PGI
compilers for OS X that is not licensed. So having a PIN like that does not
give any extra PGI support.

We do not offer the FREE-PGI-OSX product anymore. It was limited in
what it allowed you to do.

I suggest that you go to http://www.pgroup.com/products/community.htm
and download the 16.10 version of the MAC OS X product, which is identical
to the standard PGI compilers on MACs, and is a free license.

If however, you have a purchased PIN for OS X that is current, you
can send it to license@pgroup.com, and we will get the PIN tied to your account.


dave

Hi,

I managed to setup my account and pin codes, thanks for the support.
Should i continue using this post ?

jg.

Not for licensing or PIN questions.

For the Community edition of PGI compilers, the User Forums is the only
area where the community users can get technical questions answered.

dave

Hello,

Engineering suggested a workaround for this program.

==================================================

It looks like the PGI Fortran compiler is accessing the module procedure “reducevals” via USE association, not the two instances of the generic interface of the same name.

It compiles if you change the name of the subroutine in both modules (and the reference thereto in the generic interfaces) to something different.

It also compiles if you add a redundant ONLY clause to the USE statements (e.g., USE xrp_mod, ONLY : reduceVals).
This seems like it might be worth recommending as a work-around.

==========================================================

regards,
dave

Adding the ONLY clause to the USE statement works perfectly, thanks !

TPR 23675 - Fortran Severe error “Reducevals is use-associated from modules, and cannot be accessed”

has been corrected in the current 17.7 release.


thanks,
dave