<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Oct 14, 2013 at 1:08 PM, Manman Ren <span dir="ltr"><<a href="mailto:manman.ren@gmail.com" target="_blank">manman.ren@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote"><div><div class="h5">On Fri, Oct 11, 2013 at 12:40 PM, Eric Christopher <span dir="ltr"><<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>>> It depends upon the goals. If the goal is to make debug information<br>
>> post-link smaller then just using the type hashing machinery for<br>
>> structs will be sufficient.<br>
><br>
><br>
> By "the type hashing machinery for structs", are you referring to the type<br>
> hashing at the back end?<br>
><br>
<br>
</div>I am, yes, since there's no other place we do currently.<br>
<div><br>
>><br>
>> However, if it's to save space during an<br>
>> LTO link then we'll want to do it in the front end.<br>
><br>
><br>
> Yes, my purpose here is to save memory space in number of MDNodes (also # of<br>
> DIEs) generated in a LTO build.<br>
> Type hashing at the DIE level can reduce the dwarf size.<br>
><br>
<br>
</div>I agree with both of these statements.<br>
<br>
I also agree with the desire to help LTO memory consumption so we'll<br>
need something from the front end for this since we'd like to continue<br>
to use the folding set to do the uniquing.<br></blockquote><div><br></div></div></div><div>Hi Eric,</div><div><br></div><div>Assume that we need to do type hashing (i.e. assume Doug's rules for merging C types do not apply),</div>
</div></div></div></blockquote><div><br></div><div>Now the assumption is true, any opinion on where to do the hashing?</div><div><br></div><div>Thanks,</div><div>Manman</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> would you like it to be done on AST types or IR debug info metadata types?</div><div><br></div><div>One possibility is to hash the IR debug info types in DIBuilder::finalize.</div>
<div>When we are creating the MD nodes, we can provide a simple identifier that is unique within the DIBuider. In finailize(),</div>
<div>we update the identifier to include a hash value (prepend the type name), so types constructed by one DIBuilder will be unique</div><div>from types constructed by another DIBUilder unless they are structurally equivalent by having the same hash.</div>

<div><br></div><div>We can then use the folding set to do the uniquing across CUs.</div><div><br></div><div>Thanks,</div><div>Manman <br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<span><font color="#888888"><br>
-eric<br>
</font></span></blockquote></div><br></div></div>
</blockquote></div><br></div></div>