Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
27118 Discussions

Link bug Abaqus (others) names not lowercase /iface:cref bug Win v2021 use /names:lowercase

Ron_Green
Moderator
1,295 Views

 

UPDATE (10 July 2021) The problem with /iface:cref creating upper case names is resolved in the latest Fortran compiler release, 2021.3.0 which was in oneAPI HPC Toolkit 2021 Update 2 USE THIS RELEASE OR NEWER AND YOU WILL NOT HAVE THIS PROBLEM

 

Bug in Windows (only) ifort in oneAPI versions 2021.1.1, 2021.1.2, and 2021.2.x

Quick answer:  if you use /iface:cref, for example to compile libraries to use with Abaqus, add option /names:lowercase.  This will fix link issues. In VS Project Properties it is under:

 Fortran
   -> External Procedures -> Name Case Interpretation -> "Lower Case (/names:lowercase)

Symptoms:  Abaqus and other users who rely on /iface:cref will receive link time issues (names not found, unresolved references).  Afffects Windows ifort only ( /iface is Windows-only option ).  Affects oneAPI ifort compilers versions 2021.1.1, 2021.1.2 and 2021.2

Cause:  /iface:cref should set all names ( procedures, data ) to LOWERCASE.  It is not doing this.  Thus, names default to uppercase in object files and libraries.  Thus, when Abaqus and other programs look for your functions at link time the references will be unresolved.  For example:

subroutine foo( )

should be exported in object files as "foo" when option /iface:cref option is used.  However, this bug is exporting "FOO" which is the IFORT default of uppercase names.

Resolution:  We have a fix.  It appeared in the 2021.3 compiler which was in the oneAPI HPC Toolkit 2021 Update 2 update release.  For older 2021.1.x or 2021.2.x compilers use workaround /names:lowercase when using /iface:cref

 

Workaround:  add compiler option "/names:lowercase" to your options:

/iface:cref  /names:lowercase

 

 

0 Kudos
0 Replies
Reply