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

Richard Smith via cfe-dev cfe-dev at lists.llvm.org
Thu Jun 1 15:50:50 PDT 2017


On 1 June 2017 at 13:49, Craig Topper via llvm-dev <llvm-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> wrote:
>
>> I see that the following test fails if reverse iteration of SmallPtrSet
>> is enabled:
>>
>> *clang/test/SemaCXX/warn-loop-analysis.cpp*
>>
>> 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. Clang is intended to be fully deterministic, and this covers our
diagnostic output as well as the object code we produce.

> 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?
>>
> LLVM provides order-preserving containers for situations such as this. We
should probably use an llvm::SmallSetVector here.

> Thanks,
>>
>> Mandeep
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170601/c473a14c/attachment.html>


More information about the cfe-dev mailing list