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

Reply via email to