[PATCH] D123032: [clang][dataflow] Exclude protobuf types from modeling in the environment.
Yitzhak Mandelbaum via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 5 05:57:04 PDT 2022
ymandel marked an inline comment as done.
ymandel added inline comments.
Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:513
+ const RecordDecl *RD = BaseTy->getDecl();
+ if (RD->getIdentifier() == nullptr || RD->getName() != "Message")
+ return false;
> Not sure how often is this invoked but we could reduce the number of string comparisons by caching the identifier ptr and do a pointer comparison.
Good question. It means an extra comparison for each type until the pointer is cached (to check if the cache is set) and then, afterwards, 2 comparisons vs ~10 for the common case where the class name is doesn't match. In the matching case, though, it is clearly saving much more.
For proto-heavy code, it seems a win, and a loss otherwise. But, the question is where to put the cache. It seems to me best to move this to be a method on DataflowAnalysisContext (since it is a global, not local env, property) and make the cached pointer a private member of DAC.
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
More information about the cfe-commits