danlark added a comment.

In D155809#4550646 <https://reviews.llvm.org/D155809#4550646>, @aaron.ballman 
wrote:

> In D155809#4527890 <https://reviews.llvm.org/D155809#4527890>, @danlark wrote:
>
>> In D155809#4527847 <https://reviews.llvm.org/D155809#4527847>, 
>> @aaron.ballman wrote:
>>
>>> In D155809#4527199 <https://reviews.llvm.org/D155809#4527199>, @danlark 
>>> wrote:
>>>
>>>> In D155809#4521494 <https://reviews.llvm.org/D155809#4521494>, @rsmith 
>>>> wrote:
>>>>
>>>>> This looks correct to me, but it's still a little subtle. Perhaps it'd be 
>>>>> clearer to map the method to an integer (0 for copy assignment, 1 for 
>>>>> move assignment, 2 for destructor, 3 for equality comparison), and then 
>>>>> order them by that integer? That'd be more obviously a strict weak order.
>>>>
>>>>
>>>>
>>>> In D155809#4520765 <https://reviews.llvm.org/D155809#4520765>, @shafik 
>>>> wrote:
>>>>
>>>>> I am not sure about this change but I think we at least need a test and 
>>>>> this does not seem non-functional if it prevents a crash.
>>>>
>>>> This is NFC as it only prevents further assert to fire when stable_sort 
>>>> compares the element with itself
>>>
>>> Richard's suggestion makes sense to me as a clarifying change to the code. 
>>> I also agree with Shafik -- if this prevents an assertion from firing in 
>>> practice, then it's a functional change that should come with tests. Or are 
>>> you saying the assertion isn't happening in practice and this is a 
>>> defensive change?
>>
>> The assertion happens in debug libcxx mode after 
>> https://reviews.llvm.org/D150264.  This is a defensive change, in practice, 
>> 2 same functions cannot happen in this comparator, this is only for 
>> preventing assertions on line 1568 
>> <https://github.com/llvm/llvm-project/blob/2773098ee3187d5f9daca8938d57657dd89dd36f/clang/lib/AST/VTableBuilder.cpp#L1569>
>
> I apologize, but I'm still confused. If this assertion triggers in practice 
> in debug modes with libc++, we should be able to make a stand-alone 
> reproducer that we test as part of these changes within Clang.

This assertion triggers in debug mode for various tests but clang is not tested 
against libc++ debug mode for now. In non debug mode the assertion is 
impossible to reach because in practice comp(a, a) is not called for all 
implementations of sorting in all major standard libraries


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D155809/new/

https://reviews.llvm.org/D155809

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to