<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none"><!--P{margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p>Hi David, please find my comments inside:<br>
</p>
<div style="color: rgb(33, 33, 33);">
<div>
<div>
<div dir="ltr"><br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">
<p>>>>Broad question: Do you have any specific motivation/users/etc in implementing this (if you can speak about it)?</p>
</div>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<p>>>> - it might help motivate the work, understand what tradeoffs might be suitable for you/your users, etc.<br>
</p>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr"></div>
</div>
</div>
</div>
</div>
</blockquote>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr"></div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div>>>There are two general requirements: <br>
</div>
</div>
</div>
</div>
</div>
</div>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div>>> 1) Remove (or clean) invalid debug info. <br>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr"></div>
</div>
</div>
</div>
</div>
</blockquote>
<div>><br>
>Perhaps a simpler direct solution for your immediate needs might be a much narrower,
</div>
<div>>and more efficient linker-DWARF-awareness feature:<br>
> <br>
> With DWARFv5, rnglists present an opportunity for a DWARF linker to rewrite the ranges
</div>
<div>> without parsing the rest of the DWARF. /technically/ this isn't guaranteed - rnglist entries
</div>
<div>> can be referenced either directly, or by index. If all rnglists are referenced by index, then
</div>
<div>> a linker could parse only the debug_rnglists section and rewrite ranges to remove any
</div>
<div>> address ranges that refer to optimized-out code.<br>
<br>
> This would only be correct for rnglists that had no direct references to them (that only were
</div>
<div>> referenced via the indexes) - but we could either implement it with that assumption, or could</div>
<div>> add an LLVM extension attribute on the CU that would say "I promise I only referenced rnglists
</div>
<div>> via rnglistx forms/indexes). If this DWARF-aware linking would have to read the CU DIE (not
</div>
<div>> all the other DIEs) it /could/ also then rewrite high/low_pc if the CU wasn't using ranges...
</div>
<div>> but that wouldn't come up in the function-removal case, because then you'd have ranges anyway,
</div>
<div>> so no need for that.<br>
<br>
> Such a DWARF-aware rnglist linking could also simplify rnglists, in cases where functions
</div>
<div>> ended up being laid out next to each other, the linker could coalesce their ranges together.<br>
<br>
> I imagine this could be implemented with very little overhead to linking, especially compared
</div>
<div>> to the overhead of full DWARF-aware linking.<br>
<br>
>Though none of this fixes Split DWARF, where the linker doesn't get a chance to see the
</div>
<div>> addresses being used - but if you only want/need the CU-level ranges to be correct, this
</div>
<div>> might be a viable fix, and quite efficient.</div>
<div><br>
</div>
<div>Yes, we think about that alternative. This would resolve our problem of invalid debug info
</div>
<div>and would work much faster. Thus, if we would not have good results for D74169 then we
</div>
<div>will implement it. Do you think it could be useful to have this solution in upstream?
<br>
<br>
</div>
<div><br>
 </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr"></div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div>>> 2) Optimize the DWARF size.<br>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr"></div>
</div>
</div>
</div>
</div>
</blockquote>
<div><br>
> Do your users care much about this? I imagine if they had significant DWARF size issues,
</div>
<div>> they'd have significant link time issues and the kind of cost to link time this feature has would</div>
<div>> be prohibitive - but perhaps they're sharing linked binaries much more often than they're
</div>
<div>> actually performing linking.</div>
<div><br>
</div>
<div>Yes, they do. They also have significant link-time issues. <br>
So current performance results of D74169 are not very acceptable.<br>
We hope to improve it.<br>
</div>
<div><br>
 </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr"></div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div>>>The specifics which our users have:<br>
>>  - embedded platform which uses 0 as start of .text section. <br>
>>  - custom toolset which does not support all features yet(f.e. split dwarf).<br>
>>  - tolerant of the link-time increase.<br>
>>  - need a useful way to share debug builds. <br>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr"></div>
</div>
</div>
</div>
</div>
</blockquote>
<div><br>
> Sharing two files (executable and dwp) is significantly less useful than sharing one file? </div>
<div><br>
</div>
<div>Probably not significantly, but yes, it looks less useful comparing to D74169.<br>
Having only two files (executable and .dwp) looks significantly better than having executable and multiple .dwo files.<br>
Having only one file(executable) with minimal size looks better than the two files with a bigger size.<br>
<br>
clang compiled with -gsplitdwarf takes 0.9G for executable and 0.9G for .dwp.<br>
clang compiled with -gc-debuginfo takes only 0.76G for single executable.<br>
<br>
 </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div></div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div>>>For the first point: we have a problem "Overlapping address ranges starting from 0"(D59553).</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr"></div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div>>>We use custom solution, but the general solution like D74169 would be better here.<br>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr"></div>
</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>> If CU ranges are the only ones that need fixing, then I think the above solution might be as
</div>
<div>> good/better - if more than CU ranges need fixing, then I think we might want to start talking about
</div>
<div>> how to fix DWARF itself (split and non-split) to signal certain addresses point to dead code with a
</div>
<div>> specific blessed value that linkers would need to implement - because with Split DWARF there's
</div>
<div>> no way to solve the non-CU addresses at the linker.</div>
<div><br>
</div>
<div>I think the worthful solution for that signal value would be LowPC > HighPC.<br>
That does not require additional bits in DWARF. <br>
It would be natural to skip such address ranges since they explicitly marked as invalid.<br>
It could be implemented in a linker very easily. Probably, it would make sense to describe that</div>
<div>usage in DWARF standard.<br>
<br>
As to the addresses which are not seen by the linker(since they are in .dwo files) - yes,
</div>
<div>they need to have another solution. Could you show an example of such a case, please?<br>
<br>
</div>
<div><br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr"></div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div><br>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<p>>>>2. Support of type units.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<p>>>></p>
<p>>>>>  That could be implemented further.<br>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>>>Enabling type units increases object size to make it easier to deduplicate at link time by a DWARF-unaware
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>>>linker. With a DWARF aware linker it'd be generally desirable not to have to add that object size overhead to
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>>>get the linking improvements. </div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>>But, DWARFLinker should adequately work with type units since they are already implemented.</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div><br>
> Maybe - it'd be nice & all, but I don't think it's an outright necessity - if someone knows they're using
</div>
<div>> a DWARF-aware linker, they'd probably not use type units in their object files. It's possible someone
</div>
<div>> doesn't know for sure & maybe they have pre-canned debug object files from someone else, etc.<br>
</div>
<div><br>
</div>
<div>I see. <br>
</div>
<div><br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr"></div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div>>>Another thing is that the idea behind type units has the potential to help Dwarf-aware linker to work faster.</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>>Currently, DWARFLinker analyzes context to understand whether types are the same or not.</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>>When you say "analyzes context" what do you mean? Usually I'd take that to mean
</div>
<div>> "looks at things outside the type itself - like what namespace it's in, etc" - which, yes,
</div>
<div>> it should do that, but it doesn't seem very expensive to do. But I guess you actually
</div>
<div>> mean something about doing structural equivalence in some way, looking at things inside the type?</div>
<div><br>
</div>
<div>I think it could be useful for both cases. Currently, dsymutil does only first thing</div>
<div>(look at type name, namespace name, etc..) and does not do the second thing</div>
<div>(doing structural equivalence). Analyzing type names is currently quite expensive</div>
<div>(the only search in string pool takes ~10 sec from 70 sec of overall time). </div>
<div>That is expensive because of many things should be done to work with strings:
</div>
<div>parse DWARF, search and resolve relocations, compute a hash for strings, </div>
<div>put data into a string pool, create a fully qualified name(like namespace::function::name).
</div>
<div>It looks like it could be optimized and finally require less time, but it still would be a noticeable
</div>
<div>part of the overall time.<br>
<br>
If dsymutil starts to check for the structural equivalence, then the process would be even more slowly.<br>
So, If instead of comparing types structure, there would be checked single hash-id - then this process
<br>
would also be faster.<br>
<br>
Thus I think using hash-id to compare types would allow to make current implementation faster and would
<br>
allow handling incomplete types by DWARFLinker without massive performance degradation also.<br>
<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>> But the context is known when types are generated. So, no need to spent the time analyzing it.
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>> If types could be compared without analyzing context, then Dwarf-aware linker would work faster.</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>> That is just an idea(not for immediate implementation): If types would be stored in some "type table"
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>> (instead of COMDAT section group) and could be accessed through hash-id(like type units
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>> - then it would be the solution requiring fewer bits to store but allowing to compare types
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>> by hash-id(not analysing context). </div>
<div>>> In this case, size increasing would be small. And processing time could be done faster.<br>
>> <br>
>> this is just an idea and could be discussed separately from the problem of integrating of D74169.</div>
<div><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
</blockquote>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<p>>> >> 6. -flto=thin</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<p>>> >>    That problem was described in this review <a href="https://reviews.llvm.org/D54747#1503720" target="_blank">
https://reviews.llvm.org/D54747#1503720</a>. It also exists in </p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<p>>> >> current DWARFLinker/dsymutil implementation. I think that problem should be discussed more: it could
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<p>>> >> probably be fixed by avoiding generation of such incomplete declaration during thinlto,
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>> >> That would be costly to produce extra/redundant debug info in ThinLTO - actually ThinLTO could be doing
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>> >> more to reduce that redundancy early on (actually removing definitions from some llvm Modules if the type
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>> >> definition is known to exist in another Module, etc)<br>
>> >I don't know if it's a problem since that patch was reverted.</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>> <br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>> Yes. That patch was reverted, but this patch(D74169) has the same problem.
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div class="gmail_quote">>> if D74169 would be applied and --gc-debuginfo used then structure type
<div>>> definition would be removed.<br>
<br>
>> DWARFLinker could handle that case - "removing definitions from some llvm Modules if the type</div>
<div>>> definition is known to exist in another Module". <br>
>> i.e. DWARFLinker could replace the declaration with the definition.<br>
<br>
>> But that problem could be more easily resolved when debug info is generated(probably without
<br>
>> significant increase of debug info size): <br>
<br>
>> Here we have:<br>
<br>
>> DW_TAG_compile_unit(0x0000000b) - compile unit containing concrete instance for function "f".<br>
>> DW_TAG_compile_unit(0x00000073) - compile unit containing abstract instance root for function "f".<br>
>> DW_TAG_compile_unit(0x000000c1) - compile unit containing function "f" definition.<br>
<br>
>> Code for function "f" was deleted. gc-debuginfo deletes compile unit DW_TAG_compile_unit(0x000000c1)
</div>
<div>>> containing "f" definition (since there is no corresponding code). But it has structure "Foo" definition
</div>
<div>>> DW_TAG_structure_type(0x0000011e) referenced from DW_TAG_compile_unit(0x00000073)</div>
<div>>> by declaration DW_TAG_structure_type(0x000000ae). That declaration is exactly the case when definition
</div>
<div>>> was removed by thinlto and replaced with declaration.<br>
<br>
>> Would it cost too much if type definition would not be replaced with declaration for "abstract instance root"?
</div>
<div>>> The number of concrete instances is bigger than number of abstract instance roots.
</div>
<div>>> Probably, it would not be too costly to leave definition in abstract instance root?</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr"></div>
</div>
</div>
</div>
</div>
</blockquote>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<div>>> Alternatively, Would it cost too much if type definition would not be replaced with declaration when
</div>
<div>>> declaration references type from not used function? (lto could understand that concrete function is not used).<br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote"></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>>I don't follow this example - could you provide a small concrete test case I could reproduce?</div>
<div><br>
</div>
<div>I would provide a test case if necessary. But it looks like this issue is finally clear, and you already commented on that.<br>
<br>
> Oh, I guess this is happening perhaps because ThinLTO can't know for sure that a standalone
</div>
<div>> definition of 'f' won't be needed - so it produces one in case one of the inlining opportunities
</div>
<div>> doesn't end up inlining. Then it turns out all calls got inlined, so the external definition wasn't needed.<br>
<br>
> Oh, you're suggesting that these 3 CUs got emitted into one object file during LTO, but that DWARFLinker
</div>
<div>> drops a CU without any code in it - even though... So far as I know, in LTO, LLVM directly references
</div>
<div>> types across units if the CUs are all emitted in the same object file. (and if they weren't in the same
</div>
<div>> object file - then the abstract_origin couldn't be pointing cross-CU).<br>
<br>
> I guess some basic things to say:<br>
<br>
> With ThinLTO, the concrete/standalone function definition is emitted in case some call sites don't end up
</div>
<div>> being inlined. So we know it'll be emitted (but might not be needed by the actual linker)<br>
> ANy number of inline calls might exist - but we shouldn't put the type information into those, because
</div>
<div>> they aren't guaranteed to emit it (if the inline function gets optimized away, there would be nothing to
</div>
<div>> enforce the type being emitted) - and even if we forced the type information to be emitted into one
</div>
<div>> object file that has an inline copy of the function - there's no guarantee that object file will get linked in either.<br>
<br>
> So, no, I don't think there's much we can do to keep the size of object files down, while guaranteeing
</div>
<div>> the type information will be emitted with the usual linker semantics.</div>
<div><br>
</div>
<div>Then dsymutil/DWARFLinker could be changed to handle that(though it would probably be not very efficient).
</div>
<div>If thinlto would understand that function is not used finally(and then must not contain referenced type definition),</div>
<div>then this situation could be handled more effectively.<br>
</div>
<div><br>
</div>
<div>Thank you, Alexey.<br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<div style="color:rgb(33,33,33)">
<div>
<div>
<div dir="ltr">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255); font-family:Calibri,Arial,Helvetica,sans-serif">
<p class="MsoNormal"><font size="1"><span style="font-size:11pt; font-family:"Trebuchet MS",sans-serif; color:black"></span></font></p>
<div id="m_-9201951770311992896gmail-m_-8966064977305553731gmail-m_9019961954974587019Signature">
<div name="divtagdefaultwrapper">
<table cellpadding="0" border="0">
<tbody>
<tr>
<td style="padding:0.75pt" valign="top"><br>
</td>
<td style="padding:0.75pt"><br>
</td>
</tr>
</tbody>
</table>
<br>
<font size="2"><span style="font-size:11pt; font-family:"Trebuchet MS",sans-serif; color:black"></span></font></div>
</div>
</div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</body>
</html>