object oriented features with Solaris/Oracle Fortran compiler

138 Views Asked by At

I have been trying to compile an O-O fortran code with the fortran compiler of the Oracle Solaris Studio 12.4 suite (the latest as far as I know). But the compiler crashes. Here is a simplified version of my problem.

I define two simple types with one type-bound procedure each. One of the procedures has a variable of the other type as dummy argument:

MODULE MY_MODULE

   type type0
      real :: value = 0 
   contains
      procedure :: print_value
   end type type0

   type type1
      real :: value = 0
   contains
      procedure :: print_diff
   end type type1

CONTAINS

   subroutine print_value(self)
      class(type0), intent(in) :: self
      print*, self%value 
   end subroutine print_value

   subroutine print_diff(self,var0)
      class(type1), intent(in) :: self
      type(type0), intent(in) :: var0
      print*,self%value - var0%value
   end subroutine print_diff

END MODULE MY_MODULE

PROGRAM MY_PROG

   use my_module, only: type0,type1
   type(type0) :: var0
   type(type1) :: var1

   var0%value = 3
   var1%value = 10

   call var1%print_diff(var0)

END PROGRAM MY_PROG

This program compiles and executes fine with gfortran:

[> gfortran myprog.f03 -o myprog.x
[> ./myprog.x
        7.0

However, compilation with the Solaris f95 crashes:

[> f95 myprog.f03 -o myprog.x
   f90: Internal Error, code=fw-interface-ctyp1-796, last src=myprog.f03:4

If I do any further simplification to the source code, then f95 compiles successfully. For instance, it works fine if:

  • type0 has no type-bound procedure
  • type1 has no type-bound procedure
  • procedure print_diff is replaced by a subroutine with no other argument than self

Is there anything I am doing wrong? Is there an installation problem with my Solaris compiler? Is someone able to compile this code successfully with an other Solaris compiler? Does someone know what the error code means (I haven't been able to find that out)?

1

There are 1 best solutions below

0
On

After reporting my problem to Oracle, I just got their answer:

Thank you for reporting this and sorry for the problem. This is a known problem. It has already been fixed in our current development and ported to Studio 12.4. If you have a support contract, you can get the Studio 12.4 patch for it, otherwise the next release will contain the fix.