[Bug fortran/56266] New: ICE on invalid in gfc_match_varspec

abensonca at gmail dot com gcc-bugzilla@gcc.gnu.org
Sat Feb 9 18:16:00 GMT 2013


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

             Bug #: 56266
           Summary: ICE on invalid in gfc_match_varspec
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: abensonca@gmail.com


The following causes an ICE with trunk (and 4.6 and 4.7):

module t

  type nc
   contains
     procedure :: encM => em
  end type nc

contains

  double precision function em(self)
    implicit none
    class  (nc), intent(inout) :: c
    em=0.0d0
    return
  end function em

  double precision function cem(c)
    implicit none
    class  (nc), intent(inout) :: c

    cem=c(i)%encM()
    return
  end function cem

end program p

$ gfortran -v
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/home/abenson/Galacticus/Tools/libexec/gcc/x86_64-unknown-
linux-gnu/4.8.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-trunk/configure --
prefix=/home/abenson/Galacticus/Tools --enable-languages=c,c++,fortran --
disable-multilib --with-gmp=/home/abenson/Galacticus/Tools
Thread model: posix
gcc version 4.8.0 20130208 (experimental) (GCC) 
$ gfortran -o bug.exe bug.F90
f951: internal compiler error: in gfc_match_varspec, at fortran/primary.c:1960
0x540478 gfc_match_varspec(gfc_expr*, int, bool, bool)
        ../../gcc-trunk/gcc/fortran/primary.c:1957
0x541a99 gfc_match_rvalue(gfc_expr**)
        ../../gcc-trunk/gcc/fortran/primary.c:3118
0x528d8e match_primary
        ../../gcc-trunk/gcc/fortran/matchexp.c:157
0x528d8e match_level_1
        ../../gcc-trunk/gcc/fortran/matchexp.c:211
0x528d8e match_mult_operand
        ../../gcc-trunk/gcc/fortran/matchexp.c:265
0x528fc8 match_add_operand
        ../../gcc-trunk/gcc/fortran/matchexp.c:354
0x5292e4 match_level_2
        ../../gcc-trunk/gcc/fortran/matchexp.c:478
0x529382 match_level_3
        ../../gcc-trunk/gcc/fortran/matchexp.c:549
0x529495 match_level_4
        ../../gcc-trunk/gcc/fortran/matchexp.c:597
0x529495 match_and_operand
        ../../gcc-trunk/gcc/fortran/matchexp.c:691
0x529652 match_or_operand
        ../../gcc-trunk/gcc/fortran/matchexp.c:720
0x529742 match_equiv_operand
        ../../gcc-trunk/gcc/fortran/matchexp.c:763
0x529834 match_level_5
        ../../gcc-trunk/gcc/fortran/matchexp.c:809
0x528be1 gfc_match_expr(gfc_expr**)
        ../../gcc-trunk/gcc/fortran/matchexp.c:868
0x522631 gfc_match(char const*, ...)
        ../../gcc-trunk/gcc/fortran/match.c:1103
0x523b19 gfc_match_assignment()
        ../../gcc-trunk/gcc/fortran/match.c:1301
0x537449 match_word
        ../../gcc-trunk/gcc/fortran/parse.c:65
0x537bdb match_word
        ../../gcc-trunk/gcc/fortran/parse.c:326
0x537bdb decode_statement
        ../../gcc-trunk/gcc/fortran/parse.c:326
0x539194 next_free
        ../../gcc-trunk/gcc/fortran/parse.c:777
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

This is with gfortran 4.8.0 r195874

The code is invalid because of this line:

    cem=c(i)%encM()

both because "c" is not an array, and "i" is not declared (and the function is 
"IMPLICIT NONE")



More information about the Gcc-bugs mailing list