[clangd-dev] Using clangd to retrieve backend optimization remarks

Laurin Brandner via clangd-dev clangd-dev at lists.llvm.org
Thu Sep 20 02:16:04 PDT 2018


Hi Jan,

Essentially, I want to create a vs code extension that annotates the code to display various optimization remarks. So for example, I would like to highlight a loop which clang wasn’t able to vectorize. Thus, I’m now trying to make clangd invoke the backend as well.

Could you maybe share some hints that I can look into to make this work? Thank you very much in any case :)

Cheers,
Laurin
On 19 Sep 2018, 17:43 +0200, Jan Korous <jkorous at apple.com>, wrote:
> +backend guys
>
> Hi Laurin,
>
> Would you mind sharing more details about your project? What is your goal here?
>
> Cheers,
>
> Jan
>
> > On 18 Sep 2018, at 15:13, Laurin Brandner via clangd-dev <clangd-dev at lists.llvm.org> wrote:
> >
> > Hi Sam,
> >
> > Thank you very much for your help. I will prototype this and see where it goes :)
> >
> > Cheers,
> > Laurin
> > On 17 Sep 2018, 16:43 +0200, Sam McCall <sammccall at google.com>, wrote:
> > > Hi Laurin,
> > >
> > > I'm not really familiar with clang/LLVM backends, but here's a guess.
> > >
> > > The simplest idea is to change the existing code that parses the file and generates diagnostics.
> > > At least to prototype, I think you might want to change clangd::ClangdFrontendAction (in ClangdUnit.cpp) to subclass clang::EmitCodeGenOnlyAction (or one of the other CodeGenActions) instead of clang::SyntaxOnlyAction. And then add the relevant flags.
> > >
> > > However I'm not sure that's going to work well:
> > >  - with the backend enabled, everything is going to get a lot slower
> > >  - we have optimizations (like not parsing function bodies in the preamble) that probably aren't compatible with codegen
> > >  - doing codegen is probably going to force clang to deserialize all of the preamble, which is also slow
> > >  - obviously it means linking in the backend, which is quite a big thing for a release build if this is a niche feature
> > >
> > > For performance, I'm not sure how feasible it is to run codegen for code directly referenced by the main file only (again, not a backend person!), this would be the analogue to how we keep frontend diagnostics fast.
> > >
> > > We have a vague wish to support some more-expensive diagnostics (template expansions, clang-tidy analysis) that can't be computed every loop, but haven't come up with a good design yet.
> > >
> > > Cheers, Sam
> > >
> > > > On Mon, Sep 17, 2018 at 2:24 PM Laurin Brandner via clangd-dev <clangd-dev at lists.llvm.org> wrote:
> > > > > Hi,
> > > > >
> > > > > I’m fairly new to this community so I hope I’m not asking a very trivial question.
> > > > > Anyways, I’m looking into the possibility of returning optimization remarks like the option -Rpass=loop-vectorize would do. By looking at clangd’s source code I realized that clangd only preprocesses the project but does not really invoke the backend.
> > > > > Thus, I would like to implement an action that enables the output of optimization remarks. Could I maybe get some guidance on to what I need to do to achieve this? I saw that I most likely need to subclass Action but I’m not quite sure what subclass I should have a closer look at.
> > > > >
> > > > > Thanks a lot for any kind of help.
> > > > >
> > > > > Cheers,
> > > > > Laurin
> > > > > _______________________________________________
> > > > > clangd-dev mailing list
> > > > > clangd-dev at lists.llvm.org
> > > > > http://lists.llvm.org/cgi-bin/mailman/listinfo/clangd-dev
> > _______________________________________________
> > clangd-dev mailing list
> > clangd-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/clangd-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/clangd-dev/attachments/20180920/91d56db8/attachment.html>


More information about the clangd-dev mailing list