Adding Florent as well since Nick added him to the other thread. Thanks. > On Apr 18, 2023, at 11:03 PM, Joel Fernandes <joel@xxxxxxxxxxxxxxxxx> wrote: > > Hi Nick, > >> On Tue, Apr 18, 2023 at 01:46:40PM -0700, Nick Desaulniers wrote: >>> On Tue, Apr 18, 2023 at 1:36 PM Joel Fernandes <joel@xxxxxxxxxxxxxxxxx> wrote: >>> >>> On Fri, Apr 14, 2023 at 03:47:51PM -0700, Nick Desaulniers wrote: >>>> On Thu, Apr 13, 2023 at 5:53 PM Joel Fernandes <joel@xxxxxxxxxxxxxxxxx> wrote: >>>>> >>>>> Hello! >>>>> >>>>> I have been trying to get clangd working properly with tree_nocb.h. clangd >>>>> trips quite badly when trying to build tree_nocb.h to generate ASTs. >>>> >>>> Hi Joel, >>>> Thanks for the report. What are you using clangd for? I'll bet >>>> something interesting. >>> >>> Thanks for the response and sorry for the late reply. I am at the OSPM >>> conference. I use vim and vscode with clangd. In vim, YCM uses it to >>> highlight compiler errors live while editing, I am pretty happy with it so >>> far and has been a huge time saver. Enough that now I want to use it for >>> everything... >> >> Cool! I use vim, can you share more info about your set up for this? >> I'll have to try it. > > This is how I installed YCM: > > # Install YouCompleteMe for vim > # cd ~/.vim/bundle > # git clone https://github.com/Valloric/YouCompleteMe.git > # cd YouCompleteMe/ > # git submodule update --init --recursive > # python3 install.py --clang-completer > > Then install and run bear in the kernel sources to generate > compile_compands.json: > bear -- make -j99 CC=clang > > However, there's also the script: > scripts/clang-tools/gen_compile_commands.py > > This generates the .json from an existing build. Thank God because we can > probably make this generate better .json files which may make clangd better. > > You don't need YCM to reproduce the issue though if you just use vscode with > the clangd plugin. > >>> I first came across clangd when developing Chrome userspace code which is C++ >>> :). In Chrome, ninja builds can be made to output compile_commands.json. >>> However, now I noticed the support in the kernel and was like, wow I need to >>> try it. Further, YCM seems to work much better with it than without :) >>> >>>> I've never used it myself, so I don't know where to even begin with >>>> how to reproduce the issue. >>> >>> Ah ok. :). When I ran get_maintainer on the script, your name popped up and >>> someone also suggested that you're the goto person for clang on the kernel >>> (which I kind of already knew ;) >> >> You've cc'ed the right set of folks. We might not have the expertise >> related to clangd specifically, but we can point you in the right >> direction. > > Sure, thanks! And thanks for CC'ing the right folks. > >>>> It might be worth filing a bug upstream at >>>> https://github.com/llvm/llvm-project/issues >>>> or internally under the component >>>> Language Platforms > C++ > Clang > Tools > Clangd >>>> with detailed steps to reproduce (and what the observed error actually >>>> is). Feel free to cc me, though I don't know the first thing about >>>> clangd. >>> >>> Ok I will consider doing this if needed. One thing I do observe is lack of >>> good support for header files and it is a known clangd issue [1]. >>> >>> However, the fixes I was proposing can purely be done in the kernel itself >>> since all it'd require is generating compile_compands.json with the -D<macro> >>> and editing files to keep clangd happy. I guess one question is, how welcome >>> would such changes to header files be since they're for tooling and isn't >>> code that will be compiled outside of clangd. >> >> Specifically your patch sites some log print that doesn't look >> indicative of a failure: >> https://github.com/llvm/llvm-project/blob/53430bfd5c9d0074dd6de06dccea366e1d40bce4/clang-tools-extra/clangd/TUScheduler.cpp#L903-L906 >> so something else is going on here. Just trying to make sure we root cause this. >> > > Right, so clangd's log does not show failure, the failure is when it displays > in the code editor that your code has compiler errors when in fact it does > not. > > So if you open up tree_nocb.h in vscode, for example, you'll see squiggles > saying 'undefined reference to rcu_data', etc. That makes clangd stop working > at the error. Sorry to not make the failure mode clear earlier. > > thanks, > > - Joel >