https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84178
David Malcolm <dmalcolm at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2018-02-02 CC| |dmalcolm at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |dmalcolm at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from David Malcolm <dmalcolm at gcc dot gnu.org> --- Confirmed with trunk and gcc 7. There seem to be two issues here; the differences seen between trunk and gcc 7 appear to be due to trunk currently defaulting to --enable-checking=yes,extra and 7 defaulting to --enable-checking=release and thus gcc_assert is a no-op by default for gcc 7. Checked builds of trunk and gcc 7 both fail this assertion inside "ifcvt": 283 if (flag_checking) 284 for (gimple_stmt_iterator i = gsi_start (stmts); 285 !gsi_end_p (i); gsi_next (&i)) 286 gcc_assert (! gimple_use_ops (gsi_stmt (i))); #1 0x00000000010b98ff in release_bb_predicate (bb=<basic_block 0x7ffff1a3eb60 (38)>) at ../../src/gcc/tree-if-conv.c:286 #2 0x00000000010b994c in free_bb_predicate (bb=<basic_block 0x7ffff1a3eb60 (38)>) at ../../src/gcc/tree-if-conv.c:300 #3 0x00000000010c091f in tree_if_conversion (loop=0x7ffff1a09ee0) at ../../src/gcc/tree-if-conv.c:2897 #4 0x00000000010c0aa2 in (anonymous namespace)::pass_if_conversion::execute (this=0x2abab80, fun=0x7ffff1a00160) at ../../src/gcc/tree-if-conv.c:2962 #5 0x0000000000ec11b2 in execute_one_pass (pass=<opt_pass* 0x2abab80 "ifcvt"(165)>) at ../../src/gcc/passes.c:2497 [...] on this GIMPLE_ASSIGN: _175 = (signed char) _117; Release builds of trunk and of gcc 7 fail later, reading through a NULL basic_block in VRP: (gdb) bt #0 mark_block_for_update(basic_block_def*) () at ../../src/gcc/tree-into-ssa.c:447 #1 0x0000000000af1c10 in mark_use_interesting (insert_phi_p=false, bb=<basic_block 0x0>, stmt=<gimple_assign 0x7ffff1a1e910>, var=<ssa_name 0x7ffff19fbc18>) at ../../src/gcc/tree-into-ssa.c:2540 #2 prepare_use_sites_for (insert_phi_p=false, name=<ssa_name 0x7ffff19fbc18>) at ../../src/gcc/tree-into-ssa.c:2705 #3 prepare_names_to_update (insert_phi_p=false) at ../../src/gcc/tree-into-ssa.c:2773 #4 update_ssa(unsigned int) () at ../../src/gcc/tree-into-ssa.c:3339 #5 0x0000000000c39fd0 in insert_range_assertions () at ../../src/gcc/tree-vrp.c:6849 #6 execute_vrp (warn_array_bounds_p=false) at ../../src/gcc/tree-vrp.c:11724 #7 (anonymous namespace)::pass_vrp::execute(function*) () at ../../src/gcc/tree-vrp.c:11833 #8 0x00000000009df329 in execute_one_pass (pass=pass@entry=<opt_pass* 0x1c2a090 "vrp"(187)>) at ../../src/gcc/passes.c:2465 [...] again on a GIMPLE_ASSIGN: _177 = (signed char) _26; due to it having a NULL bb: (gdb) p stmt->bb $5 = <basic_block 0x0>