gfortran and equivalence produces internal compiler error

Rolf Sander rolf.sander@mpic.de
Wed Aug 31 09:46:00 GMT 2016


Hello,

I encountered an internal compiler error with gfortran (Ubuntu
5.4.0-6ubuntu1~16.04.2). I was able to boil down the problem to the
following simple code:

-----------
MODULE test_equivalence
   REAL, PRIVATE, DIMENSION(100) :: array1
   REAL, PRIVATE, DIMENSION(100) :: array2
   EQUIVALENCE(array1(1),array2(1))
END MODULE test_equivalence

MODULE mymodule
   USE test_equivalence
   ! declare a local variable with the same name as the (private!)
   ! variable in module test_equivalence:
   REAL, DIMENSION(:), ALLOCATABLE :: array1
END MODULE mymodule

PROGRAM test
   USE mymodule
END PROGRAM test
-----------

AFAICS, this code is correct Fortran90. The private arrays in MODULE
test_equivalence should be separate from those in MODULE mymodule.
However, it seems that gfortran turns array1 into a public variable
because of the EQUIVALENCE statement.

Asking a colleague, I was told that the bug also occurs in version 6.2.0
but not in 4.3.4, 4.8.1, and 4.9.4.

The error message was:

-----------
gfortran gfortran_test_equivalence.f90
gfortran_test_equivalence.f90:14:0:

  PROGRAM test
  1
internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-5/README.Bugs> for instructions.
-----------

      Best regards
             Rolf

-- 
-----------------------------------------------------------------------
   Rolf Sander                              phone: [+49] 6131/305-4610
   Max-Planck Institute of Chemistry        email: rolf.sander@mpic.de
   PO Box 3060, 55020 Mainz, Germany     homepage: www.rolf-sander.net
-----------------------------------------------------------------------
                www.atmospheric-chemistry-and-physics.net
                 www.geoscientific-model-development.net
-----------------------------------------------------------------------



More information about the Fortran mailing list