labath wrote:

> Will this patch cause us to be able to have a `DW_TAG_subprogram` whose range 
> is `[0x1000-0x2000)` and then have a `DW_AT_lexical_block` whose range 
> doesn't exist within the `DW_TAG_subprogram` range and we will add it to the 
> `DW_TAG_subprogram`? I worry because LTO and other passes might end up 
> setting the address of a contained block to zero or -1 (tombstone). We don't 
> want those added to the parent range unless the address is in the 
> `DW_TAG_subprogram` range.

I can answer that very simply and confidently: No. :)

This patch strictly reduces the number of ranges on blocks, and it has nothing 
to do with filtering tombstone ranges, which happens 
[here](https://github.com/llvm/llvm-project/blob/f590843616d22338ca4bfd1c8623a5dc7c76b6ec/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp#L920)
 (for functions, we do filtering for blocks as well, but we do it slightly 
differently).

I think it actually does what you want, or at least moves us into that 
direction. Without this patch, if we ever ran into a situation where the a 
block has a tombstoned range but the parent function doesn't have it (perhaps 
because it was filtered out by the code I linked to), then we would end up 
(re)adding the tombstoned range to the parent function. With this patch, the 
range will not get added (and we will produce an error/warning notifying us 
about that situation). If we see that warning firing, then it may mean we need 
to do a better job at filtering the block ranges.

https://github.com/llvm/llvm-project/pull/117725
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to