================ @@ -424,19 +439,13 @@ static void convertFunctionLineTable(OutputAggregator &Out, CUInfo &CUI, auto LastLE = FI.OptLineTable->last(); if (LastLE && LastLE->File == FileIdx && LastLE->Line == Row.Line) continue; + // Only push a row if it isn't an end sequence. End sequence markers are // included for the last address in a function or the last contiguous // address in a sequence. - if (Row.EndSequence) { ---------------- dwblaikie wrote:
I'm not quite following the collection of thoughts here, they seem disjoint to me, so trying to discuss: > We used to not break out on Row.EndSequence I don't understand the relationship between end_sequence and functions with discontiguous ranges - could you describe this connection in more detail? > as it allows functions to have discontiguous ranges. Agreed with @pogo59, I believe both Bolt and Propeller can create discontiguous address ranges for a function (but you'll see DW_AT_ranges on the subprogram) > I was assuming that if we asked for the rows for a given address range we > wouldn't get all entries if two merged functions with different line table > entries were found, but that assumption might not be correct? Yeah, looking at the implementation of `lookupAddressRangeImpl` it finds a single sequence that starts closest to the start address, then adds all rows within that sequence that cover the range requested. So, no, it won't retrieve addresses/ranges from multiple sequences. https://github.com/llvm/llvm-project/pull/90535 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits