iains added a comment.

In D124287#3479484 <https://reviews.llvm.org/D124287#3479484>, @jansvoboda11 
wrote:

> In D124287#3476040 <https://reviews.llvm.org/D124287#3476040>, @vsapsai wrote:
>
>> In D124287#3474369 <https://reviews.llvm.org/D124287#3474369>, @jansvoboda11 
>> wrote:
>>
>>> This sounds reasonable to me. What use-cases does 
>>> `ASTStructuralEquivalence` fit better than ODR hashes?
>>
>> I think the biggest advantage of `ASTStructuralEquivalence` is that it 
>> doesn't affect memory consumption by Decls. But it makes repeated 
>> comparisons more expensive.
>>
>> Another `ASTStructuralEquivalence` advantage is that it's easier to add new 
>> checks. For example, comparing ivars is pretty trivial with 
>> `ASTStructuralEquivalence` but with ODR hash we need to handle that ivar 
>> types can be structs/unions, including anonymous and nested structs.



>> Cannot say that for sure but I think `ASTStructuralEquivalence` is easier to 
>> extend and to adopt for different purposes, while ODR hash seems to be more 
>> invasive. But this argument is more hand-wavy.
>>
>> Most likely `ASTStructuralEquivalence` has other positive qualities but 
>> that's what I was able to come up off the top of my head. And you can see 
>> that in my decision-making `ASTStructuralEquivalence` doesn't look like a 
>> compelling option.
>
> Makes sense. If most `Decl` classes had the member variables that enable ODR 
> hashing, would it make sense to keep structural equivalence logic around? 
> That sounds a bit redundant to me.

Presumably `ASTStructuralEquivalence` can also be used as a tie-breaker in the 
case of a hash collision?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D124287

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

Reply via email to