<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 9, 2016 at 2:33 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Mon, May 9, 2016 at 1:53 PM, Peter Collingbourne <span dir="ltr"><<a href="mailto:peter@pcc.me.uk" target="_blank">peter@pcc.me.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span>On Fri, May 6, 2016 at 2:10 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span>On Fri, May 6, 2016 at 2:09 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span>On Fri, May 6, 2016 at 1:55 PM, Peter Collingbourne via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span>On Fri, May 6, 2016 at 1:21 PM, Duncan P. N. Exon Smith <span dir="ltr"><<a href="mailto:dexonsmith@apple.com" target="_blank">dexonsmith@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span><br>
> On 2016-May-06, at 13:17, Peter Collingbourne <<a href="mailto:peter@pcc.me.uk" target="_blank">peter@pcc.me.uk</a>> wrote:<br>
><br>
> Hi all,<br>
><br>
> I'd like to add support for metadata attachments for global variables in the same way as we did for functions.<br>
><br>
> Syntax would be pretty simple:<br>
> @foo = global i32 0, !foo !0, !bar !1<br>
> (the extra commas are required to disambiguate from a named metadata on the next line)<br>
<br>
</span>SGTM.<br>
<span><br>
> Benefits:<br>
> 1) Lets us reverse the DIGlobalVariable -> GlobalVariable edge, which should hopefully clear the way for removing the <a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a> named metadata node.<br>
<br>
</span>A little harder than it sounds (need to somehow support a GlobalVariable that is RAUW'ed with a ConstantInt), but I think this is important to do.<br></blockquote><div><br></div></span><div>How can a GlobalVariable be replaced with a ConstantInt? Wouldn't that just be an absolute address?</div></div></div></div></blockquote><div><br></div></span><div>If the global variable has a known constant value & the address is never needed, then we might optimize away the storage and still want debug info describing the constant. </div></div></div></div></blockquote><div><br></div></span><div>I'm not sure under what conditions, if any, that currently works - so this may be more of a "nice to have" or "be good to think about how any future design wouldn't preclude fixing this gap" sort of thing.</div></div></div></div></blockquote><div><br></div></span><div>It looks like this is how debug info for static data members used to look until r172591 landed back in 2013.</div></div></div></div></blockquote><div><br></div></span><div>Could you explain more what you mean by "<this> is how it worked until" - 'this' being how it used to work and how you're proposing to make it work? I'm not quite following.</div></div></div></div></blockquote><div><br></div><div>Sorry, I meant that prior to r172591 we would represent a static data member with something that looked like what a DIGlobalVariable looks like today, but with a ConstantInt representing the initializer in the variable field (which is where the GlobalVariable is normally stored). The change moved the initializer to an associated "static member type" (yes, it's not really a type), which as a side effect caused us to (as far as I can tell) no longer store ConstantInts in the variable field.</div><div><br></div><div>I'm not planning to change this aspect of the representation.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> There are a couple of tests that exercise this path (DebugInfo/X86/multiple-at-const-val.ll and DebugInfo/X86/pr12831.ll) but it seems likely that they were just upgraded manually.</div><div><br></div><div>Do we care about backwards compatibility for debug info from that far back?</div></div></div></div></blockquote><div><br></div></span><div>Yeah, pretty sure we don't care.</div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> I assume we don't, since this predates the last debug info version bump in 2015 (r231082 which introduced the debug info hierarchy). If that's the case, I intend to "upgrade" this metadata by dropping it, and we can probably think of some other representation later for a constant folded global.</div></div></div></div></blockquote><div><br></div></span><div>Upgrades to the verifier to fail when it sees this would be good too, most likely. (maybe? maybe not... not sure)</div></div></div></div></blockquote><div><br></div><div>This would no longer be representable in IR, as I'd be removing the variable field from DIGlobalVariable as part of reversing the DIGlobalVariable->GlobalVariable edge.</div><div><br></div><div>Thanks,</div></div>-- <br><div class="gmail_signature"><div dir="ltr">-- <div>Peter</div></div></div>
</div></div>