[llvm-dev] Beginning developer questions

David Blaikie via llvm-dev llvm-dev at lists.llvm.org
Thu Jan 14 10:08:10 PST 2021


gdb startup time can be reduced significantly by using a linker-generated
index. Compile with -ggnu-pubnames and link with -Wl,--gdb-index. I use
this configuration (plus Split DWARF, fwiw) and gdb startup time is only a
few seconds/quite usabel.

On Thu, Jan 14, 2021 at 9:58 AM Deep Majumder via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi all,
> As Stefanos had pointed out, GDB takes an awful lot of time to even start
> on a debug build of an executable (say clang). LLDB works better but still
> isn't quite smooth to work with (takes a long time to set breakpoints). So
> what do LLVM devs who use Linux use for debugging, or is Windows the
> predominant platform of development?
> Warm regards,
> Deep
>
> On Wed, Jan 13, 2021, 12:26 AM <paul.robinson at sony.com> wrote:
>
>> Re CLion:  The LLVM **Project** (presumably meaning the Foundation) does
>> not pay core developers.  It does pay for some infrastructure staff IIRC.
>>
>> However, the project is primarily funded by commercial companies (you
>> should be able to find documentation of the contributors on the Foundation
>> website), so I think on that count it would not qualify for the free CLion.
>>
>> --paulr
>>
>>
>>
>> *From:* llvm-dev <llvm-dev-bounces at lists.llvm.org> *On Behalf Of *Chris
>> Tetreault via llvm-dev
>> *Sent:* Tuesday, January 12, 2021 1:34 PM
>> *To:* Deep Majumder <deep.majumder2019 at gmail.com>; LLVM Dev <
>> llvm-dev at lists.llvm.org>
>> *Subject:* Re: [llvm-dev] Beginning developer questions
>>
>>
>>
>> I’ve had good luck using QTCreator for large C++ projects in the past.
>> Unlike CLion, QTCreator is actually free. It may be worth taking a look.
>>
>>
>>
>> *From:* llvm-dev <llvm-dev-bounces at lists.llvm.org> *On Behalf Of *Deep
>> Majumder via llvm-dev
>> *Sent:* Tuesday, January 12, 2021 9:52 AM
>> *To:* Madhur Amilkanthwar <madhur13490 at gmail.com>
>> *Cc:* llvm-dev <llvm-dev at lists.llvm.org>
>> *Subject:* [EXT] Re: [llvm-dev] Beginning developer questions
>>
>>
>>
>> Hi Stefanos and Madhur,
>>
>> Of course it would be great if LLVM is given licenses by JetBrains as it
>> would benefit many people(I guess) working on this project who are not
>> students.
>>
>> I am a student and so have a free license anyway.
>>
>> Also, thank you David for the link.
>>
>> Warm Regards,
>>
>> Deep
>>
>>
>>
>> On Tue, Jan 12, 2021 at 11:17 PM Madhur Amilkanthwar <
>> madhur13490 at gmail.com> wrote:
>>
>> Hi Stefanos,
>>
>> Speaking of CLion, their page
>> <https://urldefense.com/v3/__https:/www.jetbrains.com/community/opensource/*support__;Iw!!JmoZiZGBv3RvKRSx!o9fgR9CoQWXxAdRU22r4DY-KSrkbTejsaB5XNz8OYsjXy2OMnwiMJJnRAMhI8ZF95g$>
>> says open source projects can qualify for free licenses. I am not sure if
>> LLVM community qualifies as per the below required qualifications:
>>
>>
>>
>> *Do not pay their core project developers. *
>>
>>    - *Meet the Open Source
>>    <https://urldefense.com/v3/__https:/opensource.org/docs/osd__;!!JmoZiZGBv3RvKRSx!o9fgR9CoQWXxAdRU22r4DY-KSrkbTejsaB5XNz8OYsjXy2OMnwiMJJnRAMjLa7muLA$>
>>    definition.*
>>    -
>>    - *Are in active development, i.e. new code commits are submitted
>>    regularly within the past 3 months.*
>>    -
>>    - *Do not provide paid versions of open source software or any
>>    commercial services around the Open Source project (e.g. paid support,
>>    consulting, etc).*
>>    -
>>    - *Are not funded by commercial companies or organizations (NGO,
>>    educational, research, or governmental).*
>>    -
>>    -
>>
>>
>>
>> On Tue, Jan 12, 2021 at 10:31 PM David Blaikie via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>>
>>
>> On Tue, Jan 12, 2021 at 7:35 AM Deep Majumder via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>> Thanks everyone for the advice! I am able to build LLVM now without
>> causing my laptop to thrash. Also as I understand that for auto-complete in
>> LLVM, Linux is not the best place to be. Also, thanks for the
>> Doxygen-generated docs link.
>>
>> Warm regards,
>>
>>
>> If you're more vim/emacs than IDE - I use
>> https://wiki.archlinux.org/index.php/Vim/YouCompleteMe
>> <https://urldefense.com/v3/__https:/wiki.archlinux.org/index.php/Vim/YouCompleteMe__;!!JmoZiZGBv3RvKRSx!o9fgR9CoQWXxAdRU22r4DY-KSrkbTejsaB5XNz8OYsjXy2OMnwiMJJnRAMjo76Zb5w$>
>> and compile_commands.json generated from the ninja build I think (maybe
>> it's generated by cmake? I forget)
>>
>>
>> Deep
>>
>>
>>
>> On Tue, Jan 12, 2021 at 10:03 AM Craig Topper <craig.topper at gmail.com>
>> wrote:
>>
>>
>>
>> On Mon, Jan 11, 2021 at 8:07 PM Stefanos Baziotis via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>> Hi Deep,
>>
>> 1) Kind of. There's Doxygen generated from source automatically, which
>> shows you many things e.g., members of a type along with some short
>> documentation (which is taken from the code). It also shows you the
>> inheritance tree related to this type
>>
>> Here's an example: https://llvm.org/doxygen/classllvm_1_1LoopInfo.html
>> <https://urldefense.com/v3/__https:/llvm.org/doxygen/classllvm_1_1LoopInfo.html__;!!JmoZiZGBv3RvKRSx!o9fgR9CoQWXxAdRU22r4DY-KSrkbTejsaB5XNz8OYsjXy2OMnwiMJJnRAMhTJF2iRQ$>
>>
>> It doesn't really matter what this is for now, but you can see e.g., that
>> LoopInfo inherits from LoopInfoBase. If you scroll down, you can click to
>> different members and go to a more detailed description further down. You
>> can open the dropdown menus (e.g., public
>>
>> functions inherited). And finally, at the top, you can see the file it
>> appears at. In general, I think that if you start clicking stuff, it's
>> going to make sense, it's relatively intuitive.
>>
>>
>>
>> 2) Try minimizing the number of parallel threads used. I think by default
>> Ninja uses all the available threads which in most machines will fill up
>> the RAM. To limit them, use the -j argument like this: ninja -j8
>>
>> Another thing that will probably be useful in general is that you can
>> choose to build specific sub-projects instead of building the whole thing,
>> like this: ninja -j8 opt
>>
>>
>>
>> You can also use -DLLVM_PARALLEL_LINK_JOBS=<number> on your cmake
>> command to limit just the number of linking jobs that can run in parallel.
>> -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON can be a useful
>> build configuration that you gets you debug logging and assertions, but you
>> won't have debug symbols for gdb. There's also -DLLVM_USE_SPLIT_DWARF. All
>> of these options are covered here
>> https://llvm.org/docs/GettingStarted.html#common-problems
>> <https://urldefense.com/v3/__https:/llvm.org/docs/GettingStarted.html*common-problems__;Iw!!JmoZiZGBv3RvKRSx!o9fgR9CoQWXxAdRU22r4DY-KSrkbTejsaB5XNz8OYsjXy2OMnwiMJJnRAMilZ2oAYA$>
>>
>>
>>
>>
>>
>> 3) Ok, first of all, if you only care about editing and not debugging
>> LLVM (i.e. launching it with a debugger like gdb), then editors like Vim,
>> Emacs, 4coder, maybe Sublime Text should do the job. I think most people
>>
>> developing LLVM on Linux use something like this.
>>
>>
>>
>> Now, if you're interested in IDEs and / or debuggers, well, the news in
>> Linux is bad IMHO. For example, in my machine, GDB takes _30 seconds_ to
>> launch the debug build of opt.
>>
>> So, I couldn't use any IDE because virtually all use GDB under the hood.
>> Personally, I switched to Windows + Visual Studio just for this reason.
>> That was an insane productivity boost for me.
>>
>> But if you need something that works in Linux, you can maybe try LLDB.
>> Hopefully it will be faster. If yes, you can maybe try hooking it in an
>> IDE, which I guess won't be trivial.
>>
>>
>>
>> That said, as I don't develop LLVM in Linux, other people might have
>> better suggestions.
>>
>>
>>
>> Best,
>>
>> Stefanos
>>
>>
>>
>> Στις Τρί, 12 Ιαν 2021 στις 5:43 π.μ., ο/η Deep Majumder via llvm-dev <
>> llvm-dev at lists.llvm.org> έγραψε:
>>
>> Hello everyone,
>>
>> I have been studying the LLVM IR and now want to get into LLVM
>> development. I have a few questions regarding that and I would be really
>> grateful to get answers for:
>>
>>
>>
>> 1) The LangRef is an excellent guide/reference to the IR. Is there
>> something similar for the codebase (the core llvm to be specific)? Or do I
>> have to generate that from the source, in which case how do I do that?
>>
>> 2) I tried building just the llvm sub-project, and that is filling up my
>> RAM completely during the linking stages, and sends my laptop thrashing. I
>> am using Ninja. Is there a way to mitigate this? (I am on Ubuntu 20.04
>> Linux, 8 GM RAM, 8 GM swap on an HDD).
>>
>> 3) VSCode, at least on my laptop, is very sluggish with such large a
>> project. Is there any recommended development environment for Linux (or at
>> least something that has been found to work well)?
>>
>>
>>
>> Thank you for your time!
>>
>> Regards,
>>
>> Deep
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>> <https://urldefense.com/v3/__https:/lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev__;!!JmoZiZGBv3RvKRSx!o9fgR9CoQWXxAdRU22r4DY-KSrkbTejsaB5XNz8OYsjXy2OMnwiMJJnRAMhi-uWRBA$>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>> <https://urldefense.com/v3/__https:/lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev__;!!JmoZiZGBv3RvKRSx!o9fgR9CoQWXxAdRU22r4DY-KSrkbTejsaB5XNz8OYsjXy2OMnwiMJJnRAMhi-uWRBA$>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>> <https://urldefense.com/v3/__https:/lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev__;!!JmoZiZGBv3RvKRSx!o9fgR9CoQWXxAdRU22r4DY-KSrkbTejsaB5XNz8OYsjXy2OMnwiMJJnRAMhi-uWRBA$>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>> <https://urldefense.com/v3/__https:/lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev__;!!JmoZiZGBv3RvKRSx!o9fgR9CoQWXxAdRU22r4DY-KSrkbTejsaB5XNz8OYsjXy2OMnwiMJJnRAMhi-uWRBA$>
>>
>>
>>
>> --
>>
>> *Disclaimer: Views, concerns, thoughts, questions, ideas expressed in
>> this mail are of my own and my employer has no take in it. *
>>
>> Thank You.
>> Madhur D. Amilkanthwar
>>
>> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210114/d62b06ac/attachment.html>


More information about the llvm-dev mailing list