http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55792
--- Comment #21 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-09 18:20:32 UTC --- (In reply to comment #19) > The BLOCK tree node is cleared by > > (gdb) bt > #0 0x000000336b4882ee in __memset_sse2 () from /lib64/libc.so.6 > #1 0x0000000000545fdf in clear_marks () > at /export/gnu/import/git/gcc/gcc/ggc-page.c:1815 > #2 0x0000000000546621 in ggc_collect () > at /export/gnu/import/git/gcc/gcc/ggc-page.c:2086 > #3 0x00000000008ad816 in execute_todo (flags=2102) > at /export/gnu/import/git/gcc/gcc/passes.c:2023 > #4 0x00000000008ae175 in execute_one_pass (pass=0x17b9c70) > at /export/gnu/import/git/gcc/gcc/passes.c:2349 > #5 0x00000000008ae2da in execute_pass_list (pass=0x17b9c70) > at /export/gnu/import/git/gcc/gcc/passes.c:2383 > #6 0x00000000008ae30b in execute_pass_list ( > pass=0x16d07e0 <pass_all_optimizations>) > at /export/gnu/import/git/gcc/gcc/passes.c:2384 > #7 0x00000000005da366 in expand_function (node=0x7ffff16f5378) > at /export/gnu/import/git/gcc/gcc/cgraphunit.c:1641 > #8 0x00000000005da821 in expand_all_functions () > at /export/gnu/import/git/gcc/gcc/cgraphunit.c:1745 > #9 0x00000000005db2ab in compile () > at /export/gnu/import/git/gcc/gcc/cgraphunit.c:2043 > #10 0x000000000053c60a in lto_main () > at /export/gnu/import/git/gcc/gcc/lto/lto.c:3390 > #11 0x0000000000999401 in compile_file () > ---Type <return> to continue, or q <return> to quit--- > at /export/gnu/import/git/gcc/gcc/toplev.c:545 > #12 0x000000000099b3e4 in do_compile () > at /export/gnu/import/git/gcc/gcc/toplev.c:1878 > #13 0x000000000099b54f in toplev_main (argc=28, argv=0x7fffffffdc78) > at /export/gnu/import/git/gcc/gcc/toplev.c:1954 > #14 0x0000000000fff958 in main (argc=28, argv=0x7fffffffdc78) > at /export/gnu/import/git/gcc/gcc/main.c:36 > (gdb) > > When we remap a block: > static void > remap_block (tree *block, copy_body_data *id) > { > tree old_block; > tree new_block; > > /* Make the new block. */ > old_block = *block; > new_block = make_node (BLOCK); > TREE_USED (new_block) = TREE_USED (old_block); > BLOCK_ABSTRACT_ORIGIN (new_block) = old_block; > BLOCK_SOURCE_LOCATION (new_block) = BLOCK_SOURCE_LOCATION (old_block); > BLOCK_NONLOCALIZED_VARS (new_block) > = vec_safe_copy (BLOCK_NONLOCALIZED_VARS (old_block)); > *block = new_block; > > /* Remap its variables. */ > BLOCK_VARS (new_block) = remap_decls (BLOCK_VARS (old_block), > &BLOCK_NONLOCALIZED_VARS (new_block), > id); > > we didn't register it with GC root. Remapped blocks are supposed to be linked into the BLOCK tree of the destination. What's the backtrace of this remap_block?