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

second trailing underscore in symbols with old compilers

retspeej
Beginner
1,264 Views

I have been trying to build a FOSS package with different compilers. It uses the FFTW2 libraries. So first step is building FFTW2.

FFTW2 builds okay with gcc gfortran (32 or 64-bit) using the -fno-second-underscore flag. This means a symbol containing underscores will get 1 underscore appended instead of 2. I believe the Intel equivalent of this is -assume no2underscores. I can compile FFTW2 with 64-bit version 11.1 of Intel C++ and Fortran compilers, and get 1 underscore at end of symbols. But if I compile with 32-bit version 9.1 or 10.0 and then try "nm librfftw.a", I see 2 underscores at the end of some symbols. If I look at the configure log for FFTW2, it appears to be using -assume no2underscores. I tried putting this compiler option into the ifort.cfg file to make sure, but still get two underscores.

Has anybody encountered this problem in the past?

0 Kudos
2 Replies
Steven_L_Intel1
Employee
1,264 Views
By default, Intel Fortran does not append a second underscore in any case. If you specify -assume 2underscores, then you get two underscores unless the name has an embedded underscore - this is for g77 compatibility. It may be that the old compilers you're using didn't handle this properly - I know the current one does.
0 Kudos
retspeej
Beginner
1,264 Views
I found another post claiming that this only happens with IA32 compiler. So I installed the version 10.0.026 comilers on two computers with RHEL 5.8. One had 32-bit OS and the other 64-bit. Then built FFTW2 with each. With 64-bit compiler, got correct underscores. With 32-bit compiler on 64-bit OS, also correct. But on the 32-bit OS, get 2 underscores. So it is a weird bug. 32-bit compiler only goes wonky when cut off from its 64-bit silbling. Probably not many people compiling 32-bit code today, but would have been 5 years ago. I am surprised to find few complaints about this. I can't use the latest version 13 compiler, as it has a problem with another component of the package I wish to install. I haven't gotten around to trying version 12 compiler yet.
0 Kudos
Reply