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*) ()
...