mizvekov wrote: The change is correct. The problem is subtle though. It comes from the difference in behavior between the member and non-member Profile functions.
I think we could do better instead with a change which makes it harder to trip on this. I think a simplification like this should work (untested): ``` diff --git a/clang/include/clang/AST/Type.h b/clang/include/clang/AST/Type.h index ea425791fc97..3d411051084c 100644 --- a/clang/include/clang/AST/Type.h +++ b/clang/include/clang/AST/Type.h @@ -4729,13 +4729,12 @@ public: bool typeMatchesDecl() const { return !UsingBits.hasTypeDifferentFromDecl; } void Profile(llvm::FoldingSetNodeID &ID) { - Profile(ID, Found, typeMatchesDecl() ? QualType() : getUnderlyingType()); + Profile(ID, Found, getUnderlyingType()); } static void Profile(llvm::FoldingSetNodeID &ID, const UsingShadowDecl *Found, QualType Underlying) { ID.AddPointer(Found); - if (!Underlying.isNull()) - Underlying.Profile(ID); + Underlying.Profile(ID); } static bool classof(const Type *T) { return T->getTypeClass() == Using; } }; ``` https://github.com/llvm/llvm-project/pull/79182 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits