>> > Not quite clear why we need block_table. This table is not gonna be >> > emitted. And we can easily get subprog_entry through block->block_num >> >> When final_scan_insn() calls dwarf2out_begin_block(), all it passes is >> a block number. I don't know a way to get from block number to the >> block, so I traverse all the blocks of a function when >> dwarf2out_begin_function() is called, and build this table. Now in >> dwarf2out_source_line, I can look at the current block number and tell >> what the inline call stack is. > > Is it correct that block_num has 1-1 mapping with block_table. And > block_table has 1-1 mapping with logical_table?
The first part, yes -- there's one entry in block_table for each block_num in the function tree. But two or more blocks may map to a single logical, and some blocks may not correspond to a logical at all -- if dwarf2out_source_line() is never called for a block, I'll never create a logical for it. -cary