http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55792
--- Comment #17 from H.J. Lu <hjl.tools at gmail dot com> 2013-01-09 00:22:18
UTC ---
gimple_location is duplicated by:
#1 0x0000000000751f32 in gimple_copy (stmt=0x7fffe8d75a00)
at /export/gnu/import/git/gcc/gcc/gimple.c:2205
#2 0x00000000009c960d in gimple_duplicate_bb (bb=0x7fffe8d768f0)
at /export/gnu/import/git/gcc/gcc/tree-cfg.c:5397
#3 0x00000000005b27a5 in duplicate_block (bb=0x7fffe8d768f0,
e=0x7fffe8d793f0, after=0x7fffe8d76888)
at /export/gnu/import/git/gcc/gcc/cfghooks.c:1012
#4 0x000000000099c511 in tail_duplicate ()
at /export/gnu/import/git/gcc/gcc/tracer.c:323
#5 0x000000000099c765 in tracer ()
at /export/gnu/import/git/gcc/gcc/tracer.c:380
#6 0x00000000008ae0e6 in execute_one_pass (pass=0x16d18a0 <pass_tracer>)
at /export/gnu/import/git/gcc/gcc/passes.c:2335
#7 0x00000000008ae2da in execute_pass_list (pass=0x16d18a0 <pass_tracer>)
at /export/gnu/import/git/gcc/gcc/passes.c:2383
#8 0x00000000008ae30b in execute_pass_list (
pass=0x16d07e0 <pass_all_optimizations>)
at /export/gnu/import/git/gcc/gcc/passes.c:2384
#9 0x00000000005da366 in expand_function (node=0x7ffff17536f0)
at /export/gnu/import/git/gcc/gcc/cgraphunit.c:1641
#10 0x00000000005da821 in expand_all_functions ()
at /export/gnu/import/git/gcc/gcc/cgraphunit.c:1745
(gdb) p copy
$176 = (gimple) 0x7fffe8e0a320
(gdb)
Later, the original location is removed:
#0 remove_unused_locals ()
at /export/gnu/import/git/gcc/gcc/tree-ssa-live.c:793
#1 0x00000000008ad5cb in execute_function_todo (data=0x8800)
at /export/gnu/import/git/gcc/gcc/passes.c:1952
#2 0x00000000008ac965 in do_per_function (
callback=0x8ad4ae <execute_function_todo(void*)>, data=0x8800)
at /export/gnu/import/git/gcc/gcc/passes.c:1703
#3 0x00000000008ad765 in execute_todo (flags=34816)
at /export/gnu/import/git/gcc/gcc/passes.c:2001
#4 0x00000000008ae175 in execute_one_pass (
pass=0x16d3220 <pass_cleanup_cfg_post_optimizing>)
at /export/gnu/import/git/gcc/gcc/passes.c:2349
#5 0x00000000008ae2da in execute_pass_list (
pass=0x16d3220 <pass_cleanup_cfg_post_optimizing>)
at /export/gnu/import/git/gcc/gcc/passes.c:2383
#6 0x00000000005da366 in expand_function (node=0x7ffff17536f0)
at /export/gnu/import/git/gcc/gcc/cgraphunit.c:1641
#7 0x00000000005da821 in expand_all_functions ()
at /export/gnu/import/git/gcc/gcc/cgraphunit.c:1745
and freed. Then we copy the freed gimple_location:
#0 expand_gimple_stmt_1 (stmt=0x7fffe8e0a320)
at /export/gnu/import/git/gcc/gcc/cfgexpand.c:2202
#1 0x00000000005a7786 in expand_gimple_stmt (stmt=0x7fffe8e0a320)
at /export/gnu/import/git/gcc/gcc/cfgexpand.c:2305
#2 0x00000000005ad975 in expand_gimple_basic_block (bb=0x7fffe8d76888,
disable_tail_calls=false)
at /export/gnu/import/git/gcc/gcc/cfgexpand.c:4084
#3 0x00000000005af426 in gimple_expand_cfg ()
at /export/gnu/import/git/gcc/gcc/cfgexpand.c:4603
#4 0x00000000008ae0e6 in execute_one_pass (pass=0x16ce300 <pass_expand>)
at /export/gnu/import/git/gcc/gcc/passes.c:2335
#5 0x00000000008ae2da in execute_pass_list (pass=0x16ce300 <pass_expand>)
at /export/gnu/import/git/gcc/gcc/passes.c:2383
#6 0x00000000005da366 in expand_function (node=0x7ffff17536f0)
at /export/gnu/import/git/gcc/gcc/cgraphunit.c:1641
#7 0x00000000005da821 in expand_all_functions ()
at /export/gnu/import/git/gcc/gcc/cgraphunit.c:1745
#8 0x00000000005db2ab in compile ()
at /export/gnu/import/git/gcc/gcc/cgraphunit.c:2043
#9 0x000000000053c60a in lto_main ()
at /export/gnu/import/git/gcc/gcc/lto/lto.c:3390
#10 0x0000000000999401 in compile_file ()
at /export/gnu/import/git/gcc/gcc/toplev.c:545