[clangd-dev] Using clangd to retrieve backend optimization remarks
Jan Korous via clangd-dev
clangd-dev at lists.llvm.org
Wed Sep 19 08:43:35 PDT 2018
+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 <mailto: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 <mailto:clangd-dev at lists.llvm.org>
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/clangd-dev <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/20180919/30e23d52/attachment.html>
More information about the clangd-dev
mailing list