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

Code coverage using ifx

Paul_Levold
Beginner
4,839 Views
Is it possible to do code coverage analysis when using the new ifx compiler? There's a guide [1] for generating code coverage data, but the compiler arguments seems to only be supported by the old ifort compiler.

[1] https://www.intel.com/content/www/us/en/docs/fortran-compiler/developer-guide-reference/2023-0/code-coverage-tool.html
0 Kudos
17 Replies
Barbara_P_Intel
Employee
4,782 Views

I checked with the compiler team. Code coverage is not available with ifx.

 

0 Kudos
Fran-Martinez
Beginner
4,013 Views

Is there any indication when the compiler team will implement this feture in IFX?

Since IFORT is no longer available, it is a problem to properly implement detailed unit tests.

0 Kudos
Shiquan_Su
Moderator
3,997 Views

Hi, Fran:

We try to survey our customer community about different feature requests. If possible, would you please let us know your company/institute name, and the name of the app you plan to apply the code coverage functionality to? Is there a public website for your target app? Thanks,

 

Shiquan

0 Kudos
Fran-Martinez
Beginner
3,725 Views

Hi, Shiquan,

I am more of a private user. I used to work in a company where Fortran was a key lnguage for space system applicaiton development and I am certain that they suffer the same issue with the code coverage using IFX.

There are some libraries in Github (https://github.com/ffadrique) that include all unit tests that I have always used to analyse the code coverage. I have another couple of libraries in the pipeline that I will only publish when I can complete the unit testing.

Cheers,

Fran

0 Kudos
Devorah_H_Intel
Moderator
4,009 Views

This feature is planned for ifx 2026.

0 Kudos
Mark_Lewy
Valued Contributor I
3,863 Views

Interesting - LLVM compilers provide source code coverage capability from the command line.  Are you saying that ifx is not able to use this yet, or is the aim to provide reporting similar to ifort in OneAPI 2026?

0 Kudos
Devorah_H_Intel
Moderator
3,820 Views

ifx is not able to use it, and the aim is to provide a code coverage feature similar to ifort. 

Mark_Lewy
Valued Contributor I
3,786 Views

Thanks for the clarification @Devorah_H_Intel 

 

For the OP, @Paul_Levold , a couple of suggestions:

If you still have OneAPI 2025.0 (or earlier) installed, you could still use IFORT and its code coverage tool.

Alternatively, you could try using GNU Fortran and the gcov tool to provide code coverage.

It's a good idea to get your code building with alternative compilers anyway, because they can pick up bugs in your code that the other compiler doesn't.

0 Kudos
Fran-Martinez
Beginner
3,725 Views

Hi,

indeed, I use gfortran with gcov for the unit test coverage, but this forces me to maintain two environments, which is a bit of an unnecessary burden. Still useful for portability and debugging.

0 Kudos
JohnNichols
Honored Contributor I
3,706 Views

When code coverage or speed is "Can we do an entire cycle in 8.192 seconds, 16834 divided by 2000 steps per second?" if yes, then it does not matter, if not change the FFT engine first. 

Some people have simple lives. 

And then the data tells you what happens when a large truck hits a larger bridge.  The bridge moves.  No idea about the truck. 

Amesa-Trans.jpg

0 Kudos
Jacob_Williams
New Contributor III
1,085 Views

did ifx coverage support make it into the 2026 release?

0 Kudos
Mark_Lewy
Valued Contributor I
1,056 Views

Doesn't look like it, according to the release notes: Intel® Fortran Compiler for oneAPI Release Notes 2026.  Though I would treat them with a pinch of salt; the MKL release notes originally omitted the removal of some deprecated procedures.

0 Kudos
Igor_V_Intel
Moderator
661 Views

Unfortunately, it is not available in 2026 version.

0 Kudos
Fran-Martinez
Beginner
637 Views

What is the roadmap for this functionality to be available?

0 Kudos
Jacob_Williams
New Contributor III
953 Views

@Devorah_H_Intel Any updates on this? 

0 Kudos
Mark_Lewy
Valued Contributor I
81 Views

On Linux (I'm using Ubuntu 22.04 LTS on WSL), you can get ifx/icx to generate coverage information using --coverage.

The coverage data must be read with `llvm-cov gcov`, not the system `gcov`. lcov needs a *single-file* gcov tool, and `llvm-cov` requires its `gcov` subcommand — so passing `"llvm-cov gcov"` directly to `lcov --gcov-tool` fails with `geninfo: ERROR: need tool …!`. I created  a wrapper `llvm-cov-gcov` which forwards to `llvm-cov gcov`.  Pass an **absolute** path to `--gcov-tool` — geninfo `chdir`s into each object directory before running the tool, so a relative `./llvm-cov-gcov` resolves during the version probe but fails (`Can't exec`) once file processing begins.

Once you have built your program with coverage and run it  (I use cmake and build into build_ifx_debug)

GCOV_TOOL="$(pwd)/llvm-cov-gcov"    # absolute path (see note above)

lcov --gcov-tool "$GCOV_TOOL" --capture --directory build_ifx_debug --output-file coverage.info
lcov --gcov-tool "$GCOV_TOOL" --remove coverage.info '*/build_ifx_debug/*' '/usr/*' \
  --output-file coverage.filtered.info
genhtml coverage.filtered.info --output-directory coverage_html
 
Apparently, gcovr will accept a multi-word tool. So, you could use it with --gcov-executable "${CMPLR_ROOT}/bin/compiler/llvm-cov gcov".  I don't have gcovr installed, so haven't verified this.
 
In theory, you could also do this on Windows.  The LLVM tools are in C:\Program Files (x86)\Intel\oneAPI\compiler\latest\bin\compiler. There are various ways of using lcov on Windows - a web search should provide the relevant information.
0 Kudos
Fran-Martinez
Beginner
58 Views

Thanks Mark for the reponse.

Knowing that ifx alredy provides code coverage support is very interesting and useful.

Unfortunatelly I have not been able to pass the first step.

I have downloaded and installed the latest oneapi version (2026.1). I run Ubuntu 26.04 LTS on VMware.

Compiling with --coverage does not seem to generate an executable that produces any coverage information. I run on a single fortran file (attached) with the command:

      /opt/intel/oneapi/compiler/2026.1/bin/ifx -rpath $LD_LIBRARY_PATH -L $LD_LIBRARY_PATH -lintlc --coverage fast_square_root.f90

With the additional options to resolve for requested libraries.

Once I run the generated executable I was expecting sime .gcno/.gcda or of the like files. 

Maybe I miss an environment variable or looking in the wrong place. Is there any additional compiler option missing?

 

Thanks and best regards

Fran

0 Kudos
Reply