[PATCH] D91351: [tooling] Implement determinsitic ordering of CompilationDatabasePlugins
Nathan Ridge via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 12 18:45:06 PST 2020
nridge accepted this revision.
nridge added a comment.
This revision is now accepted and ready to land.
Not sure if I'm authorized to approve changes to libTooling, but this LGTM!
================
Comment at: clang/lib/Tooling/CompilationDatabase.cpp:73
CompilationDatabasePluginRegistry::entries()) {
+ Plugins.emplace_back(Database.getName(), Database.instantiate());
+ }
----------------
njames93 wrote:
> nridge wrote:
> > A side effect of this change is that every plugin will get instantiated, not just the ones for which we attempt a load.
> >
> > Perhaps we should store a pointer to the entry in the vector here, and instantiate() in the second loop below?
> The original setup was to instantiate every plugin until we find one that is able to load from the directory.
> As for your proposed solution, that wouldn't work as we can't get the priority without instantiating the plugin.
> The current registry system also doesn't lend itself nicely.
> I'm not too familiar, but it could be possible to specialise `SimpleRegistryEntry` for `CompilationDatabasePlugin`.
> that wouldn't work as we can't get the priority without instantiating the plugin
Right, of course, I overlooked that.
Anyways, it looks like instantiating the plugin just calls its constructor and the constructors of both existing plugins are no-ops, so it shouldn't be a concern.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D91351/new/
https://reviews.llvm.org/D91351
More information about the cfe-commits
mailing list