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

Odd compiler error after switching project to IFX from IFORT

Mark_Lewy
Valued Contributor I
2,207 Views

I have an existing VS2019 solution that uses ifort 2021.5 (and earlier) to build its Fortran projects with no issues.  If I switch the Intel Compiler to IFX, I get this output (for a single file):

------ Build started: Project: simlib, Configuration: Debug|x64 ------

Compiling with Intel® Fortran Compiler 2022.0.0 [Intel(R) 64]...
mme_messages_mod.f90
mme_messages_mod.f90: fatal: can't fopen file: C:/Users/mark.i90
simlib : error PRJ0019: A tool returned an error code
Build log written to "file://C:\Source\repos\engine_bluezone\cs\simlib\Debug.x64\BuildLog.htm"
simlib - 1 error(s), 0 warning(s)


---------------------- Done ----------------------

This seems to be associated with the use of the Fortran preprocessor option (/fpp).  If I remove this option then the file compiles.  Does anyone have a workaround for this (we have some conditionally compiled code for Linux/Windows and GNU/Intel Fortran)?

I can try to create a small reproducer and upload it to Intel Support if required.

0 Kudos
1 Solution
Mark_Lewy
Valued Contributor I
2,054 Views

I think I have a workaround for this now.  If I set %tmp% to c:\tmp then the output from fpp is c:\tmp\<number>.i90.  It appears that the ifx driver is confused by values of %tmp% that contain periods.

View solution in original post

0 Kudos
17 Replies
Steve_Lionel
Honored Contributor III
2,201 Views

What does the build log say? That's the more important bit.

0 Kudos
Mark_Lewy
Valued Contributor I
2,192 Views

Good point Steve:

 

   
Compiling with Intel® Fortran Compiler 2022.0.0 [Intel(R) 64]...
ifx /nologo /debug:full /Od /fpp /Qopenmp /standard-semantics /stand:f18 /Qdiag-disable:7025,7762 /warn:declarations /Qauto /module:"Debug.x64\\" /object:"Debug.x64\\" /Fd"Debug.x64\simlib.pdb" /check:bounds /check:format /check:output_conversion /libs:dll /threads /dbglibs /c /Qlocation,link,"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\bin\HostX64\x64" /Qm64 "C:\Source\repos\engine_bluezone\cs\simlib\mme_messages_mod.f90"
mme_messages_mod.f90: fatal: can't fopen file: C:/Users/mark.i90

simlib : error PRJ0019: A tool returned an error code

simlib - 1 error(s), 0 warning(s)
0 Kudos
jimdempseyatthecove
Honored Contributor III
2,167 Views
>>can't fopen file: C:/Users/mark.i90

On Windows, C:/Users is the folder where the user directories are stored. This is not the place where user files should be stored.

 

I suspect a current directory issue.

 

Try this:

 

1) Launch a oneAPI x64 build CMD window

2) CD to your work/solution folder ?? C:\Source\repos\engine_bluezone\cs\simlib ?? (wherever the xxx.sln file is located)

3)  Enter: devenv YourSolutionHere.sln

4) Then rebuild

 

Jim Dempsey

 

0 Kudos
Mark_Lewy
Valued Contributor I
2,195 Views

Ifort build of same file for comparison:

Compiling with Intel® Fortran Compiler Classic 2021.5.0 [Intel(R) 64]...
ifort /nologo /debug:full /Od /Qparallel /fpp /Qopenmp /standard-semantics /stand:f18 /Qdiag-disable:7025,7762 /warn:declarations /Qauto /module:"Debug.x64\\" /object:"Debug.x64\\" /Fd"Debug.x64\simlib.pdb" /check:bounds /check:format /check:output_conversion /libs:dll /threads /dbglibs /c /Qlocation,link,"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\bin\HostX64\x64" /Qm64 "C:\Source\repos\engine_bluezone\cs\simlib\mme_messages_mod.f90"

simlib - 0 error(s), 0 warning(s)
0 Kudos
Mark_Lewy
Valued Contributor I
2,189 Views

If you want a small reproducer for this:

1) In VS2019, create a new "Main Program Code" project.

2) Set platform to x64.

3) In the project properties, set Preprocessor->Preprocess Source File to Yes (/fpp).

4) Change Intel compiler to IFX (from right click on project).

5) Build:

Compiling with Intel® Fortran Compiler 2022.0.0 [Intel(R) 64]...
ifx /nologo /debug:full /Od /fpp /warn:interfaces /module:"x64\Debug\\" /object:"x64\Debug\\" /Fd"x64\Debug\vc160.pdb" /traceback /check:bounds /libs:dll /threads /dbglibs /c /Qlocation,link,"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\bin\HostX64\x64" /Qm64 "C:\Source\repos\oneAPI_2022_1_1\oneAPI_2022_1_1.f90"
oneAPI_2022_1_1.f90: fatal: can't fopen file: C:/Users/mark.i90

oneAPI_2022_1_1 : error PRJ0019: A tool returned an error code

oneAPI_2022_1_1 - 1 error(s), 0 warning(s)

 

0 Kudos
Steve_Lionel
Honored Contributor III
2,163 Views

I asked for the build log, not the contents of the output window:

 

"Build log written to "file://C:\Source\repos\engine_bluezone\cs\simlib\Debug.x64\BuildLog.htm""

You'd have to ZIP it and attach the zip.

0 Kudos
Mark_Lewy
Valued Contributor I
2,142 Views

 

  1. @Steve_Lionel A build log is in my post of 01-06-2022 07:33 AM, which was built from my original project, the later post is for the hello world project and just contains the output window contents, as you said.  I'll attach a zip file containing the solution folder to this post.
  2. Opening a oneAPI command prompt and running devenv for the solution as @jimdempseyatthecove  suggested makes no difference; it still fails to build when /fpp is selected.
0 Kudos
jimdempseyatthecove
Honored Contributor III
2,125 Views

BuildLog.htm>>oneAPI_2022_1_1.f90: fatal: can't fopen file: C:/Users/mark.i90

 

The hello test does not have an INCLUDE/#include for mark.i90, which is strange. The filename must be coming from somewhere.

Please check for, and contents of, ifort.cfg to see if there is anything funny with "mark" or "mark.i90".

Does mark.i90 sound familliar?

 In a pinch, you can copy fpp.exe from an earlier version of Intel Fortran into your solution folder (or is it project folder) whatever is current directory during build.

 

Jim Dempsey

 

 

0 Kudos
Mark_Lewy
Valued Contributor I
2,121 Views

The only thing I can think of is that ifx is confused by my user name (mark.lewy), which contains a period.  There's not a lot I can do about that, as I am on a corporate domain.  I think it is meant to create the preprocessed source in C:\Users\mark.lewy\AppData\Local\Temp, as I have seen .i90 files left there after (presumably) VS crashes.

I assume ifx and ifort use the same fpp.exe, so copying an earlier version wouldn't help.  Remember ifort 2021.5 compiles this fine with /fpp.

 

0 Kudos
Mark_Lewy
Valued Contributor I
2,115 Views

Also fails from the command line:


C:\Source\repos\oneAPI_2022_1_1>ifx /watch /fpp oneAPI_2022_1_1.f90
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2022.0.0 Build 20211123
Copyright (C) 1985-2021 Intel Corporation. All rights reserved.

oneAPI_2022_1_1.f90
echo oneAPI_2022_1_1.f90
C:\PROGRA~2\Intel\oneAPI\compiler\latest\windows\bin\fpp \
-D__INTEL_LLVM_COMPILER=20220000 \
-D__INTEL_LLVM_COMPILER_UPDATE=0 \
-D__INTEL_COMPILER=20220000 \
-D__INTEL_COMPILER_UPDATE=0 \
-D_WIN32 \
-D_M_AMD64=100 \
-D_M_X64=100 \
-D_WIN64=1 \
-D_MSC_VER=1927 \
-D_MSC_FULL_VER=192729112 \
-D_MSC_EXTENSIONS \
"-D__MS_VC_INSTALL_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\" \
-D_MT \
-D__INTEL_COMPILER_BUILD_DATE=20211123 \
-I. \
"-IC:\Program Files (x86)\Intel\oneAPI\vpl\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\tbb\latest\env\..\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\mpi\latest\env\..\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\mkl\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\itac\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\ippcp\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\ipp\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\dpcpp-ct\latest\env\..\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\dnnl\latest\env\..\cpu_dpcpp_gpu_dpcpp\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\dev-utilities\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\dal\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\compiler\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\compiler\include\intel64" \
"-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\ATLMFC\include" \
-IC:\PROGRA~2\Intel\oneAPI\compiler\latest\windows\compiler\include\intel64 \
-IC:\PROGRA~2\Intel\oneAPI\compiler\latest\windows\compiler\include \
"-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\include" \
"-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" \
"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" \
"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" \
"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" \
"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" \
"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" \
-free \
-4Ycpp \
-4Ncvf \
-f_com=yes \
-MX \
oneAPI_2022_1_1.f90 \
C:\Users\mark.i90

oneAPI_2022_1_1.f90: fatal: can't fopen file: C:/Users/mark.i90
del C:\Users\mark.i90
del C:\Users\mark.lewy\AppData\Local\Temp\22762arg2

C:\Source\repos\oneAPI_2022_1_1>

 

0 Kudos
Mark_Lewy
Valued Contributor I
2,136 Views

I've created Intel Support case 05334696 for this problem.

0 Kudos
jimdempseyatthecove
Honored Contributor III
2,111 Views

 Try:

 

ifx /watch /fpp /Fi.\ oneAPI_2022_1_1.f90

 

IOW explicitly state ".\" (current directory) is the directory for fpp preprocessed output.

 

Jim Dempsey

0 Kudos
Mark_Lewy
Valued Contributor I
2,063 Views

@Steve_Lionel @jimdempseyatthecove Adding /Fi.\ doesn't help:

C:\Source\repos\oneAPI_2022_1_1>ifx /watch /fpp /Fi.\ oneAPI_2022_1_1.f90
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2022.0.0 Build 20211123
Copyright (C) 1985-2021 Intel Corporation. All rights reserved.

oneAPI_2022_1_1.f90
echo oneAPI_2022_1_1.f90
C:\PROGRA~2\Intel\oneAPI\compiler\latest\windows\bin\fpp \
-D__INTEL_LLVM_COMPILER=20220000 \
-D__INTEL_LLVM_COMPILER_UPDATE=0 \
-D__INTEL_COMPILER=20220000 \
-D__INTEL_COMPILER_UPDATE=0 \
-D_WIN32 \
-D_M_AMD64=100 \
-D_M_X64=100 \
-D_WIN64=1 \
-D_MSC_VER=1927 \
-D_MSC_FULL_VER=192729112 \
-D_MSC_EXTENSIONS \
"-D__MS_VC_INSTALL_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\" \
-D_MT \
-D__INTEL_COMPILER_BUILD_DATE=20211123 \
-I. \
"-IC:\Program Files (x86)\Intel\oneAPI\vpl\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\tbb\latest\env\..\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\mpi\latest\env\..\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\mkl\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\itac\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\ippcp\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\ipp\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\dpcpp-ct\latest\env\..\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\dnnl\latest\env\..\cpu_dpcpp_gpu_dpcpp\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\dev-utilities\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\dal\latest\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\compiler\include" \
"-IC:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\compiler\include\intel64" \
"-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\ATLMFC\include" \
-IC:\PROGRA~2\Intel\oneAPI\compiler\latest\windows\compiler\include\intel64 \
-IC:\PROGRA~2\Intel\oneAPI\compiler\latest\windows\compiler\include \
"-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\include" \
"-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" \
"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" \
"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" \
"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" \
"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" \
"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" \
-free \
-4Ycpp \
-4Ncvf \
-f_com=yes \
-MX \
oneAPI_2022_1_1.f90 \
C:\Users\mark.i90

oneAPI_2022_1_1.f90: fatal: can't fopen file: C:/Users/mark.i90
del C:\Users\mark.i90
del C:\Users\mark.lewy\AppData\Local\Temp\226122arg2

 

Apparently, Intel Support cannot reproduce this.  I have a lot of other Intel Fortran compilers versions installed as well as oneAPI 2022, so I wonder whether that's the issue: XE2018U3, XE2019U5, XE2020U[124], oneAPI 2021.[1234].  I think I can get rid of most of these, except oneAPI 2021.3, which we are using as our production compiler.

 

0 Kudos
Mark_Lewy
Valued Contributor I
2,055 Views

I think I have a workaround for this now.  If I set %tmp% to c:\tmp then the output from fpp is c:\tmp\<number>.i90.  It appears that the ifx driver is confused by values of %tmp% that contain periods.

0 Kudos
Steve_Lionel
Honored Contributor III
2,096 Views

@Mark_Lewy  you didn't include the build log, you posted the contents of the build output window, which is not the same. Jim Dempsey extracted the build log from your zip and told us what the actual error was.

0 Kudos
Frank_R_1
Beginner
1,698 Views

Hi,

 

ifx from 2022.1 has the same problem when TMP points to path with periods e.g  C:\a.b\tmp

ifx -c -fpp on an arbitrary file fails.

 

Best regards

Frank

0 Kudos
Barbara_P_Intel
Moderator
1,655 Views

This issue with ifx is fixed in the next release. Another developer reported it a while back on Linux. I assume it's fixed on Windows, too.

 

0 Kudos
Reply