gfortran crashes when compiling the attached code

[EMAIL PROTECTED] /tmp/gfortcrash $ gfortran -c kinds.f90 constants.f90 
lorentz.f90
lorentz.f90: In function ‘rotation_generic_cs’:
lorentz.f90:775: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

[EMAIL PROTECTED] /tmp/gfortcrash $ gfortran -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /home/fxcoudert/gfortran_nightbuild/trunk/configure
--prefix=/home/fxcoudert/gfortran_nightbuild/irun-20061130
--enable-languages=c,fortran
--with-gmp=/home/fxcoudert/gfortran_nightbuild/software
Thread model: posix
gcc version 4.3.0 20061130 (experimental)


Reduced testcase:
================== lorentz_red.f90 =============================
module lorentz
  implicit none
  public :: rotation

  integer, dimension(3,3,3), parameter :: epsilon_three = &
       & reshape( source = (/ 0, 0,0,  0,0,-1,   0,1,0,&
       &                      0, 0,1,  0,0, 0,  -1,0,0,&
       &                      0,-1,0,  1,0, 0,   0,0,0 /),&
       &          shape = (/3,3,3/) )

  interface rotation
     module procedure rotation_generic_cs
  end interface

contains

  function rotation_generic_cs(cp, sp, n) result(a)
    real :: a
    real, intent(in) :: cp, sp
    real, dimension(3), intent(in) :: n
    integer :: i,j
    a=cp*cp + (1-cp)*n(i)*n(j)  &
         &   - sp*dot_product(epsilon_three(i,j,:), n)
  end function rotation_generic_cs

end module lorentz
=========================================================

[EMAIL PROTECTED] /tmp/gfortcrash2 $ gfortran -c lorentz_red.f90
lorentz.f90: In function ‘rotation_generic_cs’:
lorentz.f90:18: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.


Note that changing the order of the calculation produces an "internal compiler
error" instead of a segmentation fault:

================= lorentz_red2.f90 ==========================
module lorentz
  implicit none
  public :: rotation
  integer, dimension(3,3,3), parameter :: epsilon_three = &
       & reshape( source = (/ 0, 0,0,  0,0,-1,   0,1,0,&
       &                      0, 0,1,  0,0, 0,  -1,0,0,&
       &                      0,-1,0,  1,0, 0,   0,0,0 /),&
       &          shape = (/3,3,3/) )

  interface rotation
     module procedure rotation_generic_cs
  end interface

contains

  function rotation_generic_cs(cp, sp, n) result(a)
    real :: a
    real, intent(in) :: cp, sp
    real, dimension(3), intent(in) :: n
    integer :: i,j
    a=  - sp*dot_product(epsilon_three(i,j,:), n) &
      & +  cp*cp + (1-cp)*n(i)*n(j)  
  end function rotation_generic_cs

end module lorentz
=======================================================

[EMAIL PROTECTED] /tmp/gfortcrash2 $ gfortran -c lorentz_red2.f90
lorentz.f90: In function ‘rotation_generic_cs’:
lorentz.f90:17: internal compiler error: in gfc_conv_expr_op, at
fortran/trans-expr.c:1109
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.


-- 
           Summary: segmentation falut when compiling certain code
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: trumsko at yahoo dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30224

Reply via email to