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

            Bug ID: 107826
           Summary: ice during GIMPLE pass: slp
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dcb314 at hotmail dot com
  Target Milestone: ---

For the following reduced C code, compiled as follows:

$ ~/gcc/results/bin/gcc -c -O2 -std=c99 bug864B.c
during GIMPLE pass: slp
bug864B.c:3:1: internal compiler error: Segmentation fault
    3 | cpl_image_multiply_scalar_self() {
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0xd7e3a9 crash_signal(int)
        ../../trunk.d1/gcc/toplev.cc:314
0x105cabc contains_struct_check(tree_node*, tree_node_structure_enum, char
const
*, int, char const*)
        ../../trunk.d1/gcc/tree.h:3645
0x105cabc complex_mul_pattern::matches(_complex_operation, hash_map<_slp_tree*, 
_complex_perm_kinds, simple_hashmap_traits<default_hash_traits<_slp_tree*>,
_com
plex_perm_kinds> >*, hash_map<pair_hash<nofree_ptr_hash<_slp_tree>,
nofree_ptr_h
ash<_slp_tree> >, bool,
simple_hashmap_traits<default_hash_traits<pair_hash<nofr
ee_ptr_hash<_slp_tree>, nofree_ptr_hash<_slp_tree> > >, bool> >*, _slp_tree**,
v
ec<_slp_tree*, va_heap, vl_ptr>*)

C code is:

enum { CPL_TYPE_FLOAT, CPL_TYPE_FLOAT_COMPLEX } __assert_fail;
cpl_image_multiply_scalar_nxy;
cpl_image_multiply_scalar_self() {
  switch (cpl_image_get_type()) {
    double *pio;
    unsigned long i;
    pio[i] *= 0;
  case CPL_TYPE_FLOAT:
    for (; cpl_image_multiply_scalar_nxy; i++)
      pio[i] *= 0;
    for (; cpl_image_multiply_scalar_nxy;)
    case CPL_TYPE_FLOAT_COMPLEX: {
      _Complex *pio = cpl_image_multiply_scalar_self;
      _Complex cscalar = __assert_fail;
      for (;; i++)
        pio[i] *= cscalar;
    }
  }
}

The code seems to first go wrong sometime between git hash 2b2f2ee49a33419f
and 59cc4da605e5cb8e, a day later.

Reply via email to