Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
公告
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.
29281 讨论

ICE: Creating this name exceeds internal buffer:

FlyingHermes
新分销商 I
3,272 次查看

Hi,

Here is a  minimal reproducible example (MRE) for some code which generates an ICE due to the length of the name of the module and sub-module exceeding the internal buffer inside ifort.

Module A_Very_Long_Module_Name_Composed_Of_Many_Characters
  implicit none
  interface
    module subroutine DoSomething()
    end subroutine
  end interface
End Module

SubModule(A_Very_Long_Module_Name_Composed_Of_Many_Characters) A_Long_Submodule_Composed_Name_Of_Many_Char
  implicit none
  contains
  module procedure DoSomething
  end procedure
End SubModule

Compiling this code using:

module load --silent compiler/latest
ifort --version
ifort Main.F90 -c

gives

ifort (IFORT) 2021.5.0 20211109
Copyright (C) 1985-2021 Intel Corporation.  All rights reserved.

Main.F90: catastrophic error: **Internal compiler error: Creating this name exceeds internal buffer: a_very_long_module_name_composed_of_many_characters@a_long_submodule_composed_name_of_many_char._
compilation aborted for Main.F90 (code 1)

If the name of the sub-module is shorten by a single character (for example, by removing the final "r" letter) the compilation succeeds. It seems that a maximum length of 96 character is used internally by ifort for the combined length of a module and sub-module.

 

Would it be possible to increase this number of a higher value in the nest release of the compiler?

 

The motivation for this request if the following. In our real case scenario we are using some code generation techniques to automatically create module/sub-module names. So, we don't have (an easy) control on the length for these names and, in some cases, these names can be quite lengthy.

 

Thank you.

 

0 项奖励
16 回复数
andrew_4619
名誉分销商 III
3,260 次查看

I just compiled your your code same with Intel® Fortran Compiler Classic 2021.5.0 [Intel(R) 64] with no errors or warnings.  That is strange. 

0 项奖励
FlyingHermes
新分销商 I
3,254 次查看

I'm on Linux, using Fedora 34:

Linux 5.15.12-100.fc34.x86_64 x86_64 x86_64 x86_64 GNU/Linux

 

0 项奖励
andrew_4619
名誉分销商 III
3,242 次查看

That would explain it!

 

0 项奖励
Steve_Lionel
名誉分销商 III
3,231 次查看

An ICE is bad, but the compiler is limited by the length of a global symbol on the platform in question. Submodules complicate it even further, and it looks as if someone missed a check.

0 项奖励
JohnNichols
重要分销商 III
3,208 次查看

MaxPC reports that someone has Windows 11 running on a RPi, just wait till we start getting asked questions about IFX on a RPI. 

0 项奖励
Steve_Lionel
名誉分销商 III
3,198 次查看

Eh, there have been requests for ifort on ARM for years. Not gonna happen.

0 项奖励
JohnNichols
重要分销商 III
3,147 次查看

Do you know how many future programmers are getting their start on the PI --I would be willing to wager that you are wrong and a "lite" version of Fortran will show up on the PI. 

it is amazing what people are doing with this machine.  

0 项奖励
Barbara_P_Intel
3,161 次查看

I duplicated the ICE on Linux and filed a bug report, CMPLRIL0-34588. A fix will not make the next release; code freeze is imminent. I'll let you know when it's fixed.


0 项奖励
FlyingHermes
新分销商 I
3,156 次查看

Thank you. May I ask if intel is planning to extend the limit on the number of characters, or you will just fix the ICE and transform it into a regular compile-time error ?

 

0 项奖励
JohnNichols
重要分销商 III
3,146 次查看

Is code freeze the same as brain freeze when you drink a Slurpee to fast? 

 

Sorry it is the end of a long day and I had a session with the dentist.  

0 项奖励
andreasskeidsvoll
2,908 次查看

Hi,

For you information, the same bug also occurs on the newest ifx compilers. Do you know if the bug will also be fixed for ifx in the future?

0 项奖励
Barbara_P_Intel
3,153 次查看

I don't know what the compiler developers will decide. I'll let you know when I know.



0 项奖励
Barbara_P_Intel
2,887 次查看

No news yet.


0 项奖励
andreasskeidsvoll
2,797 次查看

Tested the minimal reproducible example by the original poster on the recently released ifx 2023.0.0 and ifort 2021.8.0 versions, and the bug is still there (for both compilers). A pity, since we would very much like our users to be able to use ifx 2023.0.0 for compiling our code, but the bug requires us to drop support for Intel compilers.

0 项奖励
Barbara_P_Intel
2,773 次查看

I checked with the compiler team. This issue is planned to be fixed in the 2023.1.0 compiler. I believe that will be available in the March 2023 timeframe.



0 项奖励
Steve_Lionel
名誉分销商 III
2,768 次查看

I'll note that there is also a platform-dependent limit on the combined length of module and symbol name due to object code limitations. I think on Windows it's 63 characters (including name decoration such as the underscore between module and symbol.) For portability, it's a good idea to not stress this limit.

0 项奖励
回复