Nvhpc 23.11 fortran - Does it inline public subroutines across modules?

nvfortran 22.X (or so) used to have -Mipa, which in my case was used with OpenACC. This would enable LTO, then later tell you that LTO is not supported for your device. This made performance a bit of a challenge and required some hacky workarounds.

Now, I see that the -Mipa option is deprecated as of nvhpc 23.5, though it’s documentation remains: HPC Compilers User's Guide Version 24.1 for ARM, OpenPower, x86

With nvhpc 23.11, I see LTO enabled at the start of compilation and don’t see a warning later on telling me it could not LTO. However, I did not find anything in the nvhpc release notes discussing LTO, which would be an important feature addition.

My question: Does LTO, in particular for the case of inlining functions and subroutines across module files, “work”? If not, is it expected at some point?

We’d like to bring LTO back at some point, but unfortunately we can’t give you a timeline on when that would occur.

Though for cross-file inlining you can try the two-pass method. First create an inline extract library but compiling all files with “-Mextract=lib:libname” replacing “libname” with what you’d like to call it. Then compile with “-Minline=lib:libname” to use the extract library. Inlining is performed prior to the device code generation.