[cfe-dev] [llvm-dev] [SemaCXX] Should we fix test failing due to reverse iteration?

Vedant Kumar via cfe-dev cfe-dev at lists.llvm.org
Thu Jun 1 15:49:28 PDT 2017


> On Jun 1, 2017, at 1:49 PM, Craig Topper via cfe-dev <cfe-dev at lists.llvm.org> wrote:
> 
> Adding cfe-dev
> 
> ~Craig
> 
> On Thu, Jun 1, 2017 at 1:46 PM, Grang, Mandeep Singh via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
> I see that the following test fails if reverse iteration of SmallPtrSet is enabled:
> 
> clang/test/SemaCXX/warn-loop-analysis.cpp
> 
I think I saw a bot complaining about this. Could you back out the change until these failures can be addressed? (Apologies if you already have.)

> This is because in SemaStmt.cpp we iterate SmallPtrSet and output warnings about the variables not used in the loop.
> Expected output: warning: variables 'i', 'j', and 'k' used in loop condition not modified
> 
> Output with reverse iteration: warning: variables 'k', 'j', and 'i' used in loop condition not
> 
> 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?
> 
Yes, I think so. Running the compiler twice should produce identical diagnostics.

> If yes, then we have 2 alternatives:
> 
> 1. Change SmallPtrSet to SmallVector for the container (VarDecls) being iterated - this may have a compile time impact (need to measure).
> 
> 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?
> 
CheckForLoopConditionalStatement is hot, relative to the code that actually emits the diagnostic [1]. So I'd prefer the second option.

[1] http://lab.llvm.org:8080/coverage/coverage-reports/clang/coverage/Users/buildslave/jenkins/sharedspace/clang-stage2-coverage-R@2/llvm/tools/clang/lib/Sema/SemaStmt.cpp.html#L1454 <http://lab.llvm.org:8080/coverage/coverage-reports/clang/coverage/Users/buildslave/jenkins/sharedspace/clang-stage2-coverage-R@2/llvm/tools/clang/lib/Sema/SemaStmt.cpp.html#L1454>

vedant
> Thanks,
> 
> Mandeep
> 
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>
> 
> 
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170601/33410569/attachment.html>


More information about the cfe-dev mailing list