kadircet wrote:

hi! we're seeing much higher (>100x) indexing times on certain code patterns 
after this change.

```cpp
template <typename T>
static void _CustomWrapCode(T& _class) {
  _class.def0.def0.def0.def0.staticmethod.def.def.def()
      .def()
      .def()
      .staticmethod()
      .def()
      .staticmethod()
      .def()
      .staticmethod()
      .def()
      .staticmethod()
      .def()
      .staticmethod()
      .def()
      .staticmethod()
      .def()
      .staticmethod()
      .def()
      .staticmethod()
      .def()
      .staticmethod()
      .def()
      .staticmethod()
      .def0.staticmethod0.def0.def0.def0.def0.def0.def0;
}
```

as a reproducer, before this change:
```
$ time ./bin/clangd --check=/tmp/my_ver.cc -check-locations=0`:
...
real    0m0.050s
user    0m0.034s
sys     0m0.017s
```

after this change:
```
$ time ./bin/clangd --check=/tmp/my_ver.cc -check-locations=0
...
real    0m32.580s
user    0m31.744s
sys     0m0.832s
```

with big slowdowns near indexing && semantic token generation.

I am seeing long call stacks that repeat:
```
clang::(anonymous 
namespace)::HeuristicResolverImpl::resolveDependentMember(clang::QualType, 
clang::DeclarationName, llvm::function_ref<bool (clang::NamedDecl const*)>) 
(.llvm.7950477370274967279)
clang::(anonymous 
namespace)::HeuristicResolverImpl::resolveExprToDecls(clang::Expr const*)
clang::(anonymous 
namespace)::HeuristicResolverImpl::resolveExprToType(clang::Expr const*) 
clang::(anonymous 
namespace)::HeuristicResolverImpl::resolveExprToDecls(clang::Expr const*)
clang::(anonymous 
namespace)::HeuristicResolverImpl::resolveExprToType(clang::Expr const*) 
clang::(anonymous 
namespace)::HeuristicResolverImpl::resolveExprToDecls(clang::Expr const*)
clang::(anonymous 
namespace)::HeuristicResolverImpl::resolveExprToDecls(clang::Expr const*)
....
```

https://github.com/llvm/llvm-project/pull/156282
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to