https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80965
Paul Thomas <pault at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |pault at gcc dot gnu.org --- Comment #3 from Paul Thomas <pault at gcc dot gnu.org> --- (In reply to Dominique d'Humieres from comment #2) > The change occurred between revisions r241395 (2016-10-21, compiles) and > r241433 (2016-10-21, ICE), likely r241403 (pr69566). Dear All, A workaround is not to call the class object 'loc'. This is fine: module mode3_mod contains subroutine xyz(loc1) implicit none class(*) :: loc1 real x(6) integer ix_use select type (loc1) type is (integer) x = 0 print *, "is an integer" type is (real) ix_use = 0 print *, "is real" end select end subroutine xyz end module mode3_mod I will look into the cause of this. If you attempt to use associate the subroutine by calling it, the following message appears: use mode3_mod 1 Error: DUMMY attribute conflicts with INTRINSIC attribute in ‘loc’ at (1) The class object is being compiled as a function type pointer, void (*<T570>), ie. as the 'loc' intrinsic. Cheers Paul