MODULE MY_MOD_1 INTERFACE ... END INTERFACE END MODULE MY_MOD_1 MODULE MY_MOD_2 INTERFACE ... END INTERFACE END MODULE MY_MOD_2 ... MODULE MY_MAIN_MOD USE MY_MOD_1 USE MY_MOD_2 ... END MODULE MY_MAIN_MODMy questions are now: Why does it take so long to compile simple interface blocks (should I file a bug report?) and is there any way to speed that procedure up? N.B.: I know the 'proper' solution would be to move the routines requiring interfaces to module files but that is, unfortunately, not possible as that would mean grave changes to the structure of the historically grown code base
Nothing current in terms of a previous defect report comes to mind from your description. Past issues of long-compile time (now fixed) involved nesting of modules, so perhaps yours has a similar relationship. So yes, if you can submit a complete reproducer, including all the source necessary to reproduce the lengthy compilation, that would enable Development to investigate further and perhaps offer a work around.
If there’s concerns with posting source code in the public eye in this forum then please submit an issue through our Online Service Center.
Kevin D (Intel) wrote:Unfortunately, I cannot provide a reproducer. But concerning the nesting of modules: what exactly do you mean by this? And in which version would that be fixed? The module in question does depend on the types declared in other modules and those modules partially also depend on other modules. Is this what you mean by "nesting"? The module containing other modules is a workaround devised by a co-worker of mine; it brings compilation time for this file from >5 minutes (maybe ~10) down to about forty seconds, which is still unusually long, IMO. I have several of these files only containing interface declarations, and compilation time has increased substantially since I introduced them.
Past issues of long-compile time (now fixed) involved nesting of modules, so perhaps yours has a similar relationship. So yes, if you can submit a complete reproducer, including all the source necessary to reproduce the lengthy compilation, that would enable Development to investigate further and perhaps offer a work around.
Try disabling Interprocedural Optimizations between files (option -ipo-). You can do this for selected files or the entire project.
Yes, a nesting via USE statements as generally described here. Fixes for reported cases were available in the PSXE 2015/2016 (ifort 15.0/16.0) releases. I inquired w/Developers if they are aware of other cases relating to your code description.