https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103328
--- Comment #16 from Richard Biener <rguenth at gcc dot gnu.org> ---
And
static void
verify_scope_blocks (tree block, tree supercontext)
{
gcc_assert (BLOCK_SUPERCONTEXT (block) == supercontext);
for (tree t = BLOCK_SUBBLOCKS (block); t; t = BLOCK_CHAIN (t))
verify_scope_blocks (t, block);
}
with checking inside gimplify_function_tree
verify_scope_blocks (DECL_INITIAL (current_function_decl),
current_function_decl);
ICEs first with
#1 0x00000000013ca52a in verify_scope_blocks (block=<block 0x7ffff63cacc0>,
supercontext=<block 0x7ffff63cad20>)
at /home/rguenther/src/gcc3/gcc/gimplify.c:16044
16044 gcc_assert (BLOCK_SUPERCONTEXT (block) == supercontext);
gdb) p cfun->decl
$1 = <function_decl 0x7ffff63b5600 io_fiber>
(gdb) p
block->block.supercontext->block.supercontext->block.supercontext->block.supercontext
$12 = <tree 0x0>
possibly 'block' was added into another function, but it roots at NULL...
somehow all the BLOCK setup is done in poplevel() but I can't see what's wrong.