================
@@ -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

Reply via email to