[clang] [Serialization] Load Specializations Lazily (PR #76774)

Chuanqi Xu via cfe-commits cfe-commits at lists.llvm.org
Sun Feb 18 02:28:34 PST 2024


ChuanqiXu9 wrote:

> > But my point is that we can't land that if we don't understand what's going wrong without that patch.
> 
> We understand that very well and it's described in https://reviews.llvm.org/D153003 as well as the surrounding discussions: because of the way that `ODRHash` works, template template arguments `A` and `B` will hash to different values, even if `using A = B`. 

Yeah, so I tried to fix that in the following patches. And if that works, I expect that can fix internal errors in your workloads.

> However, for template specializations, we require them to hash to the same value (with some form of normalization) or we won't find nor load the right specializations. That's why I said that IMHO `ODRHash` is not the right tool for the job here, which follows directly from an old comment of yours: https://reviews.llvm.org/D153003#4427412
> 
> > An important node here is that ODRHash is used to check the AST Nodes are keeping the same across compilations. There is gap to use ODRHash to check the semantical equality.
> 
> (and IIRC that's the same direction that Richard was going)



https://github.com/llvm/llvm-project/pull/76774


More information about the cfe-commits mailing list