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

Global name too long warning

shoker
Beginner
972 Views
Hello All
While porting over some code from CVF6.1 to IVF9.0.30, I received several warning messages from the compiler about global names being too long. The code below illustrates the problem. There is a blank main routine and two modules:
Code:
    program UseClause
    implicit none
    end program UseClause


      module m_module1_for_use_clause
      implicit none
      private

      public :: m_module1_for_use_clause_call

      contains

      subroutine m_module1_for_use_clause_call ()
      use m_module2_for_use_clause
      call m_module2_for_use_clause_call ()
      end subroutine
      end module


      module m_module2_for_use_clause
      implicit none
      private

      public :: m_module2_for_use_clause_call

      contains

      subroutine m_module2_for_use_clause_call ()
      integer :: j_integer_test_variable
      common /testcommon/j_integer_test_variable
      end subroutine
      end module


The warning message displayed is :

D:ProjectsJocastsv5_0Intel CompilerUseClausemodule1.F90(1) : Warning: Global name too long, shortened from: M_MODULE1_FOR_USE_CLAUSE_mp_M_MODULE1_FOR_USE_CLAUSE_CALL$BLK.M_MODULE2_FOR_USE_CLAUSE_mp_J_INTEGER_TEST_VARIABLE to: _CLAUSE_mp_M_MODULE1_FOR_USE_CLAUSE_CALL$BLK.M_MODULE2_FOR_USE_CLAUSE_mp_J_INTEGER_TEST_VARIABLE

Can anybody explain why the restriction for module name/routine length impacts on thelength of a common block variable name when used in this way?

Thanks

Ranbir Shoker

0 Kudos
1 Solution
Steven_L_Intel1
Employee
971 Views
The compiler "decorates" names to create unique global symbols. In your case, the decoration includes not only the COMMON name but also the module name and the contained procedure name, though to be honest, some of this doesn't seem necessary. There's a limit on how long a global symbol name can be in the object language (defined here by the Microsoft COFF format).

I suggest filing this as a support request with Intel Premier Support. COMMON global names don't need to be decorated so much since they are global to the program and this may in fact be a bug.

View solution in original post

0 Kudos
2 Replies
Steven_L_Intel1
Employee
972 Views
The compiler "decorates" names to create unique global symbols. In your case, the decoration includes not only the COMMON name but also the module name and the contained procedure name, though to be honest, some of this doesn't seem necessary. There's a limit on how long a global symbol name can be in the object language (defined here by the Microsoft COFF format).

I suggest filing this as a support request with Intel Premier Support. COMMON global names don't need to be decorated so much since they are global to the program and this may in fact be a bug.
0 Kudos
Ranbir_Singh_Shoker
971 Views

Thanks for the help...I have passed it on to Intel Premier support

R

0 Kudos
Reply