- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Are there known issues with compile times with ifort 12.1.2 and a broad polymorphic type heirarchy (many extensions of a common parent, perhaps two or three levels of inheritance)?
I've got some files of around 50 lines in length (including comments) that are taking around 20 minutes to compile in a typical debug (no optimisation) configuration. I'm trying to split out a reproducer, but the lengthy build times are making that rather difficult. If it is a known issue I might go and play on the swings outside instead.
I'm seeing some very big mod files too - including a compiler generated one (for interface checking) of 11.5 MB. That's an impressive expansion from eight lines of interface block.
(The source variant of the generated interfaces for routines with polymorphic arguments don't have those arguments as polymorphic. For example, compile the following with /check:all /warn:all:
I've got some files of around 50 lines in length (including comments) that are taking around 20 minutes to compile in a typical debug (no optimisation) configuration. I'm trying to split out a reproducer, but the lengthy build times are making that rather difficult. If it is a known issue I might go and play on the swings outside instead.
I'm seeing some very big mod files too - including a compiler generated one (for interface checking) of 11.5 MB. That's an impressive expansion from eight lines of interface block.
(The source variant of the generated interfaces for routines with polymorphic arguments don't have those arguments as polymorphic. For example, compile the following with /check:all /warn:all:
[fortran]MODULE ParentTypes IMPLICIT NONE TYPE :: Parent END TYPE END MODULE ParentTypes SUBROUTINE external_subprogram(arg) USE ParentTypes IMPLICIT NONE CLASS(Parent), INTENT(OUT), ALLOCATABLE :: arg END SUBROUTINE external_subprogram PROGRAM generated_interfaces_for_poly_args_are_bodgy USE ParentTypes IMPLICIT NONE INTERFACE SUBROUTINE external_subprogram(arg) USE ParentTypes IMPLICIT NONE CLASS(Parent), INTENT(OUT), ALLOCATABLE :: arg END SUBROUTINE external_subprogram END INTERFACE CLASS(Parent), ALLOCATABLE :: arg CALL external_subprogram(arg) END PROGRAM generated_interfaces_for_poly_args_are_bodgy [/fortran]and the generated interface block looks like:
[fortran] !COMPILER-GENERATED INTERFACE MODULE: Tue Jan 10 22:40:59 2012 MODULE EXTERNAL_SUBPROGRAM__genmod INTERFACE SUBROUTINE EXTERNAL_SUBPROGRAM(ARG) USE PARENTTYPES TYPE (PARENT), INTENT(OUT) :: ARG END SUBROUTINE EXTERNAL_SUBPROGRAM END INTERFACE END MODULE EXTERNAL_SUBPROGRAM__genmod [/fortran]No allocatable (as others have already reported) and TYPE instead of CLASS.)
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I've got one report of extended compile times in 12.1.2 but the test case is enormous. If you have a smaller one you can provide, that would be helpful.
Thanks for the generated interface issue. I'll pass that along.
Thanks for the generated interface issue. I'll pass that along.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page