================ @@ -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) { ---------------- clayborg 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? If a `DW_TAG_subprogram` has N discontiguous ranges, we will create N FunctionInfo objects, one for each range. We will request the line table entries for each range in the `DW_TAG_subprogram`'s `DW_AT_ranges` attribute. So if there are end sequences in there, we try to keep going. If there is an end_sequence in the line table this is probably the indication of a bug in the line tables. > > > 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) Yes, and as I mention above, we create individual FunctionInfo objects for each range and only request the line table entries for each individual range. > > > 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