<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 1 June 2017 at 13:49, Craig Topper 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:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Adding cfe-dev</div><div class="gmail_extra"><br clear="all"><div><div class="gmail-m_8654720403283671599gmail_signature">~Craig</div></div>
<br><div class="gmail_quote"><div><div class="gmail-h5">On Thu, Jun 1, 2017 at 1:46 PM, Grang, Mandeep Singh 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></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><div class="gmail-h5">
  

    
  
  <div bgcolor="#FFFFFF">
    <p>I see that the following test fails if reverse iteration of
      SmallPtrSet is enabled:</p>
    <p><i>clang/test/SemaCXX/warn-loop-a<wbr>nalysis.cpp</i></p>
    <p>This is because in SemaStmt.cpp we iterate SmallPtrSet and output
      warnings about the variables not used in the loop.<br>
    </p>
    <p>Expected output: <i>warning: variables 'i', 'j', and 'k' used in
        loop condition not modified</i></p>
    <p>Output with reverse iteration: <i>warning: variables 'k', 'j',
        and 'i' used in loop condition not</i></p>
    <p>I would like the community's opinion on whether this is something
      worth fixing? In this case, should the output always be the same
      irrespective of the iteration order?<br></p></div></div></div></blockquote></div></div></blockquote><div>Yes. Clang is intended to be fully deterministic, and this covers our diagnostic output as well as the object code we produce.<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 class="gmail_extra"><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><div class="gmail-h5"><div bgcolor="#FFFFFF"><p>If yes, then we have 2 alternatives:</p>
    <p>1. Change SmallPtrSet to SmallVector for the container (VarDecls)
      being iterated - this may have a compile time impact (need to
      measure).</p>
    <p>2. Sort the container (VarDecls) before iteration. We can sort
      based on decl source location and decl name. Not sure if these
      guaranteed to be unique?</p></div></div></div></blockquote></div></div></blockquote><div>LLVM provides order-preserving containers for situations such as this. We should probably use an llvm::SmallSetVector here. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_extra"><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><div class="gmail-h5"><div bgcolor="#FFFFFF">
    <p>Thanks,</p>
    <p>Mandeep<br>
    </p>
  </div>

<br></div></div>______________________________<wbr>_________________<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="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div>
<br>______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div></div>