[clang] [RFC][clang] Handle friend function that was a definition but became only a declaration during AST deserialization (PR #132214)

Chuanqi Xu via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 28 02:47:47 PDT 2025


================
@@ -1390,7 +1390,19 @@ class ASTReader
   /// predefines buffer may contain additional definitions.
   std::string SuggestedPredefines;
 
-  llvm::DenseMap<const Decl *, bool> DefinitionSource;
+  struct DefinitionSourceFlags {
+    ExtKind HasExternalDefinitions : 2;
+
+    /// Indicates if given function declaration was a definition but its body
+    /// was removed due to declaration merging.
+    bool ThisDeclarationWasADefinition : 1;
+
+    DefinitionSourceFlags()
+        : HasExternalDefinitions(EK_ReplyHazy),
+          ThisDeclarationWasADefinition(false) {}
+  };
+
+  llvm::DenseMap<const Decl *, DefinitionSourceFlags> DefinitionSource;
----------------
ChuanqiXu9 wrote:

It might be better to add another new map for it. e.g., Decl is not a function.

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


More information about the cfe-commits mailing list