https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119575

            Bug ID: 119575
           Summary: ICE parsing expression with overloaded operators
           Product: gcc
           Version: 14.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rnhmjoj at eurofusion dot eu
  Target Milestone: ---

Compiling this program:

   1    module myint_mod
   2
   3      type myint
   4        integer :: n
   5      contains
   6        procedure :: add
   7        generic, public :: operator(+)  => add
   8      end type
   9
  10    contains
  11
  12      pure function add(p, q) result(r)
  13        class(myint), intent(in)  :: p, q
  14        class(myint), allocatable :: r
  15        r = myint(p%n + q%n)
  16      end function
  17
  18    end module myint_mod
  19
  20    program main
  21
  22      use myint_mod
  23
  24      type(myint) :: p, q
  25
  26      p = myint(3)
  27      q = (p + p)
  28      print *, q
  29
  30    end program

results in the following error:

  f951: internal compiler error: Segmentation fault
  0x1ee5e13 diagnostic_impl(rich_location*, diagnostic_metadata const*, int,
char const*, __va_list_tag (*) [1], diagnostic_t)
    ???:0
  0x1ee64f8 internal_error(char const*, ...)
    ???:0
  0xe10d1f crash_signal(int)
    ???:0
  0x77a9ea gfc_add_component_ref(gfc_expr*, char const*)
    ???:0
  0x8347b5 gfc_resolve_code(gfc_code*, gfc_namespace*)
    ???:0
  0x835aab resolve_codes(gfc_namespace*)
    ???:0
  0x835b72 gfc_resolve(gfc_namespace*) [clone .part.0]
    ???:0
  0x812e40 gfc_parse_file()
    ???:0
  0x86f2ef gfc_be_parse_file()
    ???:0

I tested on GCC 13.3.0 and 14.2.1, both give the same error.

Notes:

  1. The program compiles and runs correctly after removing the parenthesis at
line 27.
  2. The same crash happens in ifort, but not ifx.

Reply via email to