[PATCH] D123685: [clang][ASTImporter] Add isNewDecl

Gábor Horváth via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri May 6 11:54:45 PDT 2022


xazax.hun accepted this revision.
xazax.hun added a comment.
This revision is now accepted and ready to land.

Thanks, this looks good to me!



================
Comment at: clang/include/clang/AST/ASTImporterSharedState.h:43
+  /// Set of the newly created declarations.
+  llvm::DenseSet<Decl *> NewDecls;
+
----------------
martong wrote:
> xazax.hun wrote:
> > ASTImporter already has something like `ImportedFromDecls`. Is that not sufficient to check if a declaration is new?
> > 
> > Is it possible that we may want the "degree" of the imported definition? I.e., how many hops did we do to import it (is it imported as a result of evaluating an imported call?).
> What we need here is a list of those declarations that have been **created** and linked into the destination TU by the ASTImporter.
> 
> `ImportedFromDecls` is a mapping of declarations from the "source" context to the "destination" context. It might happen that we do not create a new declaration during the import, however, the mapping is still updated, so next time we can just simply get that from there (it's a cache).
> 
> E.g. during the import of `foo` from `b.cpp` to `a.cpp` we are going to import `X` as well. But during the import of `X` we find the existing definition and then we just simply update the mapping to that. This happens all the time when we include the same header to two different translation units.
> ```
> // a.cpp
> struct X {};
> // b.cpp
> struct X {};
> void foo(X);
> ```
> 
> > Is it possible that we may want the "degree" of the imported definition? I.e., how many hops did we do to import it
> I am not sure how that would be useful, I mean how and for what could we use that information?
> I am not sure how that would be useful, I mean how and for what could we use that information?

It could be part of the heuristics whether we want something inlined during the analysis, but we might not need this information at all. 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D123685



More information about the cfe-commits mailing list