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

Odd compiler error after switching project to IFX from IFORT

Mark_Lewy
New Contributor III
950 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
New Contributor III
797 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

17 Replies
Steve_Lionel
Black Belt Retired Employee
944 Views

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

Mark_Lewy
New Contributor III
935 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)
jimdempseyatthecove
Black Belt
910 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

 

Mark_Lewy
New Contributor III
938 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)
Mark_Lewy
New Contributor III
932 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)

 

Steve_Lionel
Black Belt Retired Employee
906 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.

Mark_Lewy
New Contributor III
885 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.
jimdempseyatthecove
Black Belt
868 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

 

 

Mark_Lewy
New Contributor III
864 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.

 

Mark_Lewy
New Contributor III
858 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>

 

Mark_Lewy
New Contributor III
879 Views

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

jimdempseyatthecove
Black Belt
854 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

Mark_Lewy
New Contributor III
806 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.

 

Mark_Lewy
New Contributor III
798 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.

Steve_Lionel
Black Belt Retired Employee
839 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.

Frank_R_1
Beginner
441 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

Barbara_P_Intel
Moderator
398 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.

 

Reply