================
@@ -3610,7 +3611,7 @@ class MemberPointerType : public Type, public 
llvm::FoldingSetNode {
   }
 
   void Profile(llvm::FoldingSetNodeID &ID) {
-    Profile(ID, getPointeeType(), getQualifier(), 
getMostRecentCXXRecordDecl());
+    Profile(ID, getPointeeType(), getQualifier(), getCXXRecordDecl());
----------------
ilya-biryukov wrote:

> Hmm... then I'm surprised that this patch is needed at all for the purposes 
> of non-determinism

My theory is that non-determinism is caused by side-effects in the 
deserialization logic that runs behind `getMostRecentCXXRecordDecl()`. We 
probably just get unlucky with rehashing points at different times for the hash 
table (`FoldingSet`) that makes us either call or not call 
`getMostRecentCXXRecordDecl`.

It is not a new issue, just rare and now getting surfaced by the new place 
where `getMostRecentCXXRecordDecl` is called.

https://github.com/llvm/llvm-project/pull/137910
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to