[clang] [Fix] Speedup -Wunsafe-buffer-usage when using clang modules. (PR #127161)
Takuto Ikuta via cfe-commits
cfe-commits at lists.llvm.org
Sun Feb 16 20:56:03 PST 2025
================
@@ -2546,14 +2546,27 @@ static void flushDiagnostics(Sema &S, const sema::FunctionScopeInfo *fscope) {
class CallableVisitor : public DynamicRecursiveASTVisitor {
private:
llvm::function_ref<void(const Decl *)> Callback;
+ const Module *const TUModule;
public:
- CallableVisitor(llvm::function_ref<void(const Decl *)> Callback)
- : Callback(Callback) {
+ CallableVisitor(llvm::function_ref<void(const Decl *)> Callback,
+ const Module *const TUModule)
+ : Callback(Callback), TUModule(TUModule) {
ShouldVisitTemplateInstantiations = true;
ShouldVisitImplicitCode = false;
}
+ bool TraverseDecl(Decl *Node) override {
+ // For performance reasons, only validate the current translation unit's
+ // module, and not modules it depends on.
+ // See https://issues.chromium.org/issues/351909443 for details.
+ if (Node && Node->getOwningModule() == TUModule) {
+ return DynamicRecursiveASTVisitor::TraverseDecl(Node);
+ } else {
----------------
atetubou wrote:
nit: you can remove this else to reduce the nest.
```suggestion
}
```
ref: https://testing.googleblog.com/2017/06/code-health-reduce-nesting-reduce.html
https://github.com/llvm/llvm-project/pull/127161
More information about the cfe-commits
mailing list