<div class="gmail_extra"><div class="gmail_quote">On Sun, Sep 9, 2012 at 1:35 PM, Ted Kremenek <span dir="ltr"><<a href="mailto:kremenek@apple.com" target="_blank" class="cremed">kremenek@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div class="h5"><div><div>On Sep 8, 2012, at 12:45 AM, Chandler Carruth <<a href="mailto:chandlerc@google.com" target="_blank" class="cremed">chandlerc@google.com</a>> wrote:</div>
<br><blockquote type="cite"><div class="gmail_extra"><div class="gmail_quote">On Fri, Sep 7, 2012 at 9:26 PM, Ted Kremenek <span dir="ltr"><<a href="mailto:kremenek@apple.com" target="_blank" class="cremed">kremenek@apple.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: kremenek<br>
Date: Fri Sep  7 23:26:37 2012<br>
New Revision: 163455<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=163455&view=rev" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project?rev=163455&view=rev</a><br>
Log:<br>
Attempt (again) to stabilize the order of the emission of diagnostics<br>
of the analyzer by using the FullProfile() of a PathDiagnostic<br>
for ordering them.<br></blockquote><div><br></div><div>I don't think this is the right strategy to get stable order of output. The profile and FoldingSetNodeIDs are fundamentally hash based and thus not suitable for ordering. It also seems to have pointers going into the hash, making it immediately unstable on systems with ASLR.</div>

<div><br></div><div>I think you'll need something much more akin to the SetVector abstraction that tracks insertion order to get the determinism needed here.</div></div></div>
</blockquote></div><br></div></div><div>Hi Chandler,</div><div><br></div><div>I don't believe that using FoldingSetNodeIDs is inherently the issue; the FoldingSetNodeIDs are just a collection of bits before they get hashed (which wasn't what I was doing).</div>
</div></blockquote><div><br></div><div>Historically one or two places that use FoldingSet in LLVM actually have a pre-hashed summary of their datastructure and they would just add that integre into the profile. Nothing about the interface of the folding set precluded this type of tree-style hashing being used to compose the key. I don't know of any in Clang, but it seems like a big new constraint on the interface.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>  Using the pointer address, however, is a big issue.  Thanks for pointing this out.  I will also take a look at SetVector.</div>
</div></blockquote><div><br></div><div>Yea, the pointers are a huge problem, and Clang pervasively uses pointers in folding sets.</div></div></div>