[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