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

            Bug ID: 117496
           Summary: [15 Regression] infinite recursion in
                    insert_predicates_for_cond() on cdrkit-1.1.11
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: slyfox at gcc dot gnu.org
  Target Milestone: ---

Noticed huge RAM usage on cdrkit-1.1.11 on today's gcc-master from
r15-5033-ge97179bacd067c. Did not bisect.

cvise came up with the following example:

// $ cat wodim.c
int main_argc, gargs_preemp, gargs_nopreemp;
static void gargs();
void main_argv() {
  int tracks = 0;
  gargs(main_argc, main_argv, &tracks);
}
void gargs(int, char *, int *tracksp) {
  int tracks = *tracksp, wm;
  for (;;) {
    if (tracks == 0)
      wm |= 4;
    if (gargs_nopreemp)
      gargs_preemp = 0;
    if (tracks == 0 && wm == 0)
      tracks++;
  }
}

$ gcc/xgcc -Bgcc -c wodim.c.c -o bug.o -O2
xgcc: internal compiler error: Segmentation fault signal terminated program cc1
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
See <https://gcc.gnu.org/bugs/> for instructions.

$ gcc/xgcc -v
Using built-in specs.
COLLECT_GCC=gcc/xgcc
Target: x86_64-pc-linux-gnu
Configured with: /home/slyfox/dev/git/gcc/configure --disable-multilib
--disable-bootstrap --disable-lto --disable-libsanitizer --enable-languages=c
CFLAGS='-O1 -g0' CXXFLAGS='-O1 -g0' LDFLAGS='-O1 -g0'
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 15.0.0 20241107 (experimental) (GCC)

Program received signal SIGSEGV, Segmentation fault.
0x0000000000b0c7fe in operand_compare::hash_operand(tree_node const*,
inchash::hash&, unsigned int) ()
(gdb) bt
#0  0x0000000000b0c7fe in operand_compare::hash_operand(tree_node const*,
inchash::hash&, unsigned int) ()
#1  0x0000000000b0c5ea in inchash::add_expr(tree_node const*, inchash::hash&,
unsigned int) ()
#2  0x00000000011ce35b in vn_nary_op_compute_hash(vn_nary_op_s*) ()
#3  0x00000000011d47e5 in vn_nary_op_insert_into(vn_nary_op_s*,
hash_table<vn_nary_op_hasher, false, xcallocator>*) ()
#4  0x00000000011d7db7 in vn_nary_op_insert_pieces_predicated(unsigned int,
tree_code, tree_node*, tree_node**, tree_node*, unsigned int, edge_def*) ()
#5  0x00000000011d813d in insert_predicates_for_cond(tree_code, tree_node*,
tree_node*, edge_def*, edge_def*) ()
#6  0x00000000011d8307 in insert_predicates_for_cond(tree_code, tree_node*,
tree_node*, edge_def*, edge_def*) ()
#7  0x00000000011d8307 in insert_predicates_for_cond(tree_code, tree_node*,
tree_node*, edge_def*, edge_def*) ()
#8  0x00000000011d8307 in insert_predicates_for_cond(tree_code, tree_node*,
tree_node*, edge_def*, edge_def*) ()
...

Reply via email to