<div dir="ltr"><div dir="ltr">On Thu, Jul 29, 2021 at 6:58 AM <<a href="mailto:paul.robinson@sony.com">paul.robinson@sony.com</a>> wrote:<br></div><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">> (I think subprograms can<br>
> acquire abstract origins after they're dwarf-emitted?).<br>
<br>
I'd hope not...  The out-of-line instance and all inlined instances<br>
should be pointing to the same abstract origin.  If the out-of-line<br>
instance gets emitted first, *maybe* what you suggest can happen,<br>
because we haven't yet noticed there are inline instances?</blockquote><div><br></div><div>Yeah, if we're talking order of construction, that can certainly happen - when the concrete subprogram is created we don't know if it'll need an abstract definition or not (because we don't know if there are any inlined instances yet) - so we delay filling out the attributes that would go on the abstract definition, wait until the end and then either fill them out on the concrete subprogram, or, if we've encountered/created an abstract definition by that point, emit the DW_AT_abstract_origin on the concrete definition instead.</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">  But <br>
that's not how the DWARF is supposed to look.<br>
--paulr<br>
<br>
</blockquote></div></div>