[llvm-dev] Beginning developer questions

Madhur Amilkanthwar via llvm-dev llvm-dev at lists.llvm.org
Tue Jan 12 09:46:59 PST 2021


Hi Stefanos,
Speaking of CLion, their page
<https://www.jetbrains.com/community/opensource/#support> 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://opensource.org/docs/osd> 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 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
>>>> 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
>>>
>>>
>>>>
>>>> 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
>>>>>
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> llvm-dev at lists.llvm.org
>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>
>>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>


-- 
*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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210112/f5e8ae96/attachment.html>


More information about the llvm-dev mailing list